Репликация MySQL master -> slave
Установлено на сервере Debian 12, Hestia CP, mariadb -10.11.6
На второй сервер устанавливаем debian12 и mariadb 10.11.8
Выполняем на MASTER сервере:
запускаем mysql и выполняем след команды:
CREATE USER 'replication'@'%';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
nano /etc/mysql/my.cnf
В файл my.cnf в секции [mysqld] необходимо добавить следующие параметры:
server_id = 1 # назначает серверу уникальный идентификатор
log_bin = mysql-bin # включает двоичный журнал
systemctl restart mariadb
Убедимся, что двоичный журнал включен. Конкретные значения могут отличаться.
mysql> SHOW MASTER STATUS;
mysql -u root -p -e FLUSH TABLES WITH READ LOCK;'
Выберите необходимые базы для копирования
mysql -u root -p -e 'SHOW DATABASES;'
mysqldump --databases phpmyadmin roundcube > backup.sql
Разблокируем Мастер
mysql -u root -p -e ' UNLOCK TABLES;'
Копируем бекап на Slave сервер
scp backup.sql IPадрес_SLAVE:/root/
v-add-firewall-rule ACCEPT IP_Адрес_SLAVE 3306
По умолчанию к MariaDB нельзя подключиться по сети, изменим это.
Отредактируем файл /etc/mysql/mariadb.conf.d/50-server.cnf
Исправим bind-address на 0.0.0.0
systemctl restart mariadb
Выполняем на SLAVE сервере:
mysql < backup.sql
Проверяем создались ли базы
mysql -u root -p -e 'SHOW DATABASES;'
[mysqld]
log_bin = mysql-bin # указываем слейву вести собственный двоичный журнал
server_id = 2 # указываем идентификатор сервера
relay-log = /var/lib/mysql/mysql-relay-bin # указываем расположение журнала ретрансляции
relay-log-index = /var/lib/mysql/mysql-relay-bin.index # этот файл служит перечнем всех имеющихся журналов ретрансляции
read_only = 1 # переводим слейв в режим “только чтение”
И теперь указываем слейву, какой сервер будет мастером, и откуда начинать реплицировать данные. В параметры MASTER_LOG_FILE и MASTER_LOG_POS необходимо подставить значения, полученные из SHOW MASTER STATUS на мастере.
mysql> CHANGE MASTER TO MASTER_HOST='172.20.220.62', MASTER_USER='replication', MASTER_LOG_FILE=' mysql-bin.000001 ', MASTER_LOG_POS=328;
Запустим воспроизведение журнала ретрансляции, и проверим статус репликации:
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
Если все прошло успешно, ваш статус должен иметь аналогичный вид.
27.05.2024