Реплики чтения в Базе данных Azure для MariaDB

Важно!

База данных Azure для MariaDB находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить миграцию в База данных Azure для MySQL. Дополнительные сведения о переходе на База данных Azure для MySQL см. в статье "Что происходит с База данных Azure для MariaDB?".

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

Реплики — это новые серверы, которыми вы управляете как обычными серверами службы "База данных Azure для MariaDB". За каждую реплику чтения выставляется счет с учетом подготовленных вычислительных ресурсов (количество виртуальных ядер) и хранилища (ГБ/месяц).

Дополнительные сведения о репликации GTID см. в документации по репликации MariaDB.

Примечание.

Эта статья содержит упоминания термина slave (ведомый) . Корпорация Майкрософт больше не использует его. Когда этот термин будет удален из программного обеспечения, мы удалим его из статьи.

Использование реплик чтения

Компонент "Реплика чтения" помогает повысить производительность и масштабируемость рабочих нагрузок с высокой интенсивностью чтения. Рабочие нагрузки чтения можно изолировать в реплики, направив рабочие нагрузки записи на главный сервер.

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

Так как реплики доступны только для чтения, они напрямую не снимают с исходной группы нагрузку, связанную с записью. Эта функция не нацелена на рабочие нагрузки с большим объемом операций записи.

В реплике чтения используется асинхронная репликация. Этот компонент также не предназначен для сценариев синхронной репликации. Между источником и репликой будет некоторая задержка. Данные на реплике и на исходном сервере в итоге будут согласованы. Используйте этот компонент только для таких рабочих нагрузок, которым не страшна такая задержка.

Репликация между регионами

Регион размещения реплики чтения может отличаться от региона для исходного сервера. Репликация между регионами полезна для таких сценариев, как планирование аварийного восстановления или перенос данных ближе к пользователям.

Исходный сервер может размещаться в любом регионе Базы данных Azure для MariaDB. Исходный сервер может иметь реплику в парном регионе или в универсальных регионах реплики. На изображении ниже представлена доступность регионов реплики в зависимости от региона исходного сервера.

Read replica regions

Универсальные регионы реплики

Реплику чтения можно создать в любом из следующих регионов при любом расположении исходного сервера. Поддерживаются следующие универсальные регионы реплики:

"Восточная Австралия", "Юго-Восточная Австралия", "Южная Бразилия", "Центральная Канада", "Восточная Канада", "Центральная часть США", "Восточная Азия", "Восточная часть США", "Восточная часть США 2", "Восточная Япония", "Западная Япония", "Республика Корея, центральный регион", "Республика Корея, южный регион", "Центрально-северная часть США", "Северная Европа", "Центрально-южная часть США", "Юго-Восточная Азия", "Южная часть Соединенного Королевства", "Западная часть Соединенного Королевства", "Западная Европа", "Западная часть США", "Западная часть США 2", "Центрально-западная часть США".

Пары регионов

В дополнение к универсальным регионам реплики поддерживается создание реплики чтения в парном регионе Azure для региона исходного сервера. Если вы не знаете, какой регион является парным, изучите эту статью.

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

Но есть и некоторые ограничения:

  • Доступность по регионам. База данных Azure для MariaDB доступна в следующих регионах: "Центральная Франция", "Северная часть ОАЭ", "Центральная Германия". Но недоступны регионы, которые являются для них парными.

  • Однонаправленные пары: некоторые регионы Azure объединяются только в одном направлении. К ним относятся: "Западная Индия", "Южная Бразилия" и US Gov (Вирджиния). Это означает, что для размещенного в Западной Индии исходного сервера можно создать реплику в Южной Индии, но для размещенного в Южной Индии исходного сервера нельзя создать реплику в Западной Индии. Это связано с тем, что для региона "Западная Индия" дополнительным регионом является "Южная Индия", но для региона "Южная Индия" дополнительный регион отличается от региона "Западная Индия".

Создание реплики

Важно!

Функция создания реплики чтения доступна только для серверов службы "База данных Azure для MariaDB" в ценовой категории "Общего назначения" или "Оптимизированная для операций в памяти". Убедитесь, что исходный сервер находится в одной из этих ценовых категорий.

Если для исходного сервера нет серверов реплики, исходный сервер перезапустится, чтобы подготовиться к репликации.

При запуске рабочего процесса создания реплики создается пустой сервер службы "База данных Azure для MariaDB". Новый сервер заполняется данными, которые были на исходном сервере. Время создания зависит от объема данных на исходном сервере и времени, прошедшего с момента последнего еженедельного полного резервного копирования. Время может варьироваться от нескольких минут до нескольких часов.

Примечание.

Если вы еще не настроили оповещения хранилища на серверах, рекомендуем сделать это сейчас. Это позволит получать сведения о приближении к заполнению хранилища на сервере, которое влияет на эффективность репликации.

Дополнительные сведения о создании реплики чтения на портале Azure см. здесь.

Подключение к реплике

При создании реплика наследует правила брандмауэра от исходного сервера. Но с этого момента правила считаются независимыми от исходного сервера.

Реплика наследует от исходного сервера учетную запись администратора. Также на реплики чтения копируются все учетные записи пользователей с исходного сервера. К реплике чтения можно подключиться только с помощью учетных записей пользователей, доступных на исходном сервере.

Вы можете подключиться к реплике, используя имя узла и действительную учетную запись, как к обычному серверу службы "База данных Azure для MariaDB". Например, для сервера с именем myreplica и именем пользователя с правами администратора myadmin подключение будет выполняться с помощью CLI mysql:

