16.3.5 Репликация разных баз данных на разные реплики
В некоторых ситуациях у вас может быть один источник, и вы хотите реплицировать разные базы данных на разные реплики. Например, вы можете распределять разные данные о продажах в разные отделы, чтобы помочь распределить нагрузку во время анализа данных. Пример такой схемы показан на рисунке 16.2, «Репликация баз данных на отдельные реплики».
Рисунок 16.2 Репликация баз данных на отдельные реплики
Вы можете добиться этого разделения, настроив источник и реплики как обычно, а затем ограничив двоичные логические заявления, обрабатываемые каждой репликой, используя параметр конфигурации --replicate-wild-do-table на каждой реплике.
Не следует использовать --replicate-do-db для этой цели при использовании репликации на основе заявлений, так как репликация на основе заявлений приводит к тому, что действие этого параметра изменяется в зависимости от базы данных, которая в настоящее время выбрана. Это также относится к репликации смешанного формата, так как это позволяет некоторым обновлениям реплицироваться в формате на основе заявлений.
Однако использование --replicate-do-db для этой цели должно быть безопасным, если используется только репликация на основе строк, поскольку в этом случае текущая выбранная база данных не влияет на работу параметра.
Например, чтобы обеспечить разделение, как показано на рисунке 16.2, «Репликация баз данных на отдельные реплики», следует настроить каждую реплику следующим образом, перед выполнением START SLAVE:
Реплика 1 должна использовать
--replicate-wild-do-table=databaseA.%.Реплика 2 должна использовать
--replicate-wild-do-table=databaseB.%.Реплика 3 должна использовать
--replicate-wild-do-table=databaseC.%.
Каждая реплика в этой конфигурации получает весь двоичный журнал из источника, но выполняет только те события из двоичного журнала, которые относятся к базам данных и таблицам, включенным параметром --replicate-wild-do-table, действующим на этой реплике.
Если данные должны быть синхронизированы с репликами до начала репликации, у вас есть несколько вариантов:
Синхронизировать все данные на каждой реплике и удалить базы данных, таблицы или их сочетание, которые вы не хотите сохранять.
Используйте mysqldump, чтобы создать отдельный файл дампа для каждой базы данных и загрузить соответствующий файл дампа на каждую реплику.
-
Используйте дамп файла с исходными данными и включайте только те файлы и базы данных, которые вам нужны для каждой реплики.
ПримечаниеЭто не работает с базами данных
InnoDB, если вы не используетеinnodb_file_per_table.
© 2025 Oracle
Licensed under the GPLv2 License.