XtraDB Cluster

Żeby zapewnić HA cluster powinien składać się, z nieparzystej liczby nodów (3, 5, 7...).  Samo XtraDB jest forkiem MySQL Galera.

Wstęp

Poniżej przykładowa konfiguracja dla dwóch nodów (niezalecana):
xtradb-1 - 10.1.100.101
xtradb-2 - 10.1.100.102
Konfiguracja zakłada komunikację po adresach IP (samo resolvowanie dnsów przy bazach danych, jest niezalecane ze względu na performance).
Dodanie kolejnych nodów przebiega analogicznie.

Instalacja (deb/ubuntu)

apt-get update && apt-get install lsb-release gnupg
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
apt-get update && apt-get install percona-xtradb-cluster-57 -y

Konfiguracja

Przed dalszym etapem wymagane jest zatrzymanie baz na wszystkich nodach:

systemctl stop mysql.service

Podnoszenie clustra zawsze wygląda tak samo. Przygotowujemy jeden z nodów, którego będziemy bootstrapować, następnie podłączać do niego pozostałe nody.
Na każdym z nodów edytujemy plik: /etc/mysql/percona-xtradb-cluster.conf.d/wsrep.cnf

[mysqld]
wsrep_provider=/usr/lib/galera3/libgalera_smm.so
wsrep_cluster_address=gcomm://10.1.100.101,10.1.100.102
binlog_format=ROW
default_storage_engine=InnoDB
wsrep_slave_threads= 8
wsrep_log_conflicts
innodb_autoinc_lock_mode=2
wsrep_node_address=10.1.100.101
wsrep_cluster_name=XtraDB_Cluster
wsrep_node_name=node-1
pxc_strict_mode=ENFORCING
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=”sstuser:YourPassword”

Na pozostałych nodach zmieniamy tylko wsrep_node_name i wsrep_node_address

Inicjalizacja clustra

/etc/init.d/mysql bootstrap-pxc

Dodanie użytkownika API wsrep:

mysql -p -e "CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'YourPassword';GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';FLUSH PRIVILEGES;"

Dodanie kolejnego noda

Po edycji pliku konfiguracyjnego i podmianie node_name i node_address, podłączamy host poprzez wystartowanie bazy

systemctl start mysql.service

Status XtraDB Cluster

Status można sprawdzić z poziomu mysql'a:

mysql -p -e "show status like 'wsrep%’;"

Linki

Dokumentacja percony,
Bootstrap noda,
API wsrep,
MySQL Galera.

michal

Read more posts by this author.

/dev/null