19.1.3.4 Настройка репликации с использованием GTID
В этом разделе описывается процесс настройки и запуска репликации на основе GTID в MySQL 8.4. Это процедура «холодного запуска», предполагающая, что вы запускаете сервер-источник впервые или что его можно остановить; информацию о предоставлении реплик с использованием GTID с работающего сервера-источника см. в разделе 19.1.3.5 «Использование GTID для переключения и масштабирования». Информацию о изменении режима GTID на работающих серверах см. в разделе 19.1.4 «Изменение режима GTID на работающих серверах».
Основные шаги этого процесса запуска для самой простой топологии репликации GTID, состоящей из одного источника и одной реплики, следующие:
Если репликация уже запущена, синхронизируйте оба сервера, сделав их только для чтения.
Остановите оба сервера.
-
Перезапустите оба сервера с включенными GTID и правильными настроенными параметрами.
Параметры mysqld, необходимые для запуска серверов, как описано, обсуждаются в примере, приведенном далее в этом разделе.
Укажите реплике использовать источник в качестве источника данных репликации и использовать автоматическое позиционирование. SQL-команды, необходимые для выполнения этого шага, описаны в примере, приведенном далее в этом разделе.
Создайте новую резервную копию. Двоичные журналы, содержащие транзакции без GTID, не могут использоваться на серверах, где включены GTID, поэтому резервные копии, созданные до этого момента, не могут быть использованы с новой конфигурацией.
Запустите реплику, затем отключите режим только для чтения на обоих серверах, чтобы они могли принимать обновления.
В следующем примере два сервера уже работают как источник и реплика, используя протокол репликации MySQL на основе позиции двоичного журнала. Если вы начинаете с новых серверов, см. раздел 19.1.2.3 «Создание пользователя для репликации», чтобы узнать о добавлении определенного пользователя для подключений репликации, и раздел 19.1.2.1 «Установка конфигурации источника репликации», чтобы узнать о настройке переменной server_id. Следующие примеры показывают, как сохранять параметры запуска mysqld в файле параметров сервера, см. раздел 6.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-replica-start. Дополнительную информацию о параметрах и переменных, связанных с GTID, см. в разделе 19.1.6.5 «Переменные системы глобальной системы идентификаторов транзакций».
Включение двоичного журналирования не обязательно для использования GTID при использовании таблицы mysql.gtid_executed. Серверы-источники всегда должны иметь включенное двоичное журналирование, чтобы иметь возможность выполнять репликацию. Однако серверы-реплики могут использовать GTID, но без двоичного журналирования. Если вам нужно отключить двоичное журналирование на сервере-реплике, вы можете сделать это, указав параметры --skip-log-bin и --log-replica-updates=OFF для реплики.
Шаг 4: Настройте реплику для использования автоматического позиционирования на основе GTID. Укажите реплике использовать источник с транзакциями на основе GTID в качестве источника данных репликации и использовать автоматическое позиционирование на основе GTID вместо позиционирования на основе файлов. Выполните оператор CHANGE REPLICATION SOURCE TO на реплике, включая параметр SOURCE_AUTO_POSITION в операторе, чтобы указать реплике, что транзакции источника идентифицируются по GTID.
Вам также может потребоваться предоставить соответствующие значения для имени хоста и номера порта источника, а также имя пользователя и пароль учетной записи пользователя репликации, которая может использоваться репликой для подключения к источнику; если они уже были установлены до шага 1 и больше не требуют изменений, соответствующие параметры можно безопасно опустить из показанного здесь оператора.
mysql> CHANGE REPLICATION SOURCE TO
> SOURCE_HOST = host,
> SOURCE_PORT = port,
> SOURCE_USER = user,
> SOURCE_PASSWORD = password,
> SOURCE_AUTO_POSITION = 1;
Шаг 5: Создайте новую резервную копию. Существующие резервные копии, созданные до включения GTID, больше не могут использоваться на этих серверах. На этом этапе создайте новую резервную копию, чтобы у вас не было проблем с резервными копиями.
Например, можно выполнить FLUSH
LOGS на сервере, где выполняются резервные копии. Затем либо явно создайте резервную копию, либо подождите следующей итерации любого запланированного вами периодического процесса резервного копирования.
Шаг 6: Запустите реплику и отключите режим только для чтения. Запустите реплику так:
mysql> START REPLICA;
Следующий шаг необходим только в том случае, если вы настроили сервер на режим только для чтения на шаге 1. Чтобы снова разрешить серверу принимать обновления, выполните следующую команду:
mysql> SET @@GLOBAL.read_only = OFF;
Теперь репликация на основе GTID должна работать, и вы можете начать (или возобновить) работу со источником, как и прежде. Раздел 19.1.3.5 «Использование GTID для переключения и масштабирования» обсуждает создание новых реплик при использовании GTID.
© 2025 Oracle
Licensed under the GPLv2 License.