16.1.3.4 Настройка репликации с использованием GTID
В этом разделе описывается процесс настройки и запуска репликации на основе GTID в MySQL 5.7. Это процедура «холодного запуска», предполагающая, что вы запускаете сервер источника репликации впервые или что его можно остановить; для получения информации о подготовке реплик с использованием GTID от работающего источника см. Раздел 16.1.3.5, «Использование GTID для переключения и масштабирования». Для получения информации о изменении режима GTID на работающих серверах см. Раздел 16.1.4, «Изменение режимов репликации на работающих серверах».
Ключевые этапы этого процесса запуска для самой простой топологии репликации GTID, состоящей из одного источника и одной реплики, следующие:
Если репликация уже запущена, синхронизируйте оба сервера, сделав их только для чтения.
Остановите оба сервера.
-
Перезапустите оба сервера с включенными GTID и правильными настроенными параметрами.
Параметры mysqld, необходимые для запуска серверов, как описано, обсуждаются в примере, приведенном ниже в этом разделе.
Укажите реплике использовать источник в качестве источника данных репликации и использовать автоматическое позиционирование. SQL-запросы, необходимые для выполнения этого шага, описаны в примере, приведенном ниже в этом разделе.
Сделайте новый резервную копию. Двоичные журналы, содержащие транзакции без GTID, нельзя использовать на серверах, где включены GTID, поэтому резервные копии, сделанные до этого момента, нельзя использовать с вашей новой конфигурацией.
Запустите реплику, затем отключите режим только для чтения на обоих серверах, чтобы они могли принимать обновления.
В следующем примере два сервера уже работают как источник и реплика, используя протокол репликации MySQL на основе позиции двоичного журнала. Если вы начинаете с новых серверов, см. Раздел 16.1.2.2, «Создание пользователя для репликации» для информации о добавлении конкретного пользователя для подключений репликации и Раздел 16.1.2.1, «Настройка конфигурации источника репликации» для получения информации о настройке переменной server_id. В следующих примерах показано, как сохранять параметры запуска mysqld в файле параметров сервера, см. Раздел 4.2.2.2, «Использование файлов параметров» для получения дополнительной информации. В качестве альтернативы вы можете использовать параметры запуска при запуске mysqld.
Большинство следующих шагов требуют использования учетной записи MySQL root или другой учетной записи пользователя MySQL, имеющей привилегию SUPER. mysqladmin shutdown требует либо привилегию SUPER, либо привилегию SHUTDOWN.
Шаг 1: Синхронизация серверов. Этот шаг необходим только при работе с серверами, которые уже выполняют репликацию без использования GTID. Для новых серверов переходите к шагу 3. Сделайте серверы только для чтения, установив переменную системы read_only в значение ON на каждом сервере, выполнив следующее:
mysql> SET @@GLOBAL.read_only = ON;
Подождите, пока все текущие транзакции будут подтверждены или отменены. Затем позвольте реплике догнать источник. Крайне важно убедиться, что реплика обработала все обновления, прежде чем продолжить.
Если вы используете двоичные журналы для чего-то, кроме репликации, например, для резервного копирования и восстановления по состоянию на определенный момент времени, подождите, пока вам больше не понадобятся старые двоичные журналы, содержащие транзакции без GTID. В идеале подождите, пока сервер не очистит все двоичные журналы, и подождите истечения срока действия любой существующей резервной копии.
Важно понимать, что журналы, содержащие транзакции без GTID, нельзя использовать на серверах, где включены GTID. Перед продолжением вы должны быть уверены, что транзакции без GTID больше нигде в топологии не существуют.
Шаг 2: Остановка обоих серверов. Остановите каждый сервер с помощью mysqladmin, как показано здесь, где username — имя пользователя MySQL, имеющего достаточные привилегии для остановки сервера:
$> mysqladmin -uusername -p shutdown
Затем введите пароль этого пользователя в ответ на запрос.
Шаг 3: Запуск обоих серверов с включенными GTID. Для включения репликации на основе GTID каждый сервер должен быть запущен с включенным режимом GTID, установив переменную gtid_mode в значение ON и включив переменную enforce_gtid_consistency, чтобы убедиться, что в журналы записываются только те заявления, которые безопасны для репликации на основе GTID. Например:
gtid_mode=ON
enforce-gtid-consistency=ON
Кроме того, вы должны запускать реплики с параметром --skip-slave-start, прежде чем настраивать параметры реплики. Для получения дополнительной информации об параметрах и переменных, связанных с GTID, см. Раздел 16.1.6.5, «Переменные системы глобальной системы идентификаторов транзакций».
Включение двоичного протоколирования не обязательно для использования GTID при использовании Таблицы mysql.gtid_executed. Сервер источника репликации должен всегда иметь включенное двоичное протоколирование, чтобы иметь возможность выполнять репликацию. Однако серверы реплик могут использовать GTID, но без двоичного протоколирования. Если вам нужно отключить двоичное протоколирование на реплике, вы можете сделать это, указав параметры --skip-log-bin и --log-slave-updates=OFF для реплики.
Шаг 4: Настройка реплики для использования автоматического позиционирования на основе GTID. Укажите реплике использовать источник с транзакциями на основе GTID в качестве источника данных репликации и использовать автоматическое позиционирование на основе GTID вместо позиционирования на основе файлов. Выполните оператор CHANGE MASTER TO на реплике, включая параметр MASTER_AUTO_POSITION в операторе, чтобы указать реплике, что транзакции источника идентифицируются с помощью GTID.
Вам также может потребоваться указать соответствующие значения для имени хоста и номера порта источника, а также имя пользователя и пароль для учетной записи пользователя репликации, которую реплика может использовать для подключения к источнику; если эти значения были уже заданы до шага 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 завершится ошибкой.
Шаг 5: Создание новой резервной копии. Существующие резервные копии, созданные до включения GTID, больше не могут использоваться на этих серверах после того, как вы включили GTID. В этом месте создайте новую резервную копию, чтобы не остаться без пригодной резервной копии.
Например, вы можете выполнить FLUSH
LOGS на сервере, где вы создаёте резервные копии. Затем либо создайте резервную копию явно, либо подождите следующей итерации любой периодической процедуры резервного копирования, которую вы могли настроить.
Шаг 6: Запуск реплики и отключение режима только для чтения. Запустите реплику следующим образом:
mysql> START SLAVE;
Следующий шаг необходим только в том случае, если вы настроили сервер в режиме только для чтения на шаге 1. Чтобы разрешить серверу снова принимать обновления, выполните следующий запрос:
mysql> SET @@GLOBAL.read_only = OFF;
Репликация на основе GTID теперь должна работать, и вы можете начать (или возобновить) работу с источником как раньше. Раздел 16.1.3.5, «Использование GTID для переключения и масштабирования» описывает создание новых реплик при использовании GTID.
© 2025 Oracle
Licensed under the GPLv2 License.