Mainos / Advertisement:

Ero sivun ”MariaDB” versioiden välillä

Kohteesta Taisto
Siirry navigaatioon Siirry hakuun
 
(40 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 21: Rivi 21:
  
 
<pre>
 
<pre>
sudo add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/10.0/debian wheezy main'
+
add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/10.1/debian wheezy main'
 +
</pre>
 +
 
 +
Asennetaan MariaDB 10
 +
 
 +
<pre>
 +
apt-get update
 +
apt-get install mariadb-server
 +
</pre>
 +
 
 +
=== Debian 8 Jessie ===
 +
 
 +
Asennetaan software-properties-common paketti ja lisätään avain
 +
 
 +
<pre>
 +
apt-get install software-properties-common
 +
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
 +
</pre>
 +
 
 +
Lisätään repo:
 +
 
 +
<pre>
 +
add-apt-repository 'deb [arch=amd64,i386] http://mirror.netinch.com/pub/mariadb/repo/10.1/debian jessie main'
 +
</pre>
 +
 
 +
Asennetaan MariaDB 10
 +
 
 +
<pre>
 +
apt-get update
 +
apt-get install mariadb-server
 +
</pre>
 +
 
 +
=== Ubuntu 14.04 Trusty ===
 +
 
 +
Asennetaan python-software-properties ja lisätään avain.
 +
 
 +
<pre>
 +
sudo apt-get install python-software-properties
 +
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
 +
</pre>
 +
 
 +
 
 +
Asentaessa MariaDB 5 lisää repo:
 +
 
 +
<pre>
 +
sudo add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/5.5/ubuntu trusty main'
 +
</pre>
 +
 
 +
Asentaessa MariaDB 10 aja komento:
 +
 
 +
<pre>
 +
sudo add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/10.0/ubuntu trusty main'
 +
</pre>
 +
 
 +
Asenna MariaDB kun repot on lisätty:
 +
 
 +
<pre>
 +
sudo apt-get update
 +
sudo apt-get install mariadb-server
 +
</pre>
 +
 
 +
=== Ubuntu 16.04 ===
 +
 
 +
Lisää source.listiin MariaDB ja avain
 +
 
 +
<pre>
 +
sudo apt-get install software-properties-common
 +
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
 +
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.netinch.com/pub/mariadb/repo/10.2/ubuntu xenial main'
 +
</pre>
 +
 
 +
Päivitä repo listaus ja asenna mariadb
 +
 
 +
<pre>
 +
sudo apt update
 +
sudo apt install mariadb-server
 
</pre>
 
</pre>
  
Rivi 44: Rivi 119:
 
   sudo service mysql restart
 
   sudo service mysql restart
  
Asennetaan MariaDB kun repositoryt on lisätty
+
=== SSL/TLS käyttöön ===
 +
 
 +
Mikäli ottaa käyttöön etäyhteydet niin suositus on käyttää SSL/TLS salausta aina, niin yhteydet ovat salattuina.
 +
 
 +
Konfiguroi tämä my.conf tiedostoon /etc/mysql konfigurointihakemistoon.
  
 
<pre>
 
<pre>
sudo apt-get update
+
[mysqld]
sudo apt-get install mariadb-server
+
ssl-ca=/etc/mysql/ssl/ca-cert.pem
 +
ssl-cert=/etc/mysql/ssl/server-cert.pem
 +
ssl-key=/etc/mysql/ssl/server-key.pem
 
</pre>
 
</pre>
  
=== Ubuntu 14.04 Trusty ===
+
Varmista että asiakaslaitteet ottavat aina yhteyden SSL/TLS:n yli. Voit vaatia tämän myös käyttöoikeuksissa.
 +
 
 +
Voit mysql-clientillä yhdistää näin SSL:ää käyttäen
 +
 
 +
mysql -h 192.168.10.100 -u root -p -ssl
 +
 
 +
Tarkista 'status' komennolla että yhteys on salattu
 +
 
 +
MariaDB [(none)]> status;
 +
 
 +
Lisätietoa: https://www.cyberciti.biz/faq/how-to-setup-mariadb-ssl-and-secure-connections-from-clients/
 +
 
 +
== MariaDB Galera klusteri ==
 +
 
 +
Galera klusterin avulla saat tehtyä tietokantaklusterin. Tarvitset vähintään 3 palvelinta muodostaaksesi MariaDB-klusterin.
 +
 
 +
* Asenna valmiiksi uusin versio MariaDB 10.1:stä kaikkiin palvelimille. Kaikissa palvelimissa tulee olla SAMA versio MariaDB-server pak.
 +
* Asenna [[rsync]] kaikkiin palvelimiin
 +
* Määritä sama root salasana kaikkiin palvelimiin.
 +
* Varmista, että yhteydet palvelinten välillä toimii moitetta.
 +
 
 +
=== Node 1 ===
 +
 
 +
  sudo nano /etc/mysql/conf.d/galera.cnf
 +
 
 +
Konfiguroi tähän tiedot clusterista. Boldattuna on kohdat jotka sinun pitää muuttaa. Huomaa:
  
Asennetaan python-software-properties ja lisätään avain.
+
* wsrep_cluster_name pitää jokaisella palvelimella olla sama! Muuten tulee handshake virhettä.
 +
* wsrep_cluster_address kohdassa pitää olla kaikkien MariaDB palvelimien IP-osoite. Vähintään 3 palvelinta.
  
 
<pre>
 
<pre>
sudo apt-get install python-software-properties
+
[mysqld]
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
+
binlog_format=ROW
 +
default-storage-engine=innodb
 +
innodb_autoinc_lock_mode=2
 +
bind-address=0.0.0.0
 +
 
 +
# Galera Provider Configuration
 +
wsrep_on=ON
 +
wsrep_provider=/usr/lib/galera/libgalera_smm.so
 +
 
 +
# Galera Cluster Configuration
 +
wsrep_cluster_name="test_cluster"
 +
wsrep_cluster_address="gcomm://first_ip,second_ip,third_ip"
 +
 
 +
# Galera Synchronization Configuration
 +
wsrep_sst_method=rsync
 +
 
 +
# Galera Node Configuration
 +
wsrep_node_address="this_node_ip"
 +
wsrep_node_name="this_node_name"
 
</pre>
 
</pre>
  
  
Asentaessa MariaDB 5 lisää repo:
+
Tarkista klusterin tila
 +
 
 +
  mysql -u root -p -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';"
 +
 
 +
 
 +
=== Node 2 ja 3 jne... ===
 +
 
 +
Konfiguroi samalla tavalla kuten ensimmäinen node paitsi että muistathan muuttaa Galera Node Configuration kohtaa vastaamaan palvelimen asetuksia.
  
 
<pre>
 
<pre>
sudo add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/5.5/ubuntu trusty main'
+
# Galera Node Configuration
 +
wsrep_node_address="'''this_node_ip'''"
 +
wsrep_node_name="'''this_node_name'''"
 
</pre>
 
</pre>
  
Asentaessa MariaDB 10 aja komento:
+
Kopioi Debian/Ubuntu Node 2 ja 3:seen tietokanta käyttäjälle 'debian-sys-maint' salasana joka on Node 1:llä /etc/mysql/debian.cnf tiedostossa.
 +
 
 +
=== Käynnistä Node 1 ===
 +
 
 +
Varmista että kaikki nodet eivät ole päällä.
 +
 
 +
Käynnistäessä ensimmäistä Nodea, käytetään komentoa.
 +
 
 +
  sudo galera_new_cluster
 +
 
 +
Jos tämä onnistui, voit tarkistaa klusterin tilan
 +
 
 +
  mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
 +
 
 +
=== Käynnistä toinen ja kolmas node ===
 +
 
 +
Käynnistä muut nodet normaalisti
 +
 
 +
  sudo service mysql start
 +
 
 +
tai
 +
 
 +
  sudo systemctl start mysql
 +
 
 +
Tarkista klusterin tila
 +
 
 +
  mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"
 +
 
 +
Voit käyttää käynnistyskomentoa välttääksesi aikakatkaisun
 +
 
 +
  mysqld_safe
 +
 
 +
=== Optional ===
 +
 
 +
Ei pakollisia mutta hyödyllisiä
 +
 
 +
==== Ilmoitukset ====
 +
 
 +
Kannattaa lisätä kaikkiin nodeisiin niin saat ilmoituksia Galeran tilasta.
 +
 
 +
Kloonaa Git paketti Galeranotify
 +
 
 +
  cd /etc/mysql
 +
  sudo git clone https://github.com/gguillen/galeranotify.git
 +
 
 +
Muokkaa galeranotify.py tiedostoa ja määritä sinne sähköpostipalvelimesi asetukset
 +
 
 +
  sudo nano /etc/mysql/galeranotify/galeranotify.py
 +
 
 +
Tallenna ja määritä käyttöoikeudet
  
 
<pre>
 
<pre>
sudo add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/10.0/ubuntu trusty main'
+
sudo chown mysql /etc/mysql/galeranotify/galeranotify.py
 +
sudo chmod +x /etc/mysql/galeranotify/galeranotify.py
 
</pre>
 
</pre>
  
Asenna MariaDB kun repot on lisätty:
+
Lisää tämä galera.cnf konffin loppuun
 +
 
 +
  wsrep_notify_cmd = /etc/mysql/galeranotify/galeranotify.py
 +
 
 +
Tallenna ja käynnistä MariaDB uudelleen
 +
 
 +
==== Määritä mistä nodesta haetaan tiedot ====
 +
 
 +
Voit määrittää manuaalisesti järjestyksen mistä nodesta haetaan tiedot. Tämä on hyödyllistä kun kun nodet ovat kaukana toisistaan tai tietoliikenneyhteys on mahdollisesti heikko. Ilmoita nodet järjestyksessä "wsrep_node_name" nimellä jonka olet määrittänyt nodeille. Jos ei listan nodeen saa yhteyttä, se ottaa yhteyden sattumavaraiseen nodeen.
 +
 
 +
  wsrep_sst_donor="node1,node2,node3"
 +
 
 +
=== Debug ===
 +
 
 +
Yritän koota tänne yleisiä virheilmoituksia lokista mitä tulee eteeni ja joitakin mahdollisia ratkaisuj.
 +
 
 +
==== Käynnistysvirheet ====
 +
 
 +
<code>systemd[1]: mariadb.service: Start operation timed out. Terminating.</code>
 +
 
 +
Kokeile käynnistää verbose modessa manuaalisesti ensimmäisellä kerralla. '''On normaalia että ensimmäinen käynnistys pysähtyy aikakatkaisu-virheeseen sillä ensimmäisellä kerralla synkronoidaan tietokanta kokonaan ja tämä vie aikaa.'''
 +
 
 +
sudo -u mysql mysqld --verbose
 +
 
 +
Tai
 +
 
 +
sudo mysqld_safe
 +
 
 +
Tarkista ps komennolla mysql:n tila, /usr/sbin/mysqld --wsrep_start_position=XXXXXXXX jos näkyy tarkoittaa että synkronointia suoritetaan.
 +
 
 +
  ps aux | grep mysql
 +
 
 +
==== Yhteysvirheet ====
 +
 
 +
<code>[Warning] WSREP: 3.0 (db2): State transfer to 1.0 (db1) failed: -141 (Unknown error 141)</code>
 +
 
 +
<code>[ERROR] WSREP: gcs/src/gcs_group.cpp:gcs_group_handle_join_msg():736: Will never receive state. Need to abort.</code>
 +
 
 +
Luultavasti jonkinlainen yhteysvirhe node:jen välillä. Varmista että yhteys toimii nodesta toiseen normaalisti ja yhteysnopeus riittävä. Palomuurista tulee olla auki portit 3306, 4567, 4568, 4444.
 +
 
 +
=== Linkkejä ===
 +
 
 +
Asennukseen:
 +
 
 +
https://www.digitalocean.com/community/tutorials/how-to-configure-a-galera-cluster-with-mariadb-10-1-on-ubuntu-16-04-servers
 +
 
 +
Vianmääritykseen:
 +
 
 +
https://www.percona.com/blog/2014/09/01/galera-replication-how-to-recover-a-pxc-cluster/
 +
 
 +
https://www.percona.com/blog/2014/12/30/diagnosing-sst-errors-with-percona-xtradb-cluster-for-mysql/
 +
 
 +
http://galeracluster.com/2015/07/node-can-not-join-the-cluster-how-to-debug-issues-with-sst/
  
<pre>
+
[[Luokka:Linux|MariaDB]]
sudo apt-get update
 
sudo apt-get install mariadb-server
 
</pre>
 

Nykyinen versio 25. helmikuuta 2018 kello 12.40

MariaDB on mysql tavoin tietokantapalvelinohjelmisto.

Asennus

Debian 7 Wheezy

Asennetaan python-software-properties ja lisätään avain.

sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Asentaessa MariaDB 5 lisää repo:

add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/5.5/debian wheezy main'

Asentaessa MariaDB 10 lisä repo:

add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/10.1/debian wheezy main'

Asennetaan MariaDB 10

apt-get update
apt-get install mariadb-server

Debian 8 Jessie

Asennetaan software-properties-common paketti ja lisätään avain

apt-get install software-properties-common
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

Lisätään repo:

add-apt-repository 'deb [arch=amd64,i386] http://mirror.netinch.com/pub/mariadb/repo/10.1/debian jessie main'

Asennetaan MariaDB 10

apt-get update
apt-get install mariadb-server

Ubuntu 14.04 Trusty

Asennetaan python-software-properties ja lisätään avain.

sudo apt-get install python-software-properties
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db


Asentaessa MariaDB 5 lisää repo:

sudo add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/5.5/ubuntu trusty main'

Asentaessa MariaDB 10 aja komento:

sudo add-apt-repository 'deb http://mirror.netinch.com/pub/mariadb/repo/10.0/ubuntu trusty main'

Asenna MariaDB kun repot on lisätty:

sudo apt-get update
sudo apt-get install mariadb-server

Ubuntu 16.04

Lisää source.listiin MariaDB ja avain

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.netinch.com/pub/mariadb/repo/10.2/ubuntu xenial main'

Päivitä repo listaus ja asenna mariadb

sudo apt update
sudo apt install mariadb-server

Konfigurointi

Salli etäyhteydet

Avaa konfigurointi tiedosto

 nano /etc/mysql/my.conf

Etsi tiedostosta rivi

 bind-address: 127.0.0.1

Ja lisää eteen risuaita #.

 #bind-address: 127.0.0.1

Tallenna tiedosto ja käynnistä palvelu uudelleen

 sudo service mysql restart

SSL/TLS käyttöön

Mikäli ottaa käyttöön etäyhteydet niin suositus on käyttää SSL/TLS salausta aina, niin yhteydet ovat salattuina.

Konfiguroi tämä my.conf tiedostoon /etc/mysql konfigurointihakemistoon.

[mysqld]
ssl-ca=/etc/mysql/ssl/ca-cert.pem
ssl-cert=/etc/mysql/ssl/server-cert.pem
ssl-key=/etc/mysql/ssl/server-key.pem

Varmista että asiakaslaitteet ottavat aina yhteyden SSL/TLS:n yli. Voit vaatia tämän myös käyttöoikeuksissa.

Voit mysql-clientillä yhdistää näin SSL:ää käyttäen

mysql -h 192.168.10.100 -u root -p -ssl

Tarkista 'status' komennolla että yhteys on salattu

MariaDB [(none)]> status;

Lisätietoa: https://www.cyberciti.biz/faq/how-to-setup-mariadb-ssl-and-secure-connections-from-clients/

MariaDB Galera klusteri

Galera klusterin avulla saat tehtyä tietokantaklusterin. Tarvitset vähintään 3 palvelinta muodostaaksesi MariaDB-klusterin.

  • Asenna valmiiksi uusin versio MariaDB 10.1:stä kaikkiin palvelimille. Kaikissa palvelimissa tulee olla SAMA versio MariaDB-server pak.
  • Asenna rsync kaikkiin palvelimiin
  • Määritä sama root salasana kaikkiin palvelimiin.
  • Varmista, että yhteydet palvelinten välillä toimii moitetta.

Node 1

 sudo nano /etc/mysql/conf.d/galera.cnf

Konfiguroi tähän tiedot clusterista. Boldattuna on kohdat jotka sinun pitää muuttaa. Huomaa:

  • wsrep_cluster_name pitää jokaisella palvelimella olla sama! Muuten tulee handshake virhettä.
  • wsrep_cluster_address kohdassa pitää olla kaikkien MariaDB palvelimien IP-osoite. Vähintään 3 palvelinta.
[mysqld]
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0

# Galera Provider Configuration
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so

# Galera Cluster Configuration
wsrep_cluster_name="test_cluster"
wsrep_cluster_address="gcomm://first_ip,second_ip,third_ip"

# Galera Synchronization Configuration
wsrep_sst_method=rsync

# Galera Node Configuration
wsrep_node_address="this_node_ip"
wsrep_node_name="this_node_name"


Tarkista klusterin tila

 mysql -u root -p -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';"


Node 2 ja 3 jne...

Konfiguroi samalla tavalla kuten ensimmäinen node paitsi että muistathan muuttaa Galera Node Configuration kohtaa vastaamaan palvelimen asetuksia.

# Galera Node Configuration
wsrep_node_address="'''this_node_ip'''"
wsrep_node_name="'''this_node_name'''"

Kopioi Debian/Ubuntu Node 2 ja 3:seen tietokanta käyttäjälle 'debian-sys-maint' salasana joka on Node 1:llä /etc/mysql/debian.cnf tiedostossa.

Käynnistä Node 1

Varmista että kaikki nodet eivät ole päällä.

Käynnistäessä ensimmäistä Nodea, käytetään komentoa.

 sudo galera_new_cluster

Jos tämä onnistui, voit tarkistaa klusterin tilan

 mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Käynnistä toinen ja kolmas node

Käynnistä muut nodet normaalisti

 sudo service mysql start

tai

 sudo systemctl start mysql

Tarkista klusterin tila

 mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Voit käyttää käynnistyskomentoa välttääksesi aikakatkaisun

 mysqld_safe

Optional

Ei pakollisia mutta hyödyllisiä

Ilmoitukset

Kannattaa lisätä kaikkiin nodeisiin niin saat ilmoituksia Galeran tilasta.

Kloonaa Git paketti Galeranotify

 cd /etc/mysql
 sudo git clone https://github.com/gguillen/galeranotify.git

Muokkaa galeranotify.py tiedostoa ja määritä sinne sähköpostipalvelimesi asetukset

 sudo nano /etc/mysql/galeranotify/galeranotify.py

Tallenna ja määritä käyttöoikeudet

sudo chown mysql /etc/mysql/galeranotify/galeranotify.py
sudo chmod +x /etc/mysql/galeranotify/galeranotify.py

Lisää tämä galera.cnf konffin loppuun

 wsrep_notify_cmd = /etc/mysql/galeranotify/galeranotify.py

Tallenna ja käynnistä MariaDB uudelleen

Määritä mistä nodesta haetaan tiedot

Voit määrittää manuaalisesti järjestyksen mistä nodesta haetaan tiedot. Tämä on hyödyllistä kun kun nodet ovat kaukana toisistaan tai tietoliikenneyhteys on mahdollisesti heikko. Ilmoita nodet järjestyksessä "wsrep_node_name" nimellä jonka olet määrittänyt nodeille. Jos ei listan nodeen saa yhteyttä, se ottaa yhteyden sattumavaraiseen nodeen.

 wsrep_sst_donor="node1,node2,node3"

Debug

Yritän koota tänne yleisiä virheilmoituksia lokista mitä tulee eteeni ja joitakin mahdollisia ratkaisuj.

Käynnistysvirheet

systemd[1]: mariadb.service: Start operation timed out. Terminating.

Kokeile käynnistää verbose modessa manuaalisesti ensimmäisellä kerralla. On normaalia että ensimmäinen käynnistys pysähtyy aikakatkaisu-virheeseen sillä ensimmäisellä kerralla synkronoidaan tietokanta kokonaan ja tämä vie aikaa.

sudo -u mysql mysqld --verbose

Tai

sudo mysqld_safe

Tarkista ps komennolla mysql:n tila, /usr/sbin/mysqld --wsrep_start_position=XXXXXXXX jos näkyy tarkoittaa että synkronointia suoritetaan.

 ps aux | grep mysql

Yhteysvirheet

[Warning] WSREP: 3.0 (db2): State transfer to 1.0 (db1) failed: -141 (Unknown error 141)

[ERROR] WSREP: gcs/src/gcs_group.cpp:gcs_group_handle_join_msg():736: Will never receive state. Need to abort.

Luultavasti jonkinlainen yhteysvirhe node:jen välillä. Varmista että yhteys toimii nodesta toiseen normaalisti ja yhteysnopeus riittävä. Palomuurista tulee olla auki portit 3306, 4567, 4568, 4444.

Linkkejä

Asennukseen:

https://www.digitalocean.com/community/tutorials/how-to-configure-a-galera-cluster-with-mariadb-10-1-on-ubuntu-16-04-servers

Vianmääritykseen:

https://www.percona.com/blog/2014/09/01/galera-replication-how-to-recover-a-pxc-cluster/

https://www.percona.com/blog/2014/12/30/diagnosing-sst-errors-with-percona-xtradb-cluster-for-mysql/

http://galeracluster.com/2015/07/node-can-not-join-the-cluster-how-to-debug-issues-with-sst/

Mainos / Advertisement: