MariaDB
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
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.
- Asenna rsync kaikkiin palvelimiin
- Määritä sama root salasana kaikkiin palvelimiin.
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"
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
Virhe:
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
Tarkista ps komennolla mysql:n tila, /usr/sbin/mysqld --wsrep_start_position=XXXXXXXX jos näkyy tarkoittaa että synkronointia suoritetaan.
ps aux | grep mysql
Tarkista klusterin tila
mysql -u root -p -e "SHOW GLOBAL STATUS LIKE 'wsrep_%';"
Linkkejä
Asennukseen:
Vianmääritykseen:
https://www.percona.com/blog/2014/09/01/galera-replication-how-to-recover-a-pxc-cluster/
http://galeracluster.com/2015/07/node-can-not-join-the-cluster-how-to-debug-issues-with-sst/