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

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


wiki:mysql:percona8_cluster_install

Percona XtraDB Cluster на Debian 11

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

# Обновляем систему:
 
apt update
 
# Устанавливаем необходимые пакеты:
 
apt install -y wget gnupg2 lsb-release curl
 
# Закачиваем установочный пакет percona
 
wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb
 
# Устанавливаем его через dpkg:
 
dpkg -i percona-release_latest.generic_all.deb
 
# Обновляем информацию о пакетах:
 
apt update
 
# Включаем репозиторийна установку Percona XtraDB Cluster:
 
percona-release setup pxc80
 
# Устанавливаем кластер:
 
apt install -y percona-xtradb-cluster

В процессе установке нужно будет установить пароль root на MySQL. Эти действия необходимо выполнить на каждой ноде кластера.

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

У нас имеется три виртуальных машины в локальной сети 10.20.30.0/24:

Node Host IP
Node 1 pxc1 10.20.30.2
Node 2 pxc2 10.20.30.3
Node 3 pxc3 10.20.30.4
# Останавливаем Percona. После новой установки он не стартует сам. 
# Это необходимо сделать, если вы запускали сервер вручную самостоятельно.
 
service mysql stop
 
# Отредактируем файл конфигурации, в Debian or Ubuntu это /etc/mysql/mysql.conf.d/mysqld.cnf:
# Указываем в переменной через запятую состав кластера.
 
wsrep_cluster_address=gcomm://10.20.30.2,10.20.30.3,10.20.30.4
 
# Конфигурируем ноду 1.
# Требуется указать имя ноды и её IP адрес
# Остальные параметры можно оставить определенными по-умолчанию.
 
wsrep_node_name=pxc1
wsrep_node_address=10.20.30.2
 
# Для ноды 2
 
wsrep_node_name=pxc2
wsrep_node_address=10.20.30.3
 
# Для ноды 3
 
wsrep_node_name=pxc3
wsrep_node_address=10.20.30.4

По сути настройки всех нод аналогичные, разницы между ними нет. В файле конфигурации следует указать список всех участников и для каждой ноды - ее IP адрес и имя. Есть еще настройки для шифрования трафика, но их пока оставляем за пределами этой заметки.

Стартуем кластер

В результате на текущий момент у нас имеется три одинаковых по характеристикам и настройкам сервера с установленным и выключенным mysql percona clister. pxc1 для подключения и подключаем остальные две (2 и 3) к первой.

bootstap-им первую ноду

# Стартуем (bootstap-им первую ноду)
# Нода в этот момент находится в режиме для подключения, она не смотрит в сформированный нами конфиг
# и выставляет переменную wsrep_cluster_conf_id в 1
 
root@pxc1:~# systemctl start mysql@bootstrap.service
 
systemctl start mysql@bootstrap.service

Смотрим в mysql на первой ноде, что происходит:

