Поделиться через


Репликация данных в Базе данных Azure для MySQL (гибкий сервер)

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер

Репликация данных позволяет синхронизировать данные с внешнего сервера MySQL в База данных Azure для MySQL гибкий экземпляр сервера. Внешний сервер может быть локальным, на виртуальных машинах, База данных Azure для MySQL одном сервере или в службе базы данных, размещенной другими поставщиками облачных служб. Репликация данных основана на расположении файла в двоичном журнале (binlog) или репликации на основе GTID. Дополнительные сведения о репликации двоичных журналов см. в разделе "Репликация MySQL".

Примечание.

Настройка репликации данных для серверов с поддержкой высокой доступности поддерживается только с помощью репликации на основе GTID.

Когда следует использовать Репликацию входных данных

Ниже приведены основные сценарии с применением Репликации входных данных:

  • Гибридная Синхронизация данных хронизация: при репликации данных можно синхронизировать данные между локальными серверами и База данных Azure для MySQL гибким сервером. Эта синхронизация помогает создавать гибридные приложения. Этот метод удобен, если у вас есть локальный сервер базы данных, но вы хотите переместить данные в регион, который расположен ближе к пользователям.
  • Многооблачная синхронизация. Для сложных облачных решений используйте репликацию данных в облаке для синхронизации данных между гибким сервером База данных Azure для MySQL и различными поставщиками облачных служб, включая виртуальные машины и службы баз данных, размещенные в этих облаках.
  • Миграция: клиенты могут перенести в минимальное время с помощью таких средств с открытым кодом, как MyDumper/MyLoader с репликацией данных. При использовании Репликации входных данных возможна выборочная прямая миграция рабочей нагрузки из исходной базы данных в целевую.

Используйте Azure Database Migration Service(DMS) для сценариев миграции.

Рекомендации и ограничения

Нереплицируемые данные

Системная база данных MySQL на исходном сервере не реплицируется. Кроме того, изменения учетных записей и разрешений на исходном сервере не реплицируются. Если вы создаете на исходном сервере учетную запись, которой требуется доступ к серверу-реплике, вручную создайте ту же учетную запись на сервере-реплике. Сведения о таблицах в системной базе данных см. в руководстве mySQL.

Репликация данных поддерживается на серверах с поддержкой высокой доступности (HA)

Поддержка репликации данных для сервера с поддержкой высокой доступности (HA) доступна только через репликацию на основе GTID.

Хранимая процедура репликации с помощью GTID доступна на всех серверах с поддержкой высокого уровня доступности по имени mysql.az_replication_change_master_with_gtid.

Фильтр

replicate_wild_ignore_table Параметр создает фильтр репликации для таблиц на сервере реплики. Чтобы изменить этот параметр из портал Azure, перейдите к База данных Azure для MySQL гибкому экземпляру сервера, используемому в качестве реплики, и выберите "Параметры сервера", чтобы просмотреть или изменить replicate_wild_ignore_table параметр.

Требования

  • На исходном сервере должна быть установлена версия MySQL не ниже 5.7.

  • Мы рекомендуем использовать исходный сервер и сервер-реплику одной версии. Например, оба должны быть MySQL версии 5.7 или mySQL версии 8.0.

  • Наша рекомендация состоит в том, чтобы иметь первичный ключ в каждой таблице. Если у нас есть таблица без первичного ключа, может возникнуть замедление репликации.

  • Исходный сервер должен использовать ядро InnoDB MySQL.

  • Пользователь должен иметь правильные разрешения на настройку двоичного ведения журнала и создание новых пользователей на исходном сервере.

  • Двоичные файлы журнала на исходном сервере не должны очищаться до того, как реплика применит эти изменения. Если источник База данных Azure для MySQL гибким сервером, см. инструкции по настройке binlog_expire_logs_seconds для гибкого сервера или отдельного сервера.

  • Если на исходном сервере включен SSL, необходимо включить SSL-сертификат ЦС, предоставленный для домена, в хранимую процедуру mysql.az_replication_change_master. См. следующие примеры и параметр master_ssl_ca.

  • Убедитесь, что компьютер, на котором размещен исходный сервер, разрешает входящий и исходящий трафик на порту 3306.

  • При использовании общедоступного доступа убедитесь, что исходный сервер имеет общедоступный IP-адрес, что DNS является общедоступным или что исходный сервер имеет полное доменное имя (FQDN). Если у вас есть частная конечная точка и отключен общедоступный доступ, репликация данных не поддерживается

  • При частном доступе (интеграция с виртуальной сетью) убедитесь, что имя исходного сервера можно разрешить и получить доступ из виртуальной сети, где выполняется База данных Azure для MySQL гибкий экземпляр сервера. (Дополнительные сведения см. в разделе Разрешение имен для ресурсов в виртуальных сетях Azure).

Созданный невидимый первичный ключ

Для MySQL версии 8.0 и выше созданные невидимые первичные ключи (GIPK) по умолчанию включены для всех База данных Azure для MySQL гибких экземпляров сервера. Серверы MySQL 8.0+ добавляют невидимый столбец my_row_id в таблицы и первичный ключ в этом столбце, где таблица InnoDB создается без явного первичного ключа. Эта функция, если включена, может повлиять на некоторые варианты использования репликации данных, как описано ниже:

  • Репликация данных завершается ошибкой репликации: ERROR 1068 (42000): несколько первичных ключей, определенных", если исходный сервер создает первичный ключ в таблице без первичного ключа. Для устранения рисков выполните следующую команду SQL, пропустите ошибку репликации и перезапустите репликацию данных.

    alter table <table name> drop column my_row_id, add primary key <primary key name>(<column name>);
    
  • Репликация данных завершается ошибкой репликации: "ERROR 1075 (42000): неправильное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ", если исходный сервер добавляет столбец auto_increment в качестве уникального ключа. Для устранения рисков выполните следующую команду SQL, задайте для параметра "sql_generate_invisible_primary_key" значение OFF, пропустите ошибку репликации и перезапустите репликацию данных.

    alter table <table name> drop column my_row_id, modify <column name> int auto_increment;
    
  • Репликация данных завершается ошибкой, если исходный сервер запускает любой другой SQL, который не поддерживается, если параметр sql_generate_invisible_primary_key включен. Например, создайте таблицу секционирования. В таком сценарии для устранения рисков необходимо задать значение "sql_generate_invisible_primary_key" как OFF и перезапустить репликацию данных.

Следующие шаги