Spec-Zone.ru › MariaDB

ИЗМЕНИТЬ ОСНОВНОЙ

В прошлом для репликации использовались термины мастер и слейв, но сейчас предпочтительнее термины примарный и реплика. Старые термины всё ещё используются в некоторых частях документации и в командах MariaDB, хотя MariaDB 10.5 начала процесс переименования. Процесс документации продолжается. Следите за прогрессом на MDEV-18777.

Синтаксис

CHANGE MASTER ['connection_name'] TO master_def  [, master_def] ... 
  [FOR CHANNEL 'channel_name']

master_def:
    MASTER_BIND = 'interface_name'
  | MASTER_HOST = 'host_name'
  | MASTER_USER = 'user_name'
  | MASTER_PASSWORD = 'password'
  | MASTER_PORT = port_num
  | MASTER_CONNECT_RETRY = interval
  | MASTER_HEARTBEAT_PERIOD = interval
  | MASTER_LOG_FILE = 'master_log_name'
  | MASTER_LOG_POS = master_log_pos
  | RELAY_LOG_FILE = 'relay_log_name'
  | RELAY_LOG_POS = relay_log_pos
  | MASTER_DELAY = interval
  | MASTER_SSL = {0|1}
  | MASTER_SSL_CA = 'ca_file_name'
  | MASTER_SSL_CAPATH = 'ca_directory_name'
  | MASTER_SSL_CERT = 'cert_file_name'
  | MASTER_SSL_CRL = 'crl_file_name'
  | MASTER_SSL_CRLPATH = 'crl_directory_name'
  | MASTER_SSL_KEY = 'key_file_name'
  | MASTER_SSL_CIPHER = 'cipher_list'
  | MASTER_SSL_VERIFY_SERVER_CERT = {0|1}
  | MASTER_USE_GTID = {current_pos|slave_pos|no}
  | MASTER_DEMOTE_TO_SLAVE = bool
  | IGNORE_SERVER_IDS = (server_id_list)
  | DO_DOMAIN_IDS = ([N,..])
  | IGNORE_DOMAIN_IDS = ([N,..])

Описание

Команда CHANGE MASTER задаёт параметры, используемые репликой для подключения к примарному серверу и репликации данных.

MariaDB начиная с 10.7.0

Ключевое слово FOR CHANNEL было добавлено для совместимости с MySQL. Оно идентично использованию имени канала напрямую после CHANGE MASTER.

Репликация с нескольких источников

Если вы используете репликацию с нескольких источников, вам необходимо указать имя соединения при выполнении CHANGE MASTER. Существует два способа сделать это:

  • Установите системную переменную default_master_connection перед выполнением CHANGE MASTER.
  • Установите параметр connection_name при выполнении CHANGE MASTER.

default_master_connection

SET default_master_connection = 'gandalf';
STOP SLAVE;
CHANGE MASTER TO 
   MASTER_PASSWORD='new3cret';
START SLAVE;

имя_соединения

STOP SLAVE 'gandalf';
CHANGE MASTER 'gandalf' TO 
   MASTER_PASSWORD='new3cret';
START SLAVE 'gandalf';

Параметры

Параметры подключения

MASTER_USER

Параметр MASTER_USER для CHANGE MASTER определяет учётную запись пользователя, которую реплика будет использовать для подключения к примарному серверу.

Эта учётная запись пользователя должна иметь привилегию REPLICATION SLAVE (или, начиная с MariaDB 10.5.1, REPLICATION REPLICA на примарном сервере).

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_USER='repl',
   MASTER_PASSWORD='new3cret';
START SLAVE;

Максимальная длина строки MASTER_USER составляет 96 символов до MariaDB 10.5 и 128 символов с MariaDB 10.6.

MASTER_PASSWORD

Параметр MASTER_PASSWORD для CHANGE MASTER определяет пароль, который реплика будет использовать для подключения к примарному серверу под учётной записью пользователя, определённой параметром MASTER_USER.

Например:

STOP SLAVE;
CHANGE MASTER TO 
   MASTER_PASSWORD='new3cret';
START SLAVE;

Максимальная длина строки MASTER_PASSWORD составляет 32 символа. Эффективная максимальная длина зависит от количества байтов на символ и может достигать 96 символов.

Из-за MDEV-29994 пароль может быть тихо обрезан до 41 символа при перезапуске MariaDB. По этой причине рекомендуется использовать пароль короче.

MASTER_HOST

Параметр MASTER_HOST для CHANGE MASTER определяет имя хоста или IP-адрес примарного сервера.

Если вы установите значение параметра MASTER_HOST в пустую строку, это не эквивалентно отсутствию значения параметра. Если вы установите значение параметра MASTER_HOST в пустую строку, то команда CHANGE MASTER завершится с ошибкой. В MariaDB 5.3 и ранее, если вы установите значение параметра MASTER_HOST в пустую строку, то команда CHANGE MASTER выполнится успешно, но последующая команда START SLAVE завершится ошибкой.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_HOST='dbserver1.example.com',
   MASTER_USER='repl',
   MASTER_PASSWORD='new3cret',
   MASTER_USE_GTID=slave_pos;
START SLAVE;

Если вы установите значение параметра MASTER_HOST в команде CHANGE MASTER, то реплика посчитает, что примарный сервер изменился, даже если вы установили то же значение, что и раньше. В этом случае реплика посчитает старые значения имени файла и позиции бинарного лога примарного сервера недействительными для нового примарного сервера. В качестве побочного эффекта, если вы не явно укажете значения параметров MASTER_LOG_FILE и MASTER_LOG_POS в команде, то команда будет неявно дополнена MASTER_LOG_FILE='' и MASTER_LOG_POS=4. Однако, если вы включите режим GTID для репликации, установив параметр MASTER_USE_GTID на значение отличное от no в команде, эти значения будут проигнорированы.

Реплики не могут подключаться к примарным серверам через сокеты Unix или именованные каналы Windows. Реплика должна подключаться к примарному серверу через TCP/IP.

Максимальная длина строки MASTER_HOST составляет 60 символов до MariaDB 10.5 и 255 символов с MariaDB 10.6.

MASTER_PORT

Параметр MASTER_PORT для CHANGE MASTER определяет TCP/IP порт примарного сервера.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_HOST='dbserver1.example.com',
   MASTER_PORT=3307,
   MASTER_USER='repl',
   MASTER_PASSWORD='new3cret',
   MASTER_USE_GTID=slave_pos;
START SLAVE;

Если вы установите значение параметра MASTER_PORT в команде CHANGE MASTER, то реплика посчитает, что примарный сервер изменился, даже если вы установили то же значение, что и раньше. В этом случае реплика посчитает старые значения имени файла и позиции бинарного лога примарного сервера недействительными для нового примарного сервера. В качестве побочного эффекта, если вы не явно укажете значения параметров MASTER_LOG_FILE и MASTER_LOG_POS в команде, то команда будет неявно дополнена MASTER_LOG_FILE='' и MASTER_LOG_POS=4. Однако, если вы включите режим GTID для репликации, установив параметр MASTER_USE_GTID на значение отличное от no в команде, эти значения будут проигнорированы.

Реплики не могут подключаться к примарным серверам через сокеты Unix или именованные каналы Windows. Реплика должна подключаться к примарному серверу через TCP/IP.

MASTER_CONNECT_RETRY

Параметр MASTER_CONNECT_RETRY для CHANGE MASTER определяет количество секунд, которое реплика будет ждать между попытками подключения. По умолчанию 60.

STOP SLAVE;
CHANGE MASTER TO 
   MASTER_CONNECT_RETRY=20;
START SLAVE;

Количество попыток подключения ограничено параметром master_retry_count. Его можно установить как в командной строке, так и в группе параметров сервера в файле опций перед запуском сервера. Например:

[mariadb]
...
master_retry_count=4294967295

MASTER_BIND

Параметр MASTER_BIND для CHANGE MASTER поддерживается только MySQL 5.6.2 и более поздними версиями, а также MySQL NDB Cluster 7.3.1 и более поздними версиями. Этот параметр не поддерживается MariaDB. Подробнее см. MDEV-19248.

Параметр MASTER_BIND для CHANGE MASTER может быть использован на репликах с несколькими сетевыми интерфейсами, чтобы выбрать сетевой интерфейс для подключения к примарному серверу.

MASTER_HEARTBEAT_PERIOD

Параметр MASTER_HEARTBEAT_PERIOD для CHANGE MASTER может быть использован для установки интервала в секундах между ударами сердца репликации. Всякий раз, когда бинарный лог примарного сервера обновляется событием, период ожидания следующего удара сердца сбрасывается.

Параметр interval имеет следующие характеристики:

  • Это десятичное значение в диапазоне от 0 до 4294967 секунд.
  • Он имеет разрешение сотых долей секунды.
  • Его наименьшее допустимое ненулевое значение составляет 0.001.
  • Его значение по умолчанию равно значению системной переменной slave_net_timeout, делённому на 2.
  • Если оно установлено в 0, удары сердца отключены.

Удары сердца отправляются примарным сервером только если в файле бинарного лога нет неопределённых событий в течение периода, превышающего интервал.

Если выполняется команда RESET SLAVE, интервал ударов сердца сбрасывается до значения по умолчанию.

Если системная переменная slave_net_timeout установлена в значение меньше текущего интервала ударов сердца, будет выведено предупреждение.

Параметры TLS

Параметры TLS используются для предоставления информации о TLS. Параметры могут быть установлены даже на репликах, скомпилированных без поддержки TLS. Параметры TLS сохраняются в файле по умолчанию master.info или в файле, настроенном параметром master_info_file, но эти параметры TLS игнорируются, если реплика не поддерживает TLS.

См. Репликация с защищёнными соединениями для получения дополнительной информации.

MASTER_SSL

Параметр MASTER_SSL для CHANGE MASTER указывает реплике, использовать ли TLS для соединения. Допустимые значения 0 или 1. Необходимо установить значение 1 для того, чтобы другие параметры MASTER_SSL* имели какой-либо эффект.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL=1;
START SLAVE;

MASTER_SSL_CA

Параметр MASTER_SSL_CA для CHANGE MASTER определяет путь к файлу PEM, который должен содержать один или несколько сертификатов X509 для доверенных центров сертификации (ЦС), используемых для TLS. Этот параметр требует использования абсолютного пути, а не относительного.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL_CERT='/etc/my.cnf.d/certificates/server-cert.pem',
   MASTER_SSL_KEY='/etc/my.cnf.d/certificates/server-key.pem',
   MASTER_SSL_CA='/etc/my.cnf.d/certificates/ca.pem',
   MASTER_SSL_VERIFY_SERVER_CERT=1;
START SLAVE;

Дополнительную информацию см. в разделе Обзор защищённых соединений: Центры сертификации (ЦС).

Максимальная длина строки MASTER_SSL_CA составляет 511 символов.

MASTER_SSL_CAPATH

Параметр MASTER_SSL_CAPATH для CHANGE MASTER определяет путь к каталогу, который содержит один или несколько файлов PEM, каждый из которых должен содержать один сертификат X509 для доверенного центра сертификации (ЦС), используемого для TLS. Этот параметр требует использования абсолютного пути, а не относительного. Каталог, указанный этим параметром, необходимо обработать с помощью команды openssl rehash.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL_CERT='/etc/my.cnf.d/certificates/server-cert.pem',
   MASTER_SSL_KEY='/etc/my.cnf.d/certificates/server-key.pem',
   MASTER_SSL_CAPATH='/etc/my.cnf.d/certificates/ca/',
   MASTER_SSL_VERIFY_SERVER_CERT=1;
START SLAVE;

Дополнительную информацию см. в разделе Обзор защищённых соединений: Центры сертификации (ЦС).

Максимальная длина строки MASTER_SSL_CA_PATH составляет 511 символов.

MASTER_SSL_CERT

Параметр MASTER_SSL_CERT для CHANGE MASTER определяет путь к файлу сертификата X509, который будет использоваться для TLS. Этот параметр требует использования абсолютного пути, а не относительного.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL_CERT='/etc/my.cnf.d/certificates/server-cert.pem',
   MASTER_SSL_KEY='/etc/my.cnf.d/certificates/server-key.pem',
   MASTER_SSL_CA='/etc/my.cnf.d/certificates/ca.pem',
   MASTER_SSL_VERIFY_SERVER_CERT=1;
START SLAVE;

Максимальная длина строки MASTER_SSL_CERT составляет 511 символов.

MASTER_SSL_CRL

Параметр MASTER_SSL_CRL для CHANGE MASTER определяет путь к файлу PEM, который должен содержать один или несколько отозванных сертификатов X509 для использования в TLS. Этот параметр требует использования абсолютного пути, а не относительного.

Этот параметр поддерживается только если сервер был скомпилирован с OpenSSL. Если сервер был скомпилирован с yaSSL, то этот параметр не поддерживается. Дополнительную информацию о используемых библиотеках на разных платформах см. в разделе TLS и криптографические библиотеки, используемые MariaDB.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL_CERT='/etc/my.cnf.d/certificates/server-cert.pem',
   MASTER_SSL_KEY='/etc/my.cnf.d/certificates/server-key.pem',
   MASTER_SSL_CA='/etc/my.cnf.d/certificates/ca.pem',
   MASTER_SSL_VERIFY_SERVER_CERT=1,
   MASTER_SSL_CRL='/etc/my.cnf.d/certificates/crl.pem';
START SLAVE;

Дополнительную информацию см. в разделе Обзор защищённых соединений: списки отозванных сертификатов (CRL).

Максимальная длина строки MASTER_SSL_CRL составляет 511 символов.

MASTER_SSL_CRLPATH

Параметр MASTER_SSL_CRLPATH для CHANGE MASTER определяет путь к каталогу, который содержит один или несколько файлов PEM, каждый из которых должен содержать один отозванный сертификат X509 для использования в TLS. Этот параметр требует использования абсолютного пути, а не относительного. Каталог, указанный этой переменной, необходимо обработать с помощью команды openssl rehash.

Этот параметр поддерживается только если сервер был скомпилирован с OpenSSL. Если сервер был скомпилирован с yaSSL, то этот параметр не поддерживается. Дополнительную информацию о используемых библиотеках на разных платформах см. в разделе TLS и криптографические библиотеки, используемые MariaDB.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL_CERT='/etc/my.cnf.d/certificates/server-cert.pem',
   MASTER_SSL_KEY='/etc/my.cnf.d/certificates/server-key.pem',
   MASTER_SSL_CA='/etc/my.cnf.d/certificates/ca.pem',
   MASTER_SSL_VERIFY_SERVER_CERT=1,
   MASTER_SSL_CRLPATH='/etc/my.cnf.d/certificates/crl/';
START SLAVE;

Дополнительную информацию см. в разделе Обзор защищённых соединений: списки отозванных сертификатов (CRL).

Максимальная длина строки MASTER_SSL_CRL_PATH составляет 511 символов.

MASTER_SSL_KEY

Параметр MASTER_SSL_KEY для CHANGE MASTER определяет путь к файлу закрытого ключа, который будет использоваться для TLS. Этот параметр требует использования абсолютного пути, а не относительного.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL_CERT='/etc/my.cnf.d/certificates/server-cert.pem',
   MASTER_SSL_KEY='/etc/my.cnf.d/certificates/server-key.pem',
   MASTER_SSL_CA='/etc/my.cnf.d/certificates/ca.pem',
   MASTER_SSL_VERIFY_SERVER_CERT=1;
START SLAVE;

Максимальная длина строки MASTER_SSL_KEY составляет 511 символов.

MASTER_SSL_CIPHER

Параметр MASTER_SSL_CIPHER для CHANGE MASTER определяет список разрешённых шифров или наборов шифров для использования в TLS. Помимо имён шифров, если MariaDB был скомпилирован с OpenSSL, этот параметр может быть установлен на "SSLv3" или "TLSv1.2", чтобы разрешить все шифры SSLv3 или все шифры TLSv1.2. Обратите внимание, что шифры TLSv1.3 не могут быть исключены при использовании OpenSSL, даже с помощью этого параметра. Подробности см. в разделе Использование TLSv1.3.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL_CERT='/etc/my.cnf.d/certificates/server-cert.pem',
   MASTER_SSL_KEY='/etc/my.cnf.d/certificates/server-key.pem',
   MASTER_SSL_CA='/etc/my.cnf.d/certificates/ca.pem',
   MASTER_SSL_VERIFY_SERVER_CERT=1,
   MASTER_SSL_CIPHER='TLSv1.2';
START SLAVE;

Максимальная длина строки MASTER_SSL_CIPHER составляет 511 символов.

MASTER_SSL_VERIFY_SERVER_CERT

Параметр MASTER_SSL_VERIFY_SERVER_CERT для CHANGE MASTER включает проверку серверного сертификата. По умолчанию этот параметр отключён.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_SSL_CERT='/etc/my.cnf.d/certificates/server-cert.pem',
   MASTER_SSL_KEY='/etc/my.cnf.d/certificates/server-key.pem',
   MASTER_SSL_CA='/etc/my.cnf.d/certificates/ca.pem',
   MASTER_SSL_VERIFY_SERVER_CERT=1;
START SLAVE;

Дополнительную информацию см. в разделе Обзор защищённых соединений: Проверка серверного сертификата.

Параметры бинарного журнала

Эти параметры относятся к позиции бинарного журнала на первичном сервере.

MASTER_LOG_FILE

Параметр MASTER_LOG_FILE для CHANGE MASTER может быть использован вместе с MASTER_LOG_POS для указания координат, с которых потоку ввода-вывода реплики (slave's I/O thread) должен начать чтение бинарных логов первичного сервера (binary logs) в следующий раз при запуске потока.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_LOG_FILE='master2-bin.001',
   MASTER_LOG_POS=4;
START SLAVE;

Параметры MASTER_LOG_FILE и MASTER_LOG_POS не могут быть указаны, если также указаны параметры RELAY_LOG_FILE и RELAY_LOG_POS.

Параметры MASTER_LOG_FILE и MASTER_LOG_POS будут фактически проигнорированы, если вы включите режим GTID для репликации, установив параметр MASTER_USE_GTID на значение, отличное от no в запросе.

MASTER_LOG_POS

Параметр MASTER_LOG_POS для CHANGE MASTER может быть использован вместе с MASTER_LOG_FILE для указания координат, с которых потоку ввода-вывода реплики (slave's I/O thread) должен начать чтение бинарных логов первичного сервера (binary logs) в следующий раз при запуске потока.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_LOG_FILE='master2-bin.001',
   MASTER_LOG_POS=4;
START SLAVE;

Параметры MASTER_LOG_FILE и MASTER_LOG_POS не могут быть указаны, если также указаны параметры RELAY_LOG_FILE и RELAY_LOG_POS.

Параметры MASTER_LOG_FILE и MASTER_LOG_POS будут фактически проигнорированы, если вы включите режим GTID для репликации, установив параметр MASTER_USE_GTID на значение, отличное от no в запросе.

Параметры журнала репликации

Эти параметры относятся к позиции журнала репликации на реплике.

RELAY_LOG_FILE

Параметр RELAY_LOG_FILE для CHANGE MASTER может быть использован вместе с параметром RELAY_LOG_POS для указания координат, с которых потоку SQL реплики (replica's SQL thread) должен начать чтение журнала репликации (relay log) в следующий раз при запуске потока.

Обычно команда CHANGE MASTER удаляет все файлы журнала репликации (relay log). Однако, если указаны параметры RELAY_LOG_FILE и/или RELAY_LOG_POS, то существующие файлы журнала репликации (relay log) сохраняются.

При изменении позиции журнала репликации необходимо только остановить поток SQL реплики (replica's SQL thread). Поток ввода-вывода реплики (replica's I/O thread) может продолжить работу. Команды STOP SLAVE и START SLAVE поддерживают параметр SQL_THREAD для этого сценария. Например:

STOP SLAVE SQL_THREAD;
CHANGE MASTER TO
   RELAY_LOG_FILE='slave-relay-bin.006',
   RELAY_LOG_POS=4025;
START SLAVE SQL_THREAD;

При изменении значения этого параметра метаданные о позиции потока SQL реплики (replica's SQL thread) в журналах репликации (relay logs) также будут изменены в файле relay-log.info или в файле, настроенном переменной relay_log_info_file.

Параметры RELAY_LOG_FILE и RELAY_LOG_POS не могут быть указаны, если также указаны параметры MASTER_LOG_FILE и MASTER_LOG_POS.

RELAY_LOG_POS

Параметр RELAY_LOG_POS для CHANGE MASTER может быть использован вместе с параметром RELAY_LOG_FILE для указания координат, с которых поток SQL реплики (replica's SQL thread) должен начать чтение журнала репликации (relay log) в следующий раз при запуске потока.

Обычно команда CHANGE MASTER удаляет все файлы журнала репликации (relay log). Однако, если указаны параметры RELAY_LOG_FILE и/или RELAY_LOG_POS, то существующие файлы журнала репликации (relay log) сохраняются.

При изменении позиции журнала репликации достаточно остановить поток SQL репликации у подчиненного сервера. Поток I/O репликации может продолжать работу. Команды STOP SLAVE и START SLAVE поддерживают опцию SQL_THREAD для этой ситуации. Например:

STOP SLAVE SQL_THREAD;
CHANGE MASTER TO
   RELAY_LOG_FILE='slave-relay-bin.006',
   RELAY_LOG_POS=4025;
START SLAVE SQL_THREAD;

При изменении значения этой опции также будет изменена метаданные о позиции потока SQL репликации в журналах репликации в файле relay-log.info или в файле, настроенном переменной relay_log_info_file.

Опции RELAY_LOG_FILE и RELAY_LOG_POS не могут быть заданы, если также были заданы опции MASTER_LOG_FILE и MASTER_LOG_POS.

Опции GTID

MASTER_USE_GTID

Опция MASTER_USE_GTID для CHANGE MASTER может быть использована для настройки подчиненного сервера использовать глобальный идентификатор транзакции (GTID) при подключении к первичному серверу. Возможные значения:

  • current_pos - Репликация в режиме GTID и использование gtid_current_pos в качестве позиции для начала скачивания транзакций с первичного сервера. Устарело начиная с MariaDB 10.10. Использование для перехода в первичный сервер может нарушить состояние репликации, если подчиненный сервер выполняет локальные транзакции из-за активного обновления gtid_current_pos с использованием gtid_binlog_pos и gtid_slave_pos. Используйте новую, безопасную, опцию MASTER_DEMOTE_TO_SLAVE=<bool> вместо неё.
  • slave_pos - Репликация в режиме GTID и использование gtid_slave_pos в качестве позиции для начала скачивания транзакций с первичного сервера. Начиная с MariaDB 10.5.1, replica_pos является псевдонимом для slave_pos.
  • no - Не выполнять репликацию в режиме GTID.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_USE_GTID = current_pos;
START SLAVE;

Или:

STOP SLAVE;
SET GLOBAL gtid_slave_pos='0-1-153';
CHANGE MASTER TO
   MASTER_USE_GTID = slave_pos;
START SLAVE;

MASTER_DEMOTE_TO_SLAVE

MariaDB начиная с 10.10

Используется для перевода первичного сервера в режим подчиненного сервера. Заменяет устаревшую опцию MASTER_USE_GTID=current_pos более безопасной альтернативой, требуя от пользователя установить Using_Gtid=Slave_Pos и объединив gtid_binlog_pos в gtid_slave_pos один раз во время CHANGE MASTER TO. Если gtid_slave_pos более поздняя, чем gtid_binlog_pos (как в случае цепной репликации), состояние репликации должно сохраниться.

Например:

STOP SLAVE;
CHANGE MASTER TO
   MASTER_DEMOTE_TO_SLAVE = 1;
START SLAVE;

Опции фильтра репликации

См. также Фильтры репликации.

IGNORE_SERVER_IDS

Опция IGNORE_SERVER_IDS для CHANGE MASTER может быть использована для настройки подчиненного сервера для игнорирования событий из журнала двоичных логов, которые произошли на определенных серверах. Отфильтрованные события из журнала двоичных логов не будут записаны в журнал репликации подчиненного сервера и не будут применены им.

Значение опции может быть задано через запятую список значений server_id. Например:

STOP SLAVE;
CHANGE MASTER TO 
   IGNORE_SERVER_IDS = (3,5);
START SLAVE;

Если необходимо очистить ранее заданный список, можно установить значение пустым списком. Например:

STOP SLAVE;
CHANGE MASTER TO 
   IGNORE_SERVER_IDS = ();
START SLAVE;

DO_DOMAIN_IDS

Опция DO_DOMAIN_IDS для CHANGE MASTER может быть использована для настройки подчиненного сервера для применения событий из журнала двоичных логов только если GTID транзакции находится в определенном значении gtid_domain_id. Отфильтрованные события из журнала двоичных логов не будут записаны в журнал репликации подчиненного сервера и не будут применены им.

Значение опции может быть задано через запятую список значений gtid_domain_id. Дублирующиеся значения автоматически игнорируются. Например:

STOP SLAVE;
CHANGE MASTER TO 
   DO_DOMAIN_IDS = (1,2);
START SLAVE;

Если необходимо очистить ранее заданный список, можно установить значение пустым списком. Например:

STOP SLAVE;
CHANGE MASTER TO 
   DO_DOMAIN_IDS = ();
START SLAVE;

Опция DO_DOMAIN_IDS и опция IGNORE_DOMAIN_IDS не могут быть одновременно установлены с непустым значением. Если необходимо установить опцию DO_DOMAIN_IDS, а опция IGNORE_DOMAIN_IDS была ранее установлена, необходимо очистить значение опции IGNORE_DOMAIN_IDS. Например:

STOP SLAVE;
CHANGE MASTER TO 
   IGNORE_DOMAIN_IDS = (), 
   DO_DOMAIN_IDS = (1,2);
START SLAVE;

Опция DO_DOMAIN_IDS может быть задана только если репликация выполняется в режиме GTID. Поэтому, опция MASTER_USE_GTID также должна быть установлена на значение, отличное от no, чтобы использовать эту опцию.

IGNORE_DOMAIN_IDS

Опция IGNORE_DOMAIN_IDS для CHANGE MASTER может быть использована для настройки подчиненного сервера для игнорирования событий из журнала двоичных логов, если GTID транзакции находится в определенном значении gtid_domain_id. Отфильтрованные события из журнала двоичных логов не будут записаны в журнал репликации подчиненного сервера и не будут применены им.

Значение опции может быть задано через запятую список значений gtid_domain_id. Дублирующиеся значения автоматически игнорируются. Например:

STOP SLAVE;
CHANGE MASTER TO 
   IGNORE_DOMAIN_IDS = (1,2);
START SLAVE;

Если необходимо очистить ранее заданный список, можно установить значение пустым списком. Например:

STOP SLAVE;
CHANGE MASTER TO 
   IGNORE_DOMAIN_IDS = ();
START SLAVE;

Опция DO_DOMAIN_IDS и опция IGNORE_DOMAIN_IDS не могут быть одновременно установлены с непустым значением. Если необходимо установить опцию IGNORE_DOMAIN_IDS, а опция DO_DOMAIN_IDS была ранее установлена, необходимо очистить значение опции DO_DOMAIN_IDS. Например:

STOP SLAVE;
CHANGE MASTER TO 
   DO_DOMAIN_IDS = (), 
   IGNORE_DOMAIN_IDS = (1,2);
START SLAVE;

Опция IGNORE_DOMAIN_IDS может быть задана только если репликация выполняется в режиме GTID. Поэтому, опция MASTER_USE_GTID также должна быть установлена на значение, отличное от no, чтобы использовать эту опцию.

Опции задержки репликации

MASTER_DELAY

Опция MASTER_DELAY для CHANGE MASTER может быть использована для включения задержки репликации. Эта опция задаёт время в секундах (минимум), на которое подчиненный сервер должен отставать от первичного сервера, до максимального значения 2147483647, или примерно 68 лет. Перед выполнением события, подчиненный сервер будет ждать, если необходимо, пока не пройдёт заданное время с момента создания события на первичном сервере. Результатом является то, что подчиненный сервер будет отображать состояние первичного сервера с некоторой задержкой в прошлом.

STOP SLAVE;
CHANGE MASTER TO 
   MASTER_DELAY=3600;
START SLAVE;

Изменение значений опций

Если при выполнении команды CHANGE MASTER не указать опцию, то в большинстве случаев её старое значение сохранится. В большинстве случаев нет необходимости указывать опции, которые не нужно изменять. Например, если пароль пользователя, которым подчиненный сервер подключается к первичному серверу, изменился, но другие опции не нужно изменять, то можно просто изменить опцию MASTER_PASSWORD путём выполнения следующих команд:

STOP SLAVE;
CHANGE MASTER TO 
   MASTER_PASSWORD='new3cret';
START SLAVE;

Существуют случаи, когда опции неявно сбрасываются, например, при изменении опций MASTER_HOST и MASTER_PORT.

Сохранение опций

Значения опций MASTER_LOG_FILE и MASTER_LOG_POS (т.е. позиции в журнале двоичных логов на первичном сервере) и большинства других опций записываются в файл master.info по умолчанию или в файл, настроенный опцией master_info_file. Поток I/O репликации следит за обновлением этой позиции в журнале двоичных логов, только если опция MASTER_USE_GTID установлена в NO. В противном случае, файл не обновляется для каждого события.

Опцию master_info_file можно задать как в командной строке, так и в группе опций сервера в файле настроек опций перед запуском сервера. Например:

[mariadb]
...
master_info_file=/mariadb/myserver1-master.info

Значения опций RELAY_LOG_FILE и RELAY_LOG_POS (т.е. позиции в журнале репликации) записываются в файл relay-log.info по умолчанию или в файл, настроенный переменной relay_log_info_file. Поток SQL репликации следит за обновлением этой позиции в журнале репликации при применении событий.

Переменная системы relay_log_info_file может быть установлена либо в командной строке, либо в группе опций сервера в группе опций в файле опций до запуска сервера. Например:

[mariadb]
...
relay_log_info_file=/mariadb/myserver1-relay-log.info

Персистентность GTID

Если репликация копирует события бинарного журнала бинарного журнала, содержащие GTID, то поток SQL реплики потока SQL реплики запишет каждый применённый GTID в таблицу mysql.gtid_slave_pos. Этот GTID можно проверить и изменить через переменную системы gtid_slave_pos.

Если у реплики включена переменная системы log_slave_updates и если у реплики включён бинарный журнал бинарный журнал, то каждое изменение, выполняемое потоком SQL реплики потока SQL реплики, также запишется в бинарный журнал бинарный журнал реплики. Это означает, что GTID реплицированных транзакций будут отражены в значении переменной системы gtid_binlog_pos.

Создание реплики из резервной копии

Оператор CHANGE MASTER полезен для настройки реплики, когда у вас есть резервная копия первичного сервера и соответствующая позиция бинарного журнала бинарного журнала или GTID позиции резервной копии.

После восстановления резервной копии на реплике можно выполнить что-то вроде этого, используя позицию бинарного журнала бинарного журнала:

CHANGE MASTER TO
   MASTER_LOG_FILE='master2-bin.001',
   MASTER_LOG_POS=4;
START SLAVE;

Или можно выполнить что-то вроде этого, используя позицию GTID:

SET GLOBAL gtid_slave_pos='0-1-153';
CHANGE MASTER TO
   MASTER_USE_GTID=slave_pos;
START SLAVE;

Дополнительную информацию о выполнении этой операции с Mariabackup см. в разделе Настройка реплицирующего сервера с Mariabackup.

Пример

В следующем примере изменяются координаты первичного сервера и бинарного журнала первичного сервера. Это используется при настройке реплики для репликации первичного сервера:

CHANGE MASTER TO
   MASTER_HOST='master2.mycompany.com',
   MASTER_USER='replication',
   MASTER_PASSWORD='bigs3cret',
   MASTER_PORT=3306,
   MASTER_LOG_FILE='master2-bin.001',
   MASTER_LOG_POS=4,
   MASTER_CONNECT_RETRY=10;
START SLAVE;

См. также

  • Настройка репликации
  • START SLAVE
  • Репликация с нескольких источников
  • RESET SLAVE. Удаляет подключение, созданное с помощью CHANGE MASTER TO.
  • Глобальный идентификатор транзакции
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом контенте, не обязательно отражают позицию MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/change-master-to/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API