Перенос База данных Azure для MySQL — отдельный сервер на гибкий сервер с помощью интерфейса командной строки База данных Azure для MySQL импорта

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

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

На основе входных данных пользователей она отвечает за подготовку целевого гибкого сервера, а затем резервное копирование исходного сервера и восстановление целевого объекта. Он копирует файлы данных, параметры сервера, совместимые правила брандмауэра и свойства сервера — уровень, версия, sku-name, размер хранилища, расположение, геоизбыточное резервное копирование, общедоступный доступ, теги, автоматическое увеличение, резервное копирование дней, администратор-пользователь и пароль администратора из одного экземпляра гибкого сервера.

База данных Azure для MySQL Import CLI поддерживает миграцию практически нулевого времени простоя, сначала выполняя автономную операцию импорта, и, следовательно, пользователи могут настроить реплика tion данных между источником и целевым объектом для выполнения интерактивной миграции.

В этом руководстве показано, как использовать команду База данных Azure для MySQL Import CLI для переноса База данных Azure для MySQL одного сервера на гибкий сервер.

Новые возможности

  • База данных Azure для MySQL теперь поддерживается операция импорта для отдельных серверов с устаревшей архитектурой служба хранилища (хранилище общего назначения версии 1). Перед началом операции импорта необходимо задать параметр log_bin=ON для экземпляра одного сервера с устаревшими служба хранилища. Чтобы сделать это, создайте реплика чтения для одного экземпляра сервера, а затем удалите его. Эта операция установит параметр log_bin значение ON, а затем можно активировать операцию импорта для миграции на гибкий сервер. (февраль 2024 г.)

Запуск Azure Cloud Shell

Azure Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью.

Чтобы открыть Cloud Shell, выберите Попробовать в правом верхнем углу блока кода. Кроме того, Cloud Shell можно открыть в отдельной вкладке браузера. Для этого перейдите на страницу https://shell.azure.com/bash. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте код в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить его.

Если вы предпочитаете устанавливать и использовать интерфейс командной строки локально, для этого руководства требуется Azure CLI версии 2.54.0 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Настройка

Необходимо войти в учетную запись с помощью команды az sign-in . Обратите внимание на свойство идентификатора, которое ссылается на идентификатор подписки учетной записи Azure.

az login

Выберите конкретную подписку, в которой находится исходный База данных Azure для MySQL — отдельный сервер находится под учетной записью с помощью команды az account set. Обратите внимание на значение идентификатора из выходных данных az login , которое будет использоваться в качестве значения аргумента подписки в команде. Если у вас несколько подписок, выберите соответствующую подписку, в которой находится исходный База данных Azure для MySQL — отдельный сервер. Чтобы отобразить все свои подписки, воспользуйтесь командой az account list.

az account set --subscription <subscription id>

Ограничения и предварительные требования

  • Если исходный База данных Azure для MySQL отдельный сервер имеет версию подсистемы версии 8.x, убедитесь, что для обновления версии драйвера клиента .NET исходного сервера до версии 8.0.32, чтобы избежать несовместимости кодировки после миграции на гибкий сервер.

  • Исходный База данных Azure для MySQL — отдельный сервер и целевой База данных Azure для MySQL — гибкий сервер должен находиться в одной подписке, группе ресурсов, регионе и в той же версии MySQL. Импорт между подписками, группами ресурсов, регионами и версиями невозможен.

  • Версии MySQL, поддерживаемые База данных Azure для MySQL Import CLI: 5.7 и 8.0. Если вы используете другую основную версию MySQL на одном сервере, обязательно обновите версию на экземпляре одного сервера перед активацией команды импорта.

  • Если База данных Azure для MySQL — экземпляр одного сервера имеет параметр сервера "lower_case_table_names", равный 2, а используемое приложением таблицы секций, операция импорта приведет к поврежденным таблицам секций. Рекомендуется задать значение "lower_case_table_names" равным 1 для экземпляра База данных Azure для MySQL — отдельный сервер, чтобы продолжить операцию импорта MySQL без повреждения.

  • Импорт в существующий гибкий сервер Azure MySQL не поддерживается. Команда CLI инициирует импорт нового гибкого сервера Azure MySQL.

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

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

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

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

  • Если экземпляр одного сервера имеет устаревшую архитектуру служба хранилища (хранилище общего назначения версии 1), необходимо задать параметр log_bin=ON для экземпляра одного сервера перед началом операции импорта. Чтобы сделать это, создайте реплика чтения для одного экземпляра сервера, а затем удалите его. Эта операция установит параметр log_bin значение ON, а затем можно активировать операцию импорта для миграции на гибкий сервер.

  • Если экземпляр одного сервера имеет подсистему версии 8.0, рассмотрите возможность выполнения следующих действий, чтобы избежать критических изменений из-за различий версий сообщества между экземпляром одного и гибкого сервера:

    • Выполните следующую инструкцию, чтобы проверка, если экземпляр может быть затронут ошибочной информацией гистограммы. Если соответствующие таблицы выходные данные, рекомендуется https://dev.mysql.com/blog-archive/histogram-statistics-in-mysql/ удалить сведения о гистограмме, а затем повторно создать его на гибком сервере. Стоит отметить, что гистограмма inf " является только статистическими сведениями о столбцах, и эта информация существует только в системных таблицах, поэтому удаление сведений гистограммы не повлияет на данные таблицы.

          SELECT DISTINCT SCHEMA_NAME, TABLE_NAME FROM `information_schema`.`column_statistics`;
      
    • Выполните следующую команду, чтобы проверка для таблиц, которые могли бы упорядочить порядок столбцов таблицы. Если эта проверка идентифицирует все затронутые таблицы, необходимо дампать все данные из этих таблиц и импортировать их обратно. Сбой этого может привести к последовательности столбцов в binlog, не совпадающих со последовательностью столбцов в пользовательских таблицах. Это несоответствие может препятствовать настройке реплика пользователей, восстановлению данных, включению высокой доступности (HA) и другим операциям.

          SELECT table_schema, table_name, COUNT(*) AS column_count, MAX(ORDINAL_POSITION) AS max_ordinal_position
          FROM information_schema.columns
          GROUP BY table_schema, table_name
          HAVING column_count != max_ordinal_position;
      
  • Поддерживается только импорт на уровне экземпляра. Параметр импорта выбранных баз данных в экземпляре не предоставляется.

  • Следующие элементы должны быть скопированы из источника в целевой объект пользователем после операции импорта:

    • Реплики чтения
    • Параметры страницы мониторинга (оповещения, метрики и параметры диагностики)
    • Все скрипты Terraform/CLI, размещенные для управления экземпляром одного сервера, должны обновляться с помощью ссылок на гибкий сервер.

Активация операции импорта База данных Azure для MySQL для миграции с База данных Azure для MySQL — отдельный сервер на гибкий сервер

Активируйте операцию импорта База данных Azure для MySQL с az mysql flexible-server import create помощью команды. Следующая команда создает целевой гибкий сервер и выполняет импорт на уровне экземпляра из источника в целевое назначение с помощью значений и значений службы из локального контекста Azure CLI:

az mysql flexible-server import create --data-source-type
                                --data-source
                                --resource-group
                                --name
                                [--sku-name]
                                [--tier]
                                [--version]
                                [--storage-size]
                                [--mode]
                                [--admin-password]
                                [--admin-user]
                                [--auto-scale-iops {Disabled, Enabled}]
                                [--backup-identity]
                                [--backup-key]
                                [--backup-retention]
                                [--database-name]
                                [--geo-redundant-backup {Disabled, Enabled}]
                                [--high-availability {Disabled, SameZone, ZoneRedundant}]
                                [--identity]
                                [--iops]
                                [--key]
                                [--location]
                                [--private-dns-zone]
                                [--public-access]
                                [--resource-group]
                                [--standby-zone]
                                [--storage-auto-grow {Disabled, Enabled}]
                                [--subnet]
                                [--subnet-prefixes]
                                [--tags]
                                [--vnet]
                                [--zone]

Следующий пример принимает сведения об источнике данных для одного сервера с именем test-single-server и сведениями о гибком сервере, создает целевой гибкий сервер с именем test-flexible-server в westus расположении (то же расположение, что и исходный отдельный сервер) и выполняет импорт из источника в целевой. Команда импорта Базы данных Azure MySQL сопоставляется с соответствующим уровнем, версией, sku-name, размером хранилища, расположением, геоизбыточным резервным копированием, общедоступным доступом, тегами, автоматическим увеличением, хранением резервных копий дней, администратором и паролем администратора с одного сервера на гибкий сервер в качестве смарт-по умолчанию, если входные данные не предоставляются команде CLI. Вы можете переопределить смарт-значения по умолчанию, предоставив входные данные для этих необязательных параметров.

az mysql flexible-server import create --data-source-type "mysql_single" --data-source "test-single-server" --resource-group "test-rg"  --name "test-flexible-server"

Следующий пример принимает сведения об источнике данных для одного сервера с именем test-single-server и сведениями о гибком сервере, создает целевой гибкий сервер test-flexible-server в westus расположении (том же расположении, что и исходный отдельный сервер) с включенной избыточностью зоны и интеграцией виртуальной сети и выполняет импорт из источника в целевой. Дополнительные сведения о конфигурации виртуальной сети см. здесь.

# create vnet
az network vnet create --resource-group testGroup --name myVnet --location testLocation --address-prefixes 172.0.0.0/16

# create subnet
az network vnet subnet create --resource-group testGroup --vnet-name myVnet --address-prefixes 172.0.0.0/24 --name mySubnet

# create private dns zone
az network private-dns zone create -g testGroup -n myserver.private.contoso.com

# trigger mysql import
az mysql flexible-server import create --data-source-type "mysql_single" --data-source "test-single-server" --resource-group "test-rg"  --name "test-flexible-server" --high-availability ZoneRedundant --zone 1 --standby-zone 3  --vnet "myVnet" --subnet "mySubnet" --private-dns-zone "myserver.private.contoso.com"

Следующий пример принимает сведения об источнике данных для одного сервера с именем test-single-server с включенным ключом управления клиентом (CMK) и сведениями о гибком сервере, создает целевой гибкий сервер с именем test-flexible-server и выполняет импорт из источника в целевой. Для экземпляров одного сервера с поддержкой CMK команда импорта База данных Azure для MySQL требует предоставления обязательных входных параметров для включения CMK : --key KeyIdentifierOfTestKey --identity testIdentity.

# create keyvault
az keyvault create -g testGroup -n testVault --location testLocation \
  --enable-purge-protection true

# create key in keyvault and save its key identifier
keyIdentifier=$(az keyvault key create --name testKey -p software \
  --vault-name testVault --query key.kid -o tsv)

# create identity and save its principalId
identityPrincipalId=$(az identity create -g testGroup --name testIdentity \
  --location testLocation --query principalId -o tsv)

# add testIdentity as an access policy with key permissions 'Wrap Key', 'Unwrap Key', 'Get' and 'List' inside testVault
az keyvault set-policy -g testGroup -n testVault --object-id $identityPrincipalId \
  --key-permissions wrapKey unwrapKey get list

# trigger azure database for mysql import for CMK enabled single server
az mysql flexible-server import create --data-source-type "mysql_single" --data-source "test-single-server" --resource-group "test-rg"  --name "test-flexible-server" --key $keyIdentifier --identity testIdentity

Ниже приведены сведения о приведенных выше аргументах:

Параметр Пример значения Description
тип источника данных mysql_single Тип источника данных, который служит источником назначения для активации База данных Azure для MySQL импорта. Принятые значения: [mysql_single]. Описание принятых значений— mysql_single: База данных Azure для MySQL отдельный сервер.
источник данных test-single-server Имя или идентификатор ресурса исходного База данных Azure для MySQL отдельный сервер.
resource-group test-rg Имя группы ресурсов Azure исходного База данных Azure для MySQL отдельный сервер.
mode Offline Режим импорта База данных Azure для MySQL. Принятые значения: [автономный]; Значение по умолчанию: автономное.
расположение westus Расположение Azure для исходного База данных Azure для MySQL отдельный сервер.
name test-flexible-server Введите уникальное имя целевого База данных Azure для MySQL гибкого сервера. Имя сервера может содержать только строчные буквы, цифры и знак дефиса (-). Его длина должна составлять от 3 до 63 символов. Примечание. Этот сервер развертывается в той же подписке, группе ресурсов и регионе, что и источник.
admin-user adminuser Имя пользователя для входа администратора для целевого База данных Azure для MySQL гибкий сервер. Не может иметь значение azure_superuser, admin, administrator, root, guest или public.
admin-password пароль Пароль администратора для целевого База данных Azure для MySQL гибкого сервера. Пароль должен содержать от 8 до 128 символов. Пароль должен содержать символы из трех категорий: английские прописные буквы, строчные буквы, цифры и нефазные цифры.
sku-name GP_Gen5_2 Введите имя ценовой категории и конфигурации вычислений для целевого База данных Azure для MySQL гибкого сервера. В сокращенной записи соответствует схеме {ценовая категория}{поколение вычислительных ресурсов}{число виртуальных ядер}. Дополнительные сведения см. на странице с ценовыми категориями.
tier С увеличивающейся производительностью Уровень вычислений целевого База данных Azure для MySQL гибкий сервер. Допустимые значения: Ускорение, GeneralPurpose, MemoryOptimized; Значение по умолчанию: с возможностью ускорения.
общедоступный доступ 0.0.0.0 Определяет общедоступный доступ для целевого База данных Azure для MySQL гибкого сервера. Введите один или диапазон IP-адресов, которые будут включены в список разрешенных IP-адресов. Диапазоны IP-адресов должны быть разделены дефисом и не содержать пробелов. Указание 0.0.0.0.0 разрешает общедоступный доступ из любых ресурсов, развернутых в Azure, для доступа к серверу. Если для него задано значение None, сервер в режиме общедоступного доступа не создается правило брандмауэра.
виртуальная сеть myVnet Имя или идентификатор новой или существующей виртуальной сети. Если вы хотите использовать виртуальную сеть из другой группы ресурсов или подписки, укажите идентификатор ресурса. Имя должно быть от 2 до 64 символов. Оно должно начинаться с буквы или цифры, заканчиваться буквой, цифрой или символом подчеркивания и может содержать только буквы, цифры, символы подчеркивания, точки и дефисы.
подсеть mySubnet Имя или идентификатор ресурса новой или существующей подсети. Если вы хотите использовать подсеть из другой группы ресурсов или подписки, укажите идентификатор ресурса вместо имени. Обратите внимание, что подсеть будет делегирована гибким серверам. После делегирования эту подсеть нельзя использовать для любого другого типа ресурсов Azure.
private-dns-zone myserver.private.contoso.com Имя или идентификатор новой или существующей частной зоны DNS. Частную зону DNS можно использовать из одной группы ресурсов, другой группы ресурсов или другой подписки. Если вы хотите использовать зону из другой группы ресурсов или подписки, укажите идентификатор ресурса. CLI создает частную зону DNS в той же группе ресурсов, что и виртуальная сеть, если она не предоставляется пользователями.
key идентификатор ключа testKey Идентификатор ресурса первичного ключа keyvault для шифрования данных.
identity testIdentity Имя или идентификатор ресурса назначаемого пользователем удостоверения для шифрования данных.
storage-size 32 Емкость хранилища целевого База данных Azure для MySQL гибкого сервера. Минимальное значение составляет 20 ГиБ, а максимальное значение — 16 ТиБ.
tags key=value Укажите имя группы ресурсов Azure.
версия 5.7 Основная версия целевого База данных Azure для MySQL гибкого сервера.
высокая доступность ZoneRedundant Включите (ZoneRedundant или SameZone) или отключите функцию высокого уровня доступности для целевого База данных Azure для MySQL гибкого сервера. Принятые значения: Disabled, SameZone, ZoneRedundant; Значение по умолчанию: отключено.
зона 1 Зона доступности, в которую необходимо подготовить ресурс.
резервная зона 3 Сведения о зоне доступности резервного сервера при включении высокой доступности.
автоматическое увеличение хранилища Включен Включение или отключение автоматического увеличения объема хранилища для целевого База данных Azure для MySQL гибкого сервера. Значение по умолчанию — Включено. Принятые значения: отключено, включено; Значение по умолчанию: включено.
iops 500 Количество операций ввода-вывода в секунду для целевого База данных Azure для MySQL гибкий сервер. Вы получаете определенный объем бесплатных операций ввода-вывода в секунду на основе подготовленных вычислительных ресурсов и хранилища. Значение по умолчанию для операций ввода-вывода в секунду является бесплатным числом операций ввода-вывода в секунду. Дополнительные сведения о операций ввода-вывода в секунду на основе вычислений и хранилища см. в разделе "Операции ввода-вывода в секунду" в База данных Azure для MySQL гибком сервере.

