Гид по технологиям

Установка Percona XtraDB Cluster на CentOS 7

• 6 min read • Базы данных • Обновлено 20 Nov 2025
Percona XtraDB Cluster на CentOS 7 — установка
Percona XtraDB Cluster на CentOS 7 — установка

Кратко: пошаговое руководство по развёртыванию Percona XtraDB Cluster 5.6 на трёх узлах CentOS 7: подготовка хостов, открытие портов в firewalld, установка репозиториев и пакетов, создание пользователя SST, настройка my.cnf, запуск и тестирование кластера. Включены рекомендации по безопасности, чек‑листы, отладка и альтернативы.

Важно: используйте надёжные пароли для root и sstuser, заменяйте примеры IP/имён на ваши реальные адреса, выполняйте шаги на всех узлах, если это указано.

Ключевые варианты поисковых запросов

  • установка Percona XtraDB Cluster
  • percona xtradb cluster centos7
  • percona 5.6 install
  • настройка Percona Galera
  • SST xtrabackup-v2

Предварительные условия

  • 3 сервера с CentOS 7 (физические или виртуальные).
  • Права root на всех серверах.
  • Базовые навыки работы в терминале и редактировании файлов (vim/nano).

Важно: все команды ниже предполагают запуск под root или через sudo.

Шаг 1 — Настройка файла hosts

Первое — задать имена хостов и сопоставить IP. В примере используются три узла:

Node  Server IP   Hostname

Node1   -   192.168.43.36     percona1
Node2   -   192.168.43.166    percona2
Node3   -   192.168.43.148    percona3

Подключитесь к каждому серверу по SSH:

ssh root@serverip

Отредактируйте /etc/hosts на всех узлах (vim или другой редактор):

vim /etc/hosts

Вставьте соответствующие строки, заменив IP на ваши реальные адреса:

192.168.43.36   percona1
192.168.43.166  percona2
192.168.43.148  percona3

Сохраните и выйдите.

Шаг 2 — Настройка firewalld

CentOS 7 использует firewalld. Команда для управления — firewall-cmd. Откроем сервис MySQL и порты Galera/Percona.

Запустите firewalld, если он ещё не запущен:

systemctl start firewalld

Откройте сервис mysql (включает порт 3306):

firewall-cmd --zone=public --add-service=mysql --permanent

Явно добавим порты, требуемые кластеру:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/udp --permanent

Перезагрузите правила:

firewall-cmd --reload

Проверьте правила:

firewall-cmd --list-all

Окно конфигурации firewalld

Примечание: если в вашей сети есть внешние фаерволы или облачная безопасность (security groups), откройте те же порты там.

Шаг 3 — Установка EPEL и socat

Для работы Percona XtraDB Cluster нужен socat (для SST/соединений). Он находится в репозитории EPEL.

Установите EPEL и socat, и удалите конфликтующие пакеты mariadb-libs:

yum -y install epel-release
yum -y install socat
yum -y remove mariadb-libs

После этого socat и EPEL будут доступны.

Шаг 4 — Установка Percona XtraDB Cluster

Добавьте Percona репозиторий и установите необходимые пакеты.

yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

Затем установите пакетный набор (в одном командном вызове или по строкам):

yum install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-shared-56 percona-toolkit percona-xtrabackup Percona-XtraDB-Cluster-galera-3 rsync nc

После установки запустите службу MySQL (Percona):

systemctl start mysql

Запустите скрипт безопасности для настройки пароля root:

mysql_secure_installation

Пример интерактивного ввода:

Enter current password for root (enter for none): PRESS ENTER
Set root password? [Y/n] Y
New password: TYPE YOUR PASSWORD
Re-enter new password: REPEAT PASSWORD
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Важно: выполните шаги 1–4 на всех трёх серверах.

Шаг 5 — Настройка Percona XtraDB Cluster

Мы создадим пользователя SST и настроим my.cnf на каждом узле. SST (State Snapshot Transfer) — это полная передача данных от донора к подключающемуся узлу; метод xtrabackup‑v2 позволяет выполнять SST без остановки сервера на доноре.

Подключитесь к MySQL на каждом узле:

mysql -u root -p
TYPE YOUR PASSWORD

