7.1 Настройка нового репликата
MySQL Enterprise Backup позволяет настроить реплику, выполнив резервное копирование источника и восстановив копию на новом сервере реплики, не останавливая источник.
Для серверов, НЕ использующих GTID:
-
Создайте полную резервную копию источника и затем, например, используйте команду
copy-back-and-apply-log, чтобы восстановить резервную копию и файлы журнала в правильные каталоги на новом реплике и подготовить данные.ПримечаниеНе используйте опцию
--no-lockingпри резервном копировании сервера, иначе вы не сможете получить правильную позицию двоичного журнала на шаге 4 ниже для инициализации реплики. Измените файл
my.cnfнового репликата и поместитеskip-slave-startиevent_scheduler=off(если источник использует ) в раздел[mysqld].-
Запустите новый реплика mysqld. В выводе сервера вы увидите следующее:
… InnoDB: Last MySQL binlog file position 0 128760007, file name ./hundin-bin.000006 …
Хотя было отображено значение
Last MySQL binlog file position, это НЕ обязательно последняя позиция двоичного журнала на резервированном сервере, так как InnoDB не хранит информацию о позиции двоичного журнала для операций DDL или изменений в таблицах, не являющихся InnoDB. Не используйте эту позицию двоичного журнала для инициализации реплики. Следующий шаг описывает, как найти правильную позицию двоичного журнала для использования. -
Найдите файл
, гдеdatadir/meta/backup_variables.txt- это каталог данных нового репликата. Посмотрите в файл, чтобы получить последнюю позицию двоичного журнала и соответствующий номер файла журнала, хранящийся внутри:datadirbinlog_position=hundin-bin.000006:128760128
-
Используйте SQL-запрос
CHANGE MASTER TOи информацию, полученную на последнем шаге, для правильной инициализации реплики:CHANGE MASTER TO MASTER_LOG_FILE='hundin-bin.000006', MASTER_LOG_POS=128760128;
-
Установите статусы любых событий, скопированных с источника, в
SLAVESIDE_DISABLED. Например:mysql> UPDATE mysql.event SET status = 'SLAVESIDE_DISABLED';
Удалите строку
skip-slave-startи записиevent_scheduler=off, которые вы добавили в файлmy.cnfреплики на шаге 2. (Вы также можете оставить записьskip-slave-start, но тогда вам всегда нужно будет использовать оператор для запуска репликации при каждом перезапуске сервера реплики.)Перезапустите сервер реплики. Репликация начнется.
Для серверов, использующих GTID (см. как включить использование GTID на серверах):
Создайте полную резервную копию источника и затем, например, используйте команду
copy-back-and-apply-log, чтобы восстановить резервную копию и файлы журналов в правильные каталоги на новом реплике, поддерживающем GTID, и подготовить данные.Измените файл
my.cnfнового репликата и поместитеskip-slave-startиevent_scheduler=off(если источник использует ) в раздел[mysqld].Запустите новый сервер реплики.
-
Подключитесь к серверу реплики с помощью клиента mysql. Затем выполните следующую команду, чтобы сбросить двоичный журнал:
mysql> RESET MASTER;
И выполните следующую команду, чтобы остановить двоичное логирование:
mysql> SET sql_log_bin=0;
-
При резервном копировании сервера, использующего функцию GTID, mysqlbackup создаёт файл с именем
backup_gtid_executed.sql, который можно найти в восстановленном каталоге данных нового сервера реплики. Файл содержит SQL-запрос, который устанавливает параметр конфигурацииGTID_PURGEDна реплике:# On a new replica, issue the following command if GTIDs are enabled: SET @@GLOBAL.GTID_PURGED='f65db8e2-0e1a-11e5-a980-080027755380:1-3';
Он также содержит закомментированную команду
CHANGE MASTER TOдля инициализации реплики:# Use the following command if you want to use the GTID handshake protocol: # CHANGE MASTER TO MASTER_AUTO_POSITION = 1;
Разкомментируйте команду и добавьте необходимые параметры подключения и аутентификации (например,
MASTER_HOST,MASTER_USER,MASTER_PASSWORDиMASTER_PORT):# Use the following command if you want to use the GTID handshake protocol: CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='muser', MASTER_PASSWORD='mpass', MASTER_PORT=18675, MASTER_AUTO_POSITION = 1;
Выполните файл с помощью клиента mysql
mysql> source /
path-to-backup_gtid_executed.sql/backup_gtid_executed.sql -
Установите статусы любых событий, скопированных с источника, в
SLAVESIDE_DISABLED. Например:mysql> UPDATE mysql.event SET status = 'SLAVESIDE_DISABLED';
Удалите записи
skip-slave-startиevent_scheduler=off, которые вы добавили в файлmy.cnfреплики на шаге 2. (Вы также можете оставить записьskip-slave-start, но тогда вам всегда нужно будет использовать оператор для запуска репликации при каждом перезапуске сервера реплики.)Перезапустите сервер реплики. Репликация начнется.
Для получения дополнительной информации о GTID, см. .
© 2025 Oracle
Licensed under the GPLv2 License.