Spec-Zone.ru › MySQL 8.4

19.4.6 Репликация разных баз данных на разные реплики

Возможны ситуации, когда у вас есть один сервер-источник и вы хотите реплицировать разные базы данных на разные реплики. Например, вы можете распределить разные данные о продажах по разным отделам, чтобы помочь распределять нагрузку во время анализа данных. Пример такой схемы показан на рисунке 19.2, «Репликация баз данных на отдельные реплики».

Рисунок 19.2 Репликация баз данных на отдельные реплики

The MySQL source has three databases, databaseA, databaseB, and databaseC. databaseA is replicated only to MySQL Replica 1, databaseB is replicated only to MySQL Replica 2, and databaseC is replicated only to MySQL Replica 3.

Вы можете добиться этого разделения, настроив источник и реплики как обычно, а затем ограничив двоичные журналы, которые обрабатывает каждая реплика, используя опцию конфигурации --replicate-wild-do-table на каждой реплике.

Важно

Не следует использовать --replicate-do-db для этой цели при использовании репликации на основе инструкций, поскольку репликация на основе инструкций приводит к тому, что эффект этой опции меняется в зависимости от базы данных, которая в данный момент выбрана. Это также относится к репликации смешанного формата, так как это позволяет некоторым обновлениям реплицироваться в формате на основе инструкций.

Однако использование --replicate-do-db для этой цели должно быть безопасным, если используется только репликация на основе строк, поскольку в этом случае текущая выбранная база данных не влияет на работу опции.

Например, чтобы поддерживать разделение, как показано на рисунке 19.2, «Репликация баз данных на отдельные реплики», следует настроить каждую реплику следующим образом, прежде чем выполнять START REPLICA:

  • Реплика 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.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/replication-solutions-partitioning.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API