Шаги по миграции через Интернет

После завершения указанной выше операции импорта База данных Azure для MySQL:

  • Войдите в целевой База данных Azure для MySQL гибкий сервер и выполните следующую команду, чтобы получить имя файла журнала bin-log и расположение, соответствующее моментальному снимку резервного копирования, используемому База данных Azure для MySQL Импорт cli для восстановления на целевом сервере.
CALL mysql.az_show_binlog_file_and_pos_for_mysql_import();
  • Настройте реплика связь данных между экземплярами исходного и целевого серверов с помощью позиции bin-log, выполнив следующие действия, описанные здесь, и когда состояние реплика tion отражает, что целевой сервер догнал источник, остановите реплика и выполните переключение.

Рекомендации по настройке параметров команды cli База данных Azure для MySQL

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

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

    Отдельный сервер: ценовая Отдельный сервер: виртуальные ядра Гибкий уровень сервера Имя SKU гибкого сервера
    Основное 1 С увеличивающейся производительностью Standard_B1s
    Основное 2 С увеличивающейся производительностью Standard_B2s
    Общего назначения 4 Общего назначения Standard_D4ds_v4
    Общего назначения 8 Общего назначения Standard_D8ds_v4
    Общее назначение 16 Общего назначения Standard_D16ds_v4
    Общее назначение 32 Общего назначения Standard_D32ds_v4
    Общее назначение 64 Общего назначения Standard_D64ds_v4
    С оптимизацией для операций в памяти 4 MemoryOptimized Standard_E4ds_v4
    С оптимизацией для операций в памяти 8 MemoryOptimized Standard_E8ds_v4
    С оптимизацией для операций в памяти 16 MemoryOptimized Standard_E16ds_v4
    С оптимизацией для операций в памяти 32 MemoryOptimized Standard_E32ds_v4
  • Версия MySQL, регион, подписка и ресурс для целевого гибкого сервера должны быть равными исходному одному серверу.

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

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

Сколько времени занимает База данных Azure для MySQL Импорт для переноса экземпляра одного сервера?

Ниже приведены тестовые показатели производительности на основе размера хранилища.

Размер одного сервера служба хранилища Время импорта
1 ГиБ 0 мин 23 с
10 ГБ 4 мин 24 с
100 ГиБ 10 мин 29 с
500 ГиБ 13 мин 15 с
1 TБ 22 мин 56 с
10 ТБ 2 часа 5 минут 30 с

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

Ниже приведены тестовые показатели производительности на основе различных таблиц для 10 ГиБ размера хранилища.

Количество таблиц в экземпляре одного сервера Время импорта
100 4 мин 24 с
200 4 мин 40 с
800 4 мин 52 с
14 400 17 мин 41 с
28,800 19 мин 18 с
38 400 22 мин 50 с

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

Шаги после импорта

  • Скопируйте следующие свойства из исходного односерверного сервера на целевой сервер после завершения операции импорта База данных Azure для MySQL:
    • Реплики чтения
    • Значение параметра сервера для event_scheduler
    • Параметры страницы мониторинга (оповещения, метрики и параметры диагностики)
    • Все скрипты Terraform/CLI, размещенные для управления экземпляром отдельного сервера, должны быть обновлены с помощью ссылок на гибкий сервер.

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