Mainos / Advertisement:

MariaDB

From Taisto
Jump to navigation Jump to search

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: