19.1.3.4 Настройка репликации с использованием GTID
В этом разделе описан процесс настройки и запуска репликации на основе GTID в MySQL 9.2. Это процедура «холодного запуска», предполагающая, что вы запускаете сервер источника впервые или что его можно остановить; для получения информации о развертывании реплик с использованием 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, больше не могут использоваться на этих серверах после включения 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.