41
Таблица 1 – IP-адреса серверов кластера
Узел Имя узла IP-адрес
1
pxc1
192.168.1.164
2
pxc2
192.168.1.165
3
pxc3
192.168.1.166
4
proxysql
192.168.1.167
Первые три узла будут использоваться для
Percona XtraDB Cluster, а
четвертый для ProxySQL.
3.3.4 Установка
Percona XtraDB Cluster
Установим пакет
Percona XtraDB Cluster
sudo apt-get install percona-xtradb-cluster-57
Остановим сервис mysql:
sudo
service mysql stop
Добавим на первом узле в конфигурационный файл /etc/mysql/percona-
xtradb-cluster.conf.d/wsrep.cnf следующие переменные:
wsrep_provider=/usr/lib/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://192.168.1.164,192.168.1.165,192.168.1.166
wsrep_node_name=pxc1
wsrep_node_address=192.168.1.164
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:passw0rd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
На остальных узлах добавим те же конфигурационные значения за
исключением переменных wsrep_node_name и wsrep_node_address.
На втором узле установим значения переменных wsrep_node_name и
wsrep_node_address в:
wsrep_node_name=pxc2
wsrep_node_address=192.168.1.165
На третьем узле:
wsrep_node_name=pxc3
wsrep_node_address=192.168.1.166
42
После конфигурирования узлов, инициализируем кластер развернув
первый узел. Первый узел должна быть
единственной содержащей
реплицируемые данные на момент инициализации кластера.
Развертывание подразумевает запуск узла с пустой конфигурационнной
переменной wsrep_cluster_address (без указания адресов машин входящих в
кластер).
Чтобы не менять конфигурационный файл,
можно воспользоваться
командой:
sudo /etc/init.d/mysql bootstrap-pxc
При выполнении данной команды узел запускается в
режиме
развертывания с
wsrep_cluster_address=gcomm://. После добавления остальных узлов можно
перезапустить узел в нормальном режиме с использованием стандартной
конфигурации.
Удостоверимся что кластер был успешно инициализирован.
Для этого
войдем в консоль mysql:
mysql -u root –p
и выполним команду
mysql@pxc1> show status like 'wsrep%';
+----------------------------------+--------------------------------------+
| Variable_name | Value |
+----------------------------------+--------------------------------------+
| wsrep_local_state_uuid | 7e4a3888-d451-11e7-8bf9-037f76f76cc8 |
| ... | ... |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| ... | ... |
| wsrep_incoming_addresses | 192.168.1.164:3306 |
| ... | ...
|
| wsrep_cluster_size | 1 |
| wsrep_cluster_state_uuid | 7e4a3888-d451-11e7-8bf9-037f76f76cc8 |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| ... | ... |
| wsrep_ready | ON |
+----------------------------------+--------------------------------------+
67 rows in set (0.01 sec)
Результат выполнения команды показывает, что кластер содержит 1 узел, это
основной компонент кластера, узел находится в синхронизированном
состоянии, подключен к кластеру и готов к репликации данных.
Перед добавлением других узлов создадим
пользователя для передачи
мгновенных снимков состояния (SST) и предоставим ему необходимые
привилегии:
mysql@pxc1> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';
mysql@pxc1> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO
'sstuser'@'localhost';
mysql@pxc1> FLUSH PRIVILEGES;