Ero sivun ”MariaDB” versioiden välillä
(→Debug) |
|||
(22 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
Rivi 89: | Rivi 89: | ||
sudo apt-get install software-properties-common | sudo apt-get install software-properties-common | ||
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 | 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. | + | sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.netinch.com/pub/mariadb/repo/10.2/ubuntu xenial main' |
</pre> | </pre> | ||
Rivi 118: | Rivi 118: | ||
sudo service mysql restart | 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. | ||
+ | |||
+ | <pre> | ||
+ | [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 | ||
+ | </pre> | ||
+ | |||
+ | 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 == | == MariaDB Galera klusteri == | ||
Rivi 123: | Rivi 148: | ||
Galera klusterin avulla saat tehtyä tietokantaklusterin. Tarvitset vähintään 3 palvelinta muodostaaksesi MariaDB-klusterin. | 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. | + | * Asenna valmiiksi uusin versio MariaDB 10.1:stä kaikkiin palvelimille. Kaikissa palvelimissa tulee olla SAMA versio MariaDB-server pak. |
* Asenna [[rsync]] kaikkiin palvelimiin | * Asenna [[rsync]] kaikkiin palvelimiin | ||
* Määritä sama root salasana kaikkiin palvelimiin. | * Määritä sama root salasana kaikkiin palvelimiin. | ||
+ | * Varmista, että yhteydet palvelinten välillä toimii moitetta. | ||
=== Node 1 === | === Node 1 === | ||
Rivi 148: | Rivi 174: | ||
# Galera Cluster Configuration | # Galera Cluster Configuration | ||
− | wsrep_cluster_name=" | + | wsrep_cluster_name="test_cluster" |
wsrep_cluster_address="gcomm://first_ip,second_ip,third_ip" | wsrep_cluster_address="gcomm://first_ip,second_ip,third_ip" | ||
Rivi 158: | Rivi 184: | ||
wsrep_node_name="this_node_name" | wsrep_node_name="this_node_name" | ||
</pre> | </pre> | ||
+ | |||
+ | |||
+ | Tarkista klusterin tila | ||
+ | |||
+ | mysql -u root -p -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';" | ||
+ | |||
=== Node 2 ja 3 jne... === | === Node 2 ja 3 jne... === | ||
Rivi 196: | Rivi 228: | ||
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" | mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'" | ||
+ | |||
+ | Voit käyttää käynnistyskomentoa välttääksesi aikakatkaisun | ||
+ | |||
+ | mysqld_safe | ||
=== Optional === | === Optional === | ||
Rivi 226: | Rivi 262: | ||
Tallenna ja käynnistä MariaDB uudelleen | 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 === | === Debug === | ||
− | + | Yritän koota tänne yleisiä virheilmoituksia lokista mitä tulee eteeni ja joitakin mahdollisia ratkaisuj. | |
− | systemd[1]: mariadb.service: Start operation timed out. Terminating. | + | ==== 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.''' | 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. | Tarkista ps komennolla mysql:n tila, /usr/sbin/mysqld --wsrep_start_position=XXXXXXXX jos näkyy tarkoittaa että synkronointia suoritetaan. | ||
Rivi 241: | Rivi 289: | ||
ps aux | grep mysql | 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/ | ||
[[Luokka:Linux|MariaDB]] | [[Luokka:Linux|MariaDB]] |
Nykyinen versio 25. helmikuuta 2018 kello 12.40
MariaDB on mysql tavoin tietokantapalvelinohjelmisto.
Sisällysluettelo
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:
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/