mysql> show status like 'wsrep%';
 
 
| wsrep_cluster_size               | 1                                                                                                                                              |
| wsrep_cluster_state_uuid         | 67682be6-fb38-11ed-aa0e-1a0b1104418d                                                                                                           |
| wsrep_cluster_status             | Primary                                                                                                                                        |
| wsrep_connected                  | ON                                                                                                                                             |
| wsrep_local_bf_aborts            | 0                                                                                                                                              |
| wsrep_local_index                | 2                                                                                                                                              |
| wsrep_provider_capabilities      | :MULTI_MASTER:CERTIFICATION:PARALLEL_APPLYING:TRX_REPLAY:ISOLATION:PAUSE:CAUSAL_READS:INCREMENTAL_WRITESET:UNORDERED:PREORDERED:STREAMING:NBO: |
| wsrep_provider_name              | Galera                                                                                                                                         |
| wsrep_provider_vendor            | Codership Oy <info@codership.com> (modified by Percona <https://percona.com/>)                                                                 |
| wsrep_provider_version           | 4.14(779b689)                                                                                                                                  |
| wsrep_ready                      | ON                                                                                                                                             |
| wsrep_thread_count               | 9                                                                                                                                              |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
79 rows in set (0.01 sec)

Видим, что первая нода работает и ждет подключений остальных.

Стартуем вторую ноду

root@pxc2:~# service mysql start
 
service mysql start
mysql> show status like 'wsrep%';
 
....
 
| wsrep_cluster_conf_id            | 4                                                                                                                                              |
| wsrep_cluster_size               | 2                                                                                                                                              |
| wsrep_cluster_state_uuid         | 67682be6-fb38-11ed-aa0e-1a0b1104418d                                                                                                           |
| wsrep_cluster_status             | Primary                                                                                                                                        |
| wsrep_connected                  | ON                                                                                                                                             |
| wsrep_local_bf_aborts            | 0                                                                                                                                              |
| wsrep_local_index                | 0                                                                                                                                              |
| wsrep_provider_capabilities      | :MULTI_MASTER:CERTIFICATION:PARALLEL_APPLYING:TRX_REPLAY:ISOLATION:PAUSE:CAUSAL_READS:INCREMENTAL_WRITESET:UNORDERED:PREORDERED:STREAMING:NBO: |
| wsrep_provider_name              | Galera                                                                                                                                         |
| wsrep_provider_vendor            | Codership Oy <info@codership.com> (modified by Percona <https://percona.com/>)                                                                 |
| wsrep_provider_version           | 4.14(779b689)                                                                                                                                  |
| wsrep_ready                      | ON                                                                                                                                             |
| wsrep_thread_count               | 9                                                                                                                                              |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
79 rows in set (0.00 sec)

Видим, что в составе ноды появился второй участник, на это указывает параметр wsrep_cluster_size, равный 2. Аналогично добавляем третью ноду.

Добавляем ноду 3

# Добавляем ноду 3
#
root@pxc3:~# service mysql start
 
service mysql start

Скорее всего, что нода так же добавится и параметр wsrep_cluster_size установится в 3. У меня именно так и произошло, но после нескольких попыток.

Переключение первой ноды в обычный режим

Все это хорошо, но кластер сейчас в режиме добавления. И нам нужно переключить первую ноду в обычный режим и проверить его работу кластера, ради чего все затевалось то?

# На первой ноде останавливаем bootstrap
# 
root@pxc1:~# systemctl stop mysql@bootstrap.service
 
systemctl stop mysql@bootstrap.service
 
# Теперь стартуем mysql в обычном режиме
#
root@pxc1:~# systemctl start mysql
 
systemctl start mysql

Включение кластера

mysql> show status like 'wsrep%';
 
 
| wsrep_cluster_size               | 3                                                                                                                                              |
| wsrep_cluster_state_uuid         | 67682be6-fb38-11ed-aa0e-1a0b1104418d                                                                                                           |
| wsrep_cluster_status             | Primary                                                                                                                                        |
| wsrep_connected                  | ON                                                                                                                                             |
| wsrep_local_bf_aborts            | 0                                                                                                                                              |
| wsrep_local_index                | 0                                                                                                                                              |
| wsrep_provider_capabilities      | :MULTI_MASTER:CERTIFICATION:PARALLEL_APPLYING:TRX_REPLAY:ISOLATION:PAUSE:CAUSAL_READS:INCREMENTAL_WRITESET:UNORDERED:PREORDERED:STREAMING:NBO: |
| wsrep_provider_name              | Galera                                                                                                                                         |
| wsrep_provider_vendor            | Codership Oy <info@codership.com> (modified by Percona <https://percona.com/>)                                                                 |
| wsrep_provider_version           | 4.14(779b689)                                                                                                                                  |
| wsrep_ready                      | ON                                                                                                                                             |
| wsrep_thread_count               | 9                                                                                                                                              |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
79 rows in set (0.00 sec)
 
mysql>

Видим два параметра: wsrep_cluster_size 3 и текущее состояние кластера wsrep_cluster_state_uuid, он должен совпадать на всех нодах кластера, проверяем это от 1 до 3.

Проверка репликации кластера на тестовой БД

На первой ноде выполняем команду в mysql:

# На первой ноде выполняем команду в mysql
pxc1: mysql> CREATE DATABASE tempo;
 
CREATE DATABASE tempo;

На второй ноде:

# На второй ноде выполняем команду в mysql
pxc2: mysql> USE tempo;
 
mysql> USE tempo;
Database changed

На третьей ноде выполняем команду в mysql:

# На третьей ноде выполняем команду в mysql
pxc3: mysql> CREATE TABLE tempo.example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
 
mysql> CREATE TABLE tempo.example (node_id INT PRIMARY KEY, node_name VARCHAR(30));
Query OK, 0 rows affected (7.60 sec)

Теперь снова на первой ноде выполняем команду в MySQL

# На первой ноде выполняем команду в mysql
pxc1: mysql> INSERT INTO tempo.example VALUES (1, 'pxc1');
 
mysql> INSERT INTO tempo.example VALUES (1, 'pxc1');
Query OK, 1 row affected (1.35 sec)

Как видим, наш кластер живет и работает неплохо. Теперь можно заливать в него БД…

wiki/mysql/percona8_cluster_install.txt · Последнее изменение: 2023/05/27 20:07 — Diman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki