Spec-Zone .ru
спецификации, руководства, описания, API

16.1.3.2. Установка Репликации Используя GTIDs

Этот раздел описывает процесс для конфигурирования и запуска GTID-на-основе репликации в MySQL 5.7. Это - процедура ""холодного "запуска", которая предполагает или что Вы запускаете ведущее устройство репликации впервые, или что возможно остановить это; для информации о настройке ведомых устройств репликации, используя GTIDs от рабочего ведущего устройства, см. Раздел 16.1.3.3, "Используя GTIDs для Failover и Scaleout".

Ключевые шаги в этом процессе запуска для самой простой топологии репликации GTID — состоящий из одного ведущего устройства и одного ведомого устройства — следующие:

  1. Если репликация уже работает, синхронизируйте оба сервера, делая их только для чтения.

  2. Остановка оба сервера.

  3. Перезапустите оба сервера с GTIDs, двоичным журналированием, и ведомым журналированием обновления, включенным, и с операторами, которые опасны для GTID-на-основе отключенной репликации. Кроме того, серверы должны быть запущены в режиме только для чтения, и ведомому SQL и потокам ввода-вывода нужно препятствовать запуститься на ведомом устройстве.

    mysqld опции, необходимые, чтобы запустить серверы как описано, обсуждаются в примере, который следует позже в этом разделе.

  4. Дайте ведомому устройству команду использовать ведущее устройство в качестве источника данных репликации и использовать авторасположение, и затем запускать ведомое устройство.

    SQL-операторы должны были выполнить этот шаг, описываются в примере, который следует позже в этом разделе.

  5. Отключите режим только для чтения на обоих серверах, так, чтобы они могли еще раз принять обновления.

Мы теперь представляем более подробный пример. Мы принимаем два сервера, уже работающие как ведущее устройство и ведомое устройство, используя "классический" основанный на файле протокол репликации MySQL.

Большинство шагов, которые следуют, требует использования MySQL root считайте или другая учетная запись пользователя MySQL, которая имеет SUPER полномочие. mysqladmin shutdown требует любого SUPER полномочие или SHUTDOWN полномочие.

Шаг 1: Синхронизируйте серверы. Сделайте серверы только для чтения. Чтобы сделать это, включите read_only системная переменная, выполняя следующий оператор на обоих серверах:

mysql> SET @@global.read_only =
        ON;

Затем, позвольте ведомому устройству догонять ведущее устройство. Чрезвычайно важно, чтобы Вы удостоверились, что ведомое устройство обработало все обновления перед продолжением.

Шаг 2: Остановка оба сервера. Остановите каждый сервер, используя mysqladmin как показано здесь, где username и password имя пользователя и пароль для пользователя MySQL, имеющего достаточные полномочия завершить работу сервера:

shell> mysqladmin -uusername
        -ppassword shutdown

Шаг 3: Перезапустите оба сервера с включенным GTIDs. Чтобы включить двоичному журналированию с глобальными идентификаторами транзакции, каждый сервер должен быть запущен с режима GTID, двоичного журналирования, ведомого журналирования обновления, включенного, и с операторами, которые опасны для GTID-на-основе отключенной репликации. Кроме того, следует препятствовать тому, чтобы нежелательные или случайные обновления были выполнены на любом сервере, запуская обоих в режиме только для чтения также. Это означает, что оба сервера должны быть запущены с (по крайней мере), вариантов, показывавших в следующем вызове mysqld_safe:

shell> mysqld_safe --gtid_mode=ON --log-bin
        --log-slave-updates --enforce-gtid-consistency & 

Кроме того, следует запустить ведомое устройство с --skip-slave-start опция наряду с другими параметрами сервера, определенными в примере, только показанном.

Хотя это может казаться это --gtid-mode булево, это не (фактически, его значения перечисляются). Используйте одно из значений ON или OFF только, устанавливая эту опцию. Используя числовое значение такой как 0 или 1 может привести к неожиданным результатам.

Для получения дополнительной информации о --gtid-mode и --enforce-gtid-consistency параметры сервера, см. Раздел 16.1.4.5, "Глобальные Опции ID Транзакции и Переменные".

В зависимости от Ваших обстоятельств можно хотеть или должны предоставить дополнительные опции к mysqld_safe (или другой сценарий запуска mysqld).

Шаг 4: Направьте ведомое устройство, чтобы использовать ведущее устройство. Дайте ведомому устройству команду использовать ведущее устройство в качестве источника данных репликации, и использовать GTID-на-основе авторасположение, а не основанное на файле расположение. Можно сделать это, выполняясь a CHANGE MASTER TO оператор на ведомом устройстве, используя MASTER_AUTO_POSITION опция, чтобы сказать ведомое устройство, что транзакции будут идентифицированы GTIDs.

Вы, возможно, также должны предоставить соответствующие значения для имени хоста ведущего устройства и номера порта так же как имени пользователя и пароля для учетной записи пользователя репликации, которая может использоваться ведомым устройством, чтобы соединиться с ведущим устройством; если они были уже установлены до Шага 1, и никакие дальнейшие изменения не должны быть произведены, соответствующие опции могут безопасно быть опущены от оператора, показанного здесь.

mysql> CHANGE MASTER TO      >     MASTER_HOST = host,     >     MASTER_PORT = port,     >     MASTER_USER = user,     >     MASTER_PASSWORD = password,     >     MASTER_AUTO_POSITION = 1;

Ни один MASTER_LOG_FILE опция, ни MASTER_LOG_POS опция может использоваться с MASTER_AUTO_POSITION набор, равный 1. Попытка сделать так причины CHANGE MASTER TO оператор, чтобы перестать работать с ошибкой. (Если Вы должны вернуться от GTID-на-основе репликации до репликации, основанной на файлах и позициях, следует использовать один или обе из этих опций вместе с MASTER_AUTO_POSITION = 0 в CHANGE MASTER TO оператор.)

Принятие, что CHANGE MASTER TO оператор успешно выполнился, можно тогда запустить ведомое устройство, как это:

mysql> START SLAVE;

Шаг 5: Отключите режим только для чтения. Позвольте обоим серверам начинать принимать обновления еще раз, выполняя следующий оператор на каждом из них:

mysql> SET @@global.read_only = OFF;

GTID-на-основе репликация должна теперь работать, и можно начать (или резюме) действие на ведущем устройстве как прежде. Раздел 16.1.3.3, "Используя GTIDs для Failover и Scaleout", обсуждает создание новых ведомых устройств при использовании GTIDs.