Pokiaľ pracujete s relačnými databázami ako MySQL alebo MariaDB nebude vám pojem Percona asi neznámy. Ide o spoločnosť, ktorá sa od roku 2006 venuje konzultáciám, správe a školeniam práve v oblasti takýchto databáz. Mimochodom práve tieto dni sa konala konferencia Percona Live v Londýne.

Percona má veľa open-source produktov, nástrojov a skriptov. Dnes prinášam niekoľko mojich poznámok k produktu Percona XtraDB Cluster. V skratke by sa dalo povedať, že ide or riešenie vyskladané z MySQL servera + Galera cluster + Percona Xtrabackup.

Krajšie povedané ide o open-source softvér pre vysokú dostupnosť (High Availability) MySQL. Čiže hneď na začiatku poteší, že zo slobodného softvéru neplynú žiadne licenčné poplatky ani obmedzenia.

Na čo to je dobré? Napríklad ak potrebujete zabezpečiť vysokú dostupnosť databázového servera, alebo mať na viacerých MASTER serveroch identické dáta v rovnaký okamih, v prípad rozkladania záťaže (Load Balancing) a podobne.

  • Percona XtraDB Cluster pracuje len s InnoDB storage engine. Myslím, že to v dnešnej dobe, keď je tento engine chválabohu tam, kde je nebude problém. MyISAM funguje len v experimentálnom móde, ale pre produkciu sa neodporúča. Takže dáta do clustera už musia byť ako InnoDB importované.

  • Minimálna odporúčaná veľkosť clustera sú 3 nody.
    Nody, alebo ak chcete servre by mali byť v identickej hardvérovej konfigurácii – cluster bude tak rýchly ako jeho najpomalší článok. Samozrejme môže ísť aj o VPS, ale mali by mať rovnakú konfiguráciu zdrojov.

  • Pre sieťovú komunikaciu používa porty 3306, 4444, 4567 a 4568. Nevie vždy správne pracovať, ak je zapnutý SELinux alebo Apparmor.

  • Čím sa odlišuje od clustera z klasickej MySQL alebo MariaDB databázy je State Snapshot Transfer (SST) a Incremental State Transfer (IST). SST podporuje 3 metody: mysqldump, rsync a xtrabackup. Práve mysqldump a rsync locknu cely cluster ako READ-ONLY než sú dáta distribuované z jedneho nodu na ostatné (SST poižíva FLUSH TABLES WITH READ LOCK). xtrabackup nevyžaduje READ LOCK pre celý synchronizačný proces, ale len pre synchronizáciu .frm súborov.

  • Percona XtraBackup je aj samostatný nástroj pre zálohovanie a obnovu MySQL databáz, zvláda ako MyISAM tak aj InnoDB engine.

  • Pri krátkom výpadku nodu je použitá IST synchronizácia, čize sa aplikujú len posledné zmeny.

  • Všetky nody, ktoré tvoria cluster sú defaultne multi-MASTER servre. Čiže nie je možne ich synchronizovať v dlhších časových intervaloch – ide o realtime riešenie. Z tohto dôvodu nie je možné použiť LOCK/UNLOCK TABLES alebo funkcie ako GET_LOCK(), RELEASE_LOCK() a pod. Zároveň nie je možné query log smerovať do tabuľky.

  • Kapitolou samou o sebe je vytvorenie resp. štartovanie clustera, ktoré sa realizuje cez tzv. bootstrap. Prvý server sa štartuje s prázdnym parametrom wsrep_cluster_address=gcomm://. To je možné zabezpečiť ako /etc/init.d/mysql bootstrap-pxc. Následne dalšie nody sa štarujú už s plnou konfiguráciou (/etc/init.d/mysql start). Nakoniec sa reštartne prvý. V prípade, že sa vypne celý cluster je nutné ho znova boostrapnuť.

Prikladám ukážku konfigurácie pre 3 nody:

[mysqld]

datadir=/var/lib/mysql
user=mysql

# Path to Galera library
wsrep_provider=/usr/lib/libgalera_smm.so

# Cluster connection URL contains the IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://192.168.70.61,192.168.70.62,192.168.70.63

# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW

# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB

# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2

# Node #1 address
wsrep_node_address=192.168.70.61

# SST method
wsrep_sst_method=xtrabackup

# Cluster name
wsrep_cluster_name=my_database_cluster

# Authentication for SST method
wsrep_sst_auth="sstuser:s3cretPass"
  • Na záver by som pridal ešte dva užitočné príkazy, ktoré sa hodia najmä na začiatku. SHOW STATUS LIKE 'wsrep_local_state_comment'; zobrazí stav aktuálneho nodu. Všetky ďalšie hodnoty clusteru získate pomocou
    SHOW status LIKE 'wsrep%';.

Určite si pozrite oficiálny web Percona XtraDB Cluster, je tu na stiahnutie aj PDF príručka k celej aplikácii. Ďalej odporúčam MySQL Performance Blog, kde je celkovo veľmi veľa zaujímavého čítania o relačných databázach, ich ladení a optimalizácii.