У меня есть база данных myDB на удаленном сервере (master), в котором есть таблица myTBL с некоторыми записями. Я хочу синхронизировать удаленную базу данных с моим локальным (ведомым) с помощью MySQL Replication . Итак, я создал пользователя репликации в master, а также базу данных с именем myDB и таблицей myTBL в localhost.
Я хочу использовать метод GTIDsчтобы синхронизировать мои базы данных, потому что на веб-сайте MySQL есть описание:
MySQL 8.0 поддерживает различные методы репликации. Традиционный метод основан на репликации событий из двоичного журнала ведущего устройства и требует синхронизации файлов журнала и позиций в них между главным и подчиненным устройствами. Более новый метод, основанный на глобальных идентификаторах транзакций (GTID), является транзакционным и поэтому не требует работы с файлами журналов или позициями в этих файлах, что значительно упрощает многие распространенные задачи репликации.
My master MySQL mysqld.cnf имеет:
server_id=1
enforce_gtid_consistency = on
gtid_mode = on
log_bin
log_slave_updates
и имеет статус:
File: ***-bin.000001
Position: 314969
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 9a670a45-be0a-11e9-be56-52540055d8e4:1-368
и мой бальзам mysqld.cnf имеет:
server-id = 2
read_only = 1
gtid_mode=ON
enforce-gtid-consistency=ON
skip-slave-start=ON
и я использую следующие команды, чтобы начать синхронизацию в ведомом устройстве:
CHANGE MASTER TO MASTER_HOST='***', MASTER_USER='***', MASTER_PASSWORD='***', MASTER_AUTO_POSITION=1;
start slave;
И все в порядке с этим состоянием в ведомом устройстве:
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Итак, каждый новыйзапись, вставленная в основную базу данных, синхронизируется с моей ведомой (localhost) базой данных. Но записи, которые вставляются перед синхронизацией, не помещаются в localhost. Как я могу их синхронизировать? Или, другими словами, как начать синхронизацию с первых записей? (Я видел на некоторых сайтах, которые предлагали использовать mysqldump для вывода первых данных, есть ли лучший способ?)