Инструменты пользователя

Инструменты сайта


wiki:technical:percona

Установка Percona XtraDB Cluster на Debian 11

Подготовка Оси

apt update
apt install -y wget gnupg2 curl lsb-release 

Установка кластера

Получаем репозиторий и устанавливаем его

wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
dpkg -i percona-release_latest.generic_all.deb

Устанавливаем кластер

percona-release disable all
percona-release enable pxc-57 testing
percona-release enable pxb-24 testing
apt-get update
apt install percona-xtradb-cluster-57

При необходимости устанавливаем утилиты percona-toolkit

percona-release enable tools release
apt update
apt install percona-toolkit

Конфигурируем кластер

Имеется два сервера, которые необходимо собрать в кластер

Node Host IP
Node 1 db4 192.168.0.220
Node 2 db5 192.168.0.221

Создаем конфиг первой ноды

mkdir /etc/percona-xtradb-cluster.conf.d/
nano /etc/percona-xtradb-cluster.conf.d/wsrep.cnf 

В файл добавляем следующее содержимое:

[mysqld]
wsrep_provider=/usr/lib/libgalera_smm.so
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://192.168.0.220,192.168.0.221              
wsrep_node_name=db4 
wsrep_node_address=192.168.0.220
wsrep_sst_method=xtrabackup-v2
wsrep_sst_auth=sstuser:verySt0ngPa$$wd
pxc_strict_mode=ENFORCING
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2

Подключаем конфиг в MySQL

echo "!includedir /etc/mysql/percona-xtradb-cluster.conf.d/" >> /etc/mysql/my.cnf

Конфигурируем пользователя для синка данных между БД

mysql -u root -p

Добавляем пользователя MySQL

CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'verySt0ngPa$$wd';
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
FLUSH PRIVILEGES;

Останавливаем MySQL

service mysql stop

Bootstrat-им ноду

root@db4 ~ # /etc/init.d/mysql bootstrap-pxc
Bootstrapping Percona XtraDB Cluster database server: mysqld ..

Особенности конфигурации в Debian

Здесь есть важное замечание, на которое следует обратить пристальное внимание, Проблема в том, что в скрипте systemd debian не содержится опций для остановки bootstrap

root@db4:~# service mysql
Usage: /etc/init.d/mysql start|stop|restart|restart-bootstrap|reload|force-reload|status|bootstrap-pxc

Сам файл /etc/systemd/system/mysql.bootstrap.service:

[Unit]
Description=Percona XtraDB Cluster daemon
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/etc/init.d/mysql bootstrap-pxc
ExecStop=/usr/bin/mysqladmin shutdown
ExecReload=/etc/init.d/mysql reload
EnvironmentFile=-/etc/default/mysql
LimitNOFILE = 5000
Restart=on-failure
RestartSec=3
RestartPreventExitStatus=1
PrivateTmp=false

Поэтому для остановки bootstrap следует через ps aux вычислить id работающего процесса и убить его. После этого нужно запустить работать mysql в обычном режиме командой service mysql start

Добавляем вторую ноду

Необходимо добавить пользователя на ноду, аналогично первой ноде. В конфиге исправляем два параметра - IP и имя ноды :

wsrep_node_name=db5
wsrep_node_address=192.168.0.221

Стартуем сервер MySQL

root@db5 ~ # service mysql stop
root@db5 ~ # service mysql start

Проверяем работу, заходим в MySQL mysql -p

mysql> show status like 'wsrep%';
mysql> show status like 'wsrep_local_state_comment';
+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| wsrep_local_state_comment | Synced |
+---------------------------+--------+
1 row in set (0.00 sec)
mysql> show status like 'wsrep_cluster_status';
+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| wsrep_cluster_status | Primary |
+----------------------+---------+
1 row in set (0.00 sec)
mysql> show status like 'wsrep_connected';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| wsrep_connected | ON    |
+-----------------+-------+
1 row in set (0.00 sec)
mysql> show status like 'wsrep_local_state';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| wsrep_local_state | 4     |
+-------------------+-------+
1 row in set (0.00 sec)

Аналогично можно добавить еще одну или несколько нод percona при необходимости.

wiki/technical/percona.txt · Последнее изменение: 2022/08/10 22:38 — Diman