Настройка классической репликации MySQL Master-Slave на основе GTID
- Необходимость горизонтального масштабирования операций чтения (Read Replicas).
- Сложности с переключением реплик и поиском позиций бинарных логов (binlog file/pos) при сбоях.
- Риск рассинхронизации данных при традиционной репликации по именам файлов.
1. Настройка Master (Источник / Source)
Отредактируйте /etc/mysql/mysql.conf.d/mysqld.cnf:
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
gtid_mode = ON
enforce_gtid_consistency = ON
log_replica_updates = ONПерезапустите Master и создайте пользователя репликации:
CREATE USER 'repl_user'@'%' IDENTIFIED WITH caching_sha2_password BY 'SecureReplPassword_2024';
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
FLUSH PRIVILEGES;2. Настройка Slave (Реплика / Replica)
Конфигурация реплики mysqld.cnf:
[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay-bin.log
gtid_mode = ON
enforce_gtid_consistency = ON
log_replica_updates = ON
read_only = ON
super_read_only = ON3. Создание исходного дампа базы с фиксацией GTID
# Создание консистентного дампа на Master
mysqldump -u root -p --all-databases --single-transaction --triggers --routines --set-gtid-purged=ON > /tmp/master_dump.sql
# Восстановление дампа на Slave
mysql -u root -p < /tmp/master_dump.sql4. Запуск GTID-репликации на стороне Slave
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.1.100',
SOURCE_PORT=3306,
SOURCE_USER='repl_user',
SOURCE_PASSWORD='SecureReplPassword_2024',
SOURCE_AUTO_POSITION=1,
SOURCE_SSL=1;
START REPLICA;
-- Проверка статуса репликации
SHOW REPLICA STATUS\G Частые вопросы (FAQ)
В чем главное преимущество GTID над репликацией по File/Position?
С GTID (SOURCE_AUTO_POSITION=1) не требуется вручную искать имя бинарного лога и точное смещение байт. Реплика автоматически запрашивает у мастера все транзакции, отсутствующие в ее наборе gtid_executed.
Зачем включать опцию enforce_gtid_consistency = ON?
Она запрещает выполнение небезопасных с точки зрения GTID конструкций (например, CREATE TABLE ... SELECT или временные таблицы внутри транзакций), которые могут сломать репликацию.