Создайте пользователя sstuser (используйте безопасный пароль вместо примера):

create user sstuser@'%' identified by 'mypass@';
grant all on *.* to sstuser@'%';
flush privileges;

Создание пользователя SST

Остановите MySQL перед редактированием конфигурации:

systemctl stop mysql

Отредактируйте /etc/my.cnf на каждом узле (vim или другой редактор). Приведённые ниже параметры wsrep заменяют или дополняют существующие секции; следите за корректным синтаксисом.

На percona1 (/etc/my.cnf):

wsrep_cluster_address          = gcomm://
wsrep_provider                 = /usr/lib64/galera3/libgalera_smm.so

wsrep_slave_threads            = 8
wsrep_cluster_name             = Cluster Percona XtraDB
wsrep_node_name                = percona1

wsrep_node_address             = percona1
wsrep_sst_method               = xtrabackup-v2
wsrep_sst_auth                 = sstuser:mypass@

На percona2 (/etc/my.cnf):

wsrep_cluster_address          = gcomm://percona1,percona3
wsrep_provider                 = /usr/lib64/galera3/libgalera_smm.so

wsrep_slave_threads            = 8
wsrep_cluster_name             = Cluster Percona XtraDB
wsrep_node_name                = percona2

wsrep_node_address             = percona2
wsrep_sst_method               = xtrabackup-v2
wsrep_sst_auth                 = sstuser:mypass@

На percona3 (/etc/my.cnf):

wsrep_cluster_address          = gcomm://percona1,percona2
wsrep_provider                 = /usr/lib64/galera3/libgalera_smm.so

wsrep_slave_threads            = 8
wsrep_cluster_name             = Cluster Percona XtraDB
wsrep_node_name                = percona3

wsrep_node_address             = percona3
wsrep_sst_method               = xtrabackup-v2
wsrep_sst_auth                 = sstuser:mypass@

Сохраните файлы и убедитесь, что синтаксис в my.cnf верный. На percona2 вы можете увидеть экран конфигурации похожий на скриншот:

Конфигурация Percona Server на percona2

Совет по безопасности: используйте отдельный [user] и [mysqld] секции с ограничением доступа и пересмотрите права на файлы ключей и бэкапов.

Шаг 6 — Запуск кластера

На percona1 выполните bootstrap кластера (инициализация основной ноды):

systemctl start mysql@bootstrap

На percona2 и percona3 запустите службу обычным способом:

systemctl start mysql

Проверьте логи (в случае ошибок):

less /var/log/messages
journalctl -u mysql

Если есть ошибки, вернитесь к конфигурации my.cnf и правам доступа.

Шаг 7 — Тестирование

Подключитесь на каждую ноду:

mysql -u root -p
TYPE YOUR PASSWORD

Проверка статуса узла Galera:

SHOW STATUS LIKE 'wsrep_local_state_comment';

Если результат “Synced”, узел готов принимать трафик.

Проверка размера кластера (число доступных узлов):

show global status like 'wsrep_cluster_size';

Полный набор переменных Galera:

show global status like 'wsrep%';

Percona сервер синхронизирован

Отладка и распространённые проблемы

  • Узел не присоединяется (stalled или non-primary): проверьте wsrep_cluster_address, DNS/hosts, доступность портов и время на серверах.
  • SST завершается с ошибкой: проверьте права для директории бэкапа, наличие xtrabackup, свободное место на диске, и правильность sstuser пароля.
  • Конфликты пакетов: если при установке появляются сообщения о mariadb-libs, удалите их (см. шаг 3).
  • Проблемы с SELinux: временно отключите SELinux для тестов (setenforce 0) и затем создайте постоянные правила или метки, если хотите оставить SELinux включённым.

Короткий runbook при проблемах с SST:

  1. Проверить логи mysqld (обычно /var/log/mysqld.log или systemd journal).
  2. Убедиться, что sstuser может подключиться: mysql -u sstuser -p -h localhost
  3. Проверить свободное место: df -h
  4. Проверить наличие xtrabackup: which xtrabackup
  5. При необходимости вручную запустить rsync‑SST (только для диагностики) или повторить xtrabackup с повышенной подробностью логов.

Чек‑лист по ролям (проверка перед вводом в продукцию)