mysql -h myreplica.mariadb.database.azure.com -u myadmin@myreplica -p

При появлении запроса введите пароль для учетной записи пользователя.

Мониторинг репликации

Служба "База данных Azure для MariaDB" также предоставляет для Azure Monitor метрику Задержка репликации в секундах. Эта метрика доступна только для реплик.

Эта метрика вычисляется на основе метрики seconds_behind_master, которую можно получить с помощью команды MariaDB SHOW SLAVE STATUS.

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

Остановить репликацию

Репликацию между исходным сервером и репликой можно остановить. После остановки репликации между исходным сервером и репликой чтения реплика становится отдельным сервером. На отдельном сервере сохраняются все данные, которые существовали на нем на момент запуска команды "Остановить репликацию". Данные на отдельном сервере не синхронизируются с исходным сервером.

Когда вы прекратите репликацию в определенную реплику, она утратит все ссылки на исходный сервер и другие реплики. Автоматическая отработка отказа между исходным сервером и его репликой не выполняется.

Важно!

Это сервер нельзя снова преобразовать в реплику. Прежде, чем останавливать репликацию в реплике чтения убедитесь, что реплика содержит все необходимые данные.

Процесс остановки репликации описан в этой статье.

Отработка отказа

Автоматическая отработка отказа между исходным сервером и серверами-репликами не выполняется.

Так как репликация является асинхронной, между источником и репликой возникает задержка. На задержку сети может повлиять множество факторов, например размер рабочей нагрузки, выполняемой на исходном сервере, и задержка между центрами обработки данных. В большинстве случаев задержка реплики составляет от нескольких секунд до пары минут. Отслеживать фактическую задержку репликации можно с помощью метрики Задержка реплики, доступной для каждой реплики. Эта метрика показывает время с момента последнего воспроизведения транзакций. Мы рекомендуем определять среднюю задержку, наблюдая за задержкой реплики в течение определенного времени. Вы можете настроить оповещение о задержке реплики, чтобы можно было принять меры, если задержка выйдет за пределы ожидаемого диапазона.

Совет

Если выполняется отработка отказа в реплике, задержка во время отсоединения реплики от источника будет указывать на количество потерянных данных.

После того как вы решили выполнить отработку отказа в реплике:

  1. Остановите репликацию на реплику.

    Этот шаг необходим для того, чтобы сервер реплики мог принимать операции записи. В рамках этого процесса сервер реплики будет отсоединен от исходного. После подачи команды к остановке репликации внутренний процесс обычно занимает около 2 минут. Сведения о влиянии этого действия см. в разделе Остановка репликации этой статьи.

  2. Направьте приложение в реплику (бывшую).

    У каждого сервера уникальная строка подключения. Обновите приложение так, чтобы оно указывало на реплику (бывшую), а не на исходный сервер.

Если ваше приложение успешно обрабатывает операции чтения и записи, значит, отработка отказа выполнена. Время простоя вашего приложения зависит от того, когда обнаружится ошибка и будут выполнены шаги 1 и 2, описанные выше.

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

Ценовые категории

Реплики чтения сейчас доступны только в ценовых категориях "Общее назначение" и "Оптимизировано для памяти".

Примечание.

Стоимость работы сервера реплики зависит от региона, в котором он работает.

Перезапуск исходного сервера

При создании реплики исходного сервера без реплик такой сервер сначала перезапускается для подготовки к репликации. Это необходимо учесть, то есть выполнять такие операции в период низкой нагрузки.

Новые реплики

Реплики чтения создаются как новые серверы службы "База данных Azure для MariaDB". Существующий сервер нельзя снова преобразовать в реплику. Невозможно создать реплику другой реплики чтения.

Конфигурация реплики

Реплика создается с той же конфигурацией сервера, что и у исходного сервера. После создания реплики вы можете независимо от исходного сервера изменять следующие ее параметры: поколение вычислительных ресурсов, число виртуальных ядер, объем хранилища, период хранения резервных копий и версия ядра MariaDB. Изменить также можно ценовую категорию (за исключением уровня "Базовый").

Важно!

Прежде чем изменить параметры конфигурации на исходном сервере, установите на каждой реплике такие же или более высокие значения. Это позволит реплике справляться с нагрузкой, соответствующей новым параметрам исходного сервера.

Правила брандмауэра и параметры конфигурации реплика наследует от исходного сервера при создании реплики. После этого правила реплики будут независимыми.

Остановленные реплики

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

Удаленные исходный и отдельный серверы

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

Учетные записи пользователей

Пользователи на исходном сервере реплицируются в реплики чтения. К реплике чтения можно подключиться только с помощью учетных записей пользователей, доступных на исходном сервере.

Параметры сервера

Чтобы предотвратить синхронизацию данных и избежать их возможной потери, при использовании реплики чтения некоторые параметры сервера блокируются.

На исходном сервере и сервере реплики блокируются следующие параметры сервера:

Параметр event_scheduler заблокирован на серверах реплик.

Чтобы обновить один из параметров выше на исходном сервере, удалите серверы-реплики, обновите значение параметра на исходном сервере и повторно создайте реплики.

Другие

  • Создание реплики реплики не поддерживается.
  • Таблицы в памяти могут вызывать рассинхронизацию реплик. Это ограничение технологии репликации MariaDB.
  • Убедитесь, что у таблиц исходного сервера есть первичные ключи. Отсутствие первичных ключей может привести к задержке репликации между исходным сервером и репликами.

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