Зачем нужна репликация MySQL
Репликация MySQL позволяет поддерживать точную копию базы данных на втором сервере в реальном времени. Используется для: читающей нагрузки (read replicas), аварийного восстановления (failover), бэкапов без нагрузки на master.
Архитектура Master-Slave
Master записывает все изменения в Binary Log (binlog). Slave читает binlog и применяет те же изменения у себя. Репликация асинхронная — небольшая задержка (lag) нормальна.
Настройка Master-сервера
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
binlog_expire_logs_seconds = 604800
max_binlog_size = 100Msudo systemctl restart mysql
# Создать пользователя для репликации
mysql -u root -p -e "
CREATE USER 'replicator'@'%' IDENTIFIED BY 'ReplPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;"# Узнать позицию binlog (запомните File и Position)
mysql -u root -p -e "SHOW MASTER STATUS\G"Настройка Slave-сервера
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay.log
read_only = 1
log_slave_updates = 1sudo systemctl restart mysql
# Подключить к master
mysql -u root -p -e "
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='replicator',
MASTER_PASSWORD='ReplPass123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
START SLAVE;"Мониторинг репликации
mysql -u root -p -e "SHOW SLAVE STATUS\G"
-- Ключевые параметры:
-- Slave_IO_Running: Yes (должно быть Yes)
-- Slave_SQL_Running: Yes (должно быть Yes)
-- Seconds_Behind_Master: 0 (задержка репликации)Если
Slave_IO_Running: No или Slave_SQL_Running: No — репликация сломана. Проверьте Last_Error в выводе SHOW SLAVE STATUS для диагностики.GTID-репликация (MySQL 5.6+ рекомендуется)
[mysqld]
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = ON
# На slave вместо MASTER_LOG_FILE/POS:
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='replicator',
MASTER_PASSWORD='ReplPass123!',
MASTER_AUTO_POSITION=1;GTID-репликация предпочтительнее традиционной binlog-репликации: автоматически определяет позицию, легче управлять failover и не нужно вручную отслеживать File/Position.