Администратор сети:

  • Проверить доступность портов между узлами.
  • Настроить резервные правила firewall вне узлов (если применимо).

Системный администратор:

  • Обновить пакеты и установить EPEL.
  • Убедиться в резервном питании и мониторинге диска/CPU.

DBA:

  • Настроить secure_installation и заменить пароли.
  • Проверить параметры my.cnf и выполнить нагрузочные тесты.
  • Настроить мониторинг SLI/SLO (например, задержки репликации и процент синхронизированных узлов).

Когда этот подход не подходит

  • Если нужна синхронная жёсткая транзакционная согласованность при очень высокой нагрузке с минимальной задержкой, Galera‑кластер может вносить дополнительные задержки при коммитах.
  • Для одиночной реплики с асинхронной репликацией проще использовать стандартный MySQL Master/Slave.
  • Если вы хотите встроенную горизонтальную шардировку — подумайте о архитектурах, поддерживающих шардинг (Vitess, ProxySQL + sharding).

Альтернативные подходы

  • MySQL Group Replication — встроенное решение MySQL для мультимастерности.
  • MariaDB Galera — схожая Galera‑репликация, тесно интегрированная с MariaDB.
  • Асинхронная репликация MySQL — проще в диагностике, но с меньшей надёжностью данных при сбоях.

Ментальные модели и эвристики

  • Кластер Galera = синхронная репликация на уровне транзакций + периодические SST для новых узлов.
  • SST дешевле по простоте, но может быть дорогим по времени/пространству; при больших БД планируйте быстрые сети и места для временных файлов.
  • Всегда считать одну ноду источником правды только до тех пор, пока кластер в состоянии Primary.

Мини‑методология развертывания (коротко)

  1. Подготовьте сеть и hosts.
  2. Настройте firewall.
  3. Установите зависимости (EPEL, socat).
  4. Установите Percona пакеты.
  5. Настройте SST и my.cnf.
  6. Bootstrap primary node, затем добавьте остальные.
  7. Протестируйте и интегрируйте мониторинг.

Безопасность и жёсткая настройка

  • Используйте сильные пароли для root и sstuser и храните их в безопасном хранилище (vault).
  • Ограничьте доступ к MySQL по IP и используйте TLS для внутренних соединений, если сеть ненадёжна.
  • Регулярно обновляйте пакеты Percona и ОС, планируйте окно обслуживания для обновлений.

Факт‑бокс (ключевые пункты)

  • Минимум узлов: 3 (рекомендовано для отказоустойчивости и кворума).
  • Основные порты: 3306 (MySQL), 4567 TCP/UDP (wsrep), 4568 TCP (IST), 4444 TCP (SST).
  • SST методы: xtrabackup‑v2 (онлайн), rsync (простой, но блокирует).

Краткий глоссарий (1‑строчная)

  • SST: State Snapshot Transfer — полная передача состояния базы между узлами.
  • IST: Incremental State Transfer — передача только недостающих транзакций.
  • Galera/wsrep: библиотека и интерфейс для синхронной мультимастерной репликации.

Решение — простое дерево принятия решения (Mermaid)

flowchart TD
  A[Нужна высокая доступность] --> B{Есть 3+ узла?}
  B -- Да --> C[Рассмотреть Percona XtraDB Cluster]
  B -- Нет --> D[Использовать Master/Slave или добавить узлы]
  C --> E{Требуется онлайн SST?}
  E -- Да --> F[Использовать xtrabackup-v2]
  E -- Нет --> G[Можно рассмотреть rsync]

Итог

Percona XtraDB Cluster обеспечивает надёжную мультимастерную репликацию на базе Galera и хорошо подходит для высокодоступных MySQL‑совместимых решений. Этот гайд покрывает подготовку окружения, установку, конфигурацию и тестирование кластера на CentOS 7 с рекомендациями по безопасности и отладке.

Резюме и рекомендации:

  • Всегда использовать безопасные пароли и резервное копирование перед изменениями.
  • Тестируйте SST и поведение кластера в тестовой среде до продакшна.
  • Интегрируйте мониторинг и алерты (простая проверка wsrep_local_state_comment — быстрый индикатор здоровья).

Ссылки

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро