8.1 Настройка нового реплики
MySQL Enterprise Backup позволяет настроить сервер-реплику (ниже именуемый «реплика») путем резервного копирования исходного сервера (ниже именуемого «источник») и восстановления резервной копии на новую реплику без остановки источника.
Для серверов, НЕ использующих GTID:
-
Сделайте полную резервную копию источника и затем, например, используйте команду
copy-back-and-apply-log, чтобы восстановить резервную копию и файлы журналов в соответствующие каталоги новой реплики и подготовить данные.ПримечаниеНе используйте опцию
--no-lockingпри резервном копировании сервера, иначе вы не сможете получить правильную позицию двоичного журнала на шаге 4 ниже для инициализации реплики. Отредактируйте файл
my.cnfновой реплики и поместитеevent_scheduler=off(если источник использует ) в раздел[mysqld].-
Запустите новую реплику mysqld. В выводе сервера вы увидите следующее:
… InnoDB: Last MySQL binlog file position 0 128760007, file name ./hundin-bin.000006 …
Хотя отображена позиция двоичного журнала, это НЕ обязательно самая последняя позиция двоичного журнала на резервном сервере, так как InnoDB не сохраняет информацию о позиции двоичного журнала для операций DDL или любых изменений в таблицах, не являющихся InnoDB. Не используйте эту позицию двоичного журнала для инициализации реплики. Следующий шаг объясняет, как найти правильную позицию двоичного журнала для использования.
-
Найдите файл
, гдеdatadir/meta/backup_variables.txt- это каталог данных новой реплики. Просмотрите файл, чтобы извлечь последнюю позицию двоичного журнала и соответствующий номер файла журнала:datadirbinlog_position=hundin-bin.000006:128760128
-
Используйте SQL-запрос
CHANGE REPLICATION SOURCE TOи информацию, полученную на последнем шаге, для правильной инициализации реплики:CHANGE REPLICATION SOURCE TO SOURCE_LOG_FILE='hundin-bin.000006', SOURCE_LOG_POS=128760128;
-
Установите статус любых событий, скопированных с источника, в
DISABLE ON REPLICA. Например:mysql> ALTER EVENT mysql.event DISABLE ON REPLICA;
Удалите строку
skip-replica-startи записиevent_scheduler=off, добавленные в файлmy.cnfреплики на шаге 2. (Вы также можете оставить записьskip-replica-start, но тогда вам всегда потребуется использовать запрос для запуска репликации при каждом перезапуске сервера реплики.)Перезапустите сервер реплики. Репликация начнется.
Для серверов, использующих GTID (см. , как настроить серверы для использования GTID):
Сделайте полную резервную копию источника и затем, например, используйте команду
copy-back-and-apply-log, чтобы восстановить резервную копию и файлы журналов в соответствующие каталоги новой реплики с поддержкой GTID и подготовить данные.Отредактируйте файл
my.cnfновой реплики и поместитеskip-replica-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';
Он также содержит закомментированный запрос для инициализации реплики:
# Use the following command if you want to use the GTID handshake protocol: # CHANGE REPLICATION SOURCE TO SOURCE_AUTO_POSITION = 1;
Раскомментируйте команду и добавьте необходимые параметры подключения и аутентификации (например,
SOURCE_HOST,SOURCE_USER,SOURCE_PASSWORDиSOURCE_PORT):# Use the following command if you want to use the GTID handshake protocol: CHANGE REPLICATION SOURCE TO SOURCE_HOST='127.0.0.1', SOURCE_USER='muser', SOURCE_PASSWORD='mpass', SOURCE_PORT=18675, SOURCE_AUTO_POSITION = 1;
Выполните файл с помощью клиента mysql
mysql> source /
path-to-backup_gtid_executed.sql/backup_gtid_executed.sql -
Установите статус любых событий, скопированных с источника, в
DISABLE ON REPLICA. Например:mysql> ALTER EVENT mysql.event DISABLE ON REPLICA;
Удалите записи
skip-replica-startиevent_scheduler=off, добавленные в файлmy.cnfреплики на шаге 2. (Вы также можете оставить записьskip-replica-start, но тогда вам всегда потребуется использовать запрос для запуска репликации при каждом перезапуске сервера реплики.)Перезапустите сервер реплики. Репликация начнется.
Дополнительную информацию о GTID см. в .
© 2025 Oracle
Licensed under the GPLv2 License.