Установка 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
Примечание: если в вашей сети есть внешние фаерволы или облачная безопасность (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;
Остановите 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 вы можете увидеть экран конфигурации похожий на скриншот:

Совет по безопасности: используйте отдельный [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%';
Отладка и распространённые проблемы
- Узел не присоединяется (stalled или non-primary): проверьте wsrep_cluster_address, DNS/hosts, доступность портов и время на серверах.
- SST завершается с ошибкой: проверьте права для директории бэкапа, наличие xtrabackup, свободное место на диске, и правильность sstuser пароля.
- Конфликты пакетов: если при установке появляются сообщения о mariadb-libs, удалите их (см. шаг 3).
- Проблемы с SELinux: временно отключите SELinux для тестов (setenforce 0) и затем создайте постоянные правила или метки, если хотите оставить SELinux включённым.
Короткий runbook при проблемах с SST:
- Проверить логи mysqld (обычно /var/log/mysqld.log или systemd journal).
- Убедиться, что sstuser может подключиться: mysql -u sstuser -p -h localhost
- Проверить свободное место: df -h
- Проверить наличие xtrabackup: which xtrabackup
- При необходимости вручную запустить 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.
Мини‑методология развертывания (коротко)
- Подготовьте сеть и hosts.
- Настройте firewall.
- Установите зависимости (EPEL, socat).
- Установите Percona пакеты.
- Настройте SST и my.cnf.
- Bootstrap primary node, затем добавьте остальные.
- Протестируйте и интегрируйте мониторинг.
Безопасность и жёсткая настройка
- Используйте сильные пароли для 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 — быстрый индикатор здоровья).
Ссылки
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента