Репликация данных в Базе данных Azure для MySQL (гибкий сервер)
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — гибкий сервер
Обработка данных реплика позволяет синхронизировать данные с внешнего сервера MySQL в База данных Azure для MySQL гибкий экземпляр сервера. Внешний сервер может быть локальным, на виртуальных машинах, База данных Azure для MySQL одном сервере или в службе базы данных, размещенной другими поставщиками облачных служб. Данные реплика tion основаны на позиции файла в двоичном журнале (binlog) или реплика на основе GTID. Дополнительные сведения о реплика бинлога см. в разделе "Репликация MySQL".
Примечание.
Настройка реплика обработки данных для серверов с поддержкой высокой доступности поддерживается только через реплика на основе GTID.
Когда следует использовать Репликацию входных данных
Ниже приведены основные сценарии с применением Репликации входных данных:
- Гибридная Синхронизация данных хронизация: с помощью реплика обработки данных можно синхронизировать данные между локальными серверами и гибким сервером База данных Azure для MySQL. Эта синхронизация помогает создавать гибридные приложения. Этот метод удобен, если у вас есть локальный сервер базы данных, но вы хотите переместить данные в регион, который расположен ближе к пользователям.
- Синхронизация с несколькими облаками. Для сложных облачных решений используйте реплика tion данных для синхронизации данных База данных Azure для MySQL между гибким сервером и различными поставщиками облачных служб, включая виртуальные машины и службы баз данных, размещенные в этих облаках.
- Миграция: клиенты могут перенести в минимальное время с помощью средств с открытым кодом, таких как MyDumper/MyLoader с реплика данных. При использовании Репликации входных данных возможна выборочная прямая миграция рабочей нагрузки из исходной базы данных в целевую.
Используйте Azure Database Migration Service(DMS) для сценариев миграции.
Рекомендации и ограничения
Нереплицируемые данные
Системная база данных MySQL на исходном сервере не реплицируется. Кроме того, изменения учетных записей и разрешений на исходном сервере не реплицируются. Если вы создаете на исходном сервере учетную запись, которой требуется доступ к серверу-реплике, вручную создайте ту же учетную запись на сервере-реплике. Сведения о таблицах в системной базе данных см. в руководстве mySQL.
Данные реплика tion поддерживаются на серверах с поддержкой высокой доступности (HA)
Поддержка реплика поддержки данных для сервера с поддержкой высокой доступности (HA) доступна только через реплика на основе GTID.
Хранимая процедура для реплика tion с помощью GTID доступна на всех серверах с поддержкой высокого уровня доступности по имениmysql.az_replication_change_master_with_gtid
.
Фильтр
replicate_wild_ignore_table
Параметр создает фильтр реплика для таблиц на сервере реплика. Чтобы изменить этот параметр из портал Azure, перейдите к База данных Azure для MySQL гибкому экземпляру сервера, используемому в качестве реплика, и выберите "Параметры сервера", чтобы просмотреть или изменить replicate_wild_ignore_table
параметр.
Requirements
- На исходном сервере должна быть установлена версия 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 создается без явного первичного ключа. Эта функция может повлиять на некоторые варианты использования реплика данных, как описано ниже:
Сбой реплика с ошибкой реплика tion: ERROR 1068 (42000): несколько первичных ключей, определенных", если исходный сервер создает первичный ключ в таблице без первичного ключа. Для устранения рисков выполните следующую команду SQL, пропустите ошибку реплика tion и перезапустите данные в реплика.
alter table <table name> drop column my_row_id, add primary key <primary key name>(<column name>);
Ошибка реплика данных с ошибкой реплика tion: "ERROR 1075 (42000): неправильное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ", если исходный сервер добавляет столбец auto_increment в качестве уникального ключа. Для устранения рисков выполните следующую команду SQL, задайте для параметра OFF значение "sql_generate_invisible_primary_key", пропустите ошибку реплика tion и перезапустите данные в реплика.
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 и перезапустить данные в реплика.
Следующие шаги
- Дополнительные сведения о настройке данных в реплика tion
- Дополнительные сведения о реплика реплика в Azure с помощью реплика чтения