Перенос База данных Azure для MySQL — отдельный сервер на гибкий сервер с помощью интерфейса командной строки База данных Azure для MySQL импорта
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер
База данных Azure для MySQL импорт интерфейса командной строки (общедоступная версия) позволяет легко перенести База данных Azure для MySQL на гибкий сервер. В нем используется технология резервного копирования моментальных снимков и восстановления, чтобы обеспечить простой и быстрый путь миграции для восстановления файлов физических данных исходного сервера на целевой сервер. После импорта вы можете воспользоваться преимуществами гибкого сервера, включая более высокую цену и производительность, детализированный контроль над конфигурацией базы данных и пользовательскими окнами обслуживания.
На основе входных данных пользователей она отвечает за подготовку целевого гибкого сервера, а затем резервное копирование исходного сервера и восстановление целевого объекта. Он копирует файлы данных, параметры сервера, совместимые правила брандмауэра и свойства сервера — уровень, версия, sku-name, размер хранилища, расположение, геоизбыточное резервное копирование, общедоступный доступ, теги, автоматическое увеличение, резервное копирование дней, администратор-пользователь и пароль администратора из одного экземпляра гибкого сервера.
База данных Azure для MySQL Import CLI поддерживает миграцию практически нулевого времени простоя, сначала выполняя автономную операцию импорта, и, следовательно, пользователи могут настроить репликацию данных между источником и целевым объектом для выполнения интерактивной миграции.
В этом руководстве показано, как использовать команду База данных 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, а затем можно активировать операцию импорта для миграции на гибкий сервер.
Если в экземпляре одного сервера включена расширенная защита от угроз, необходимо включить Расширенную защиту от угроз на перенесенном экземпляре гибкого сервера после миграции, выполнив действия, описанные ниже (/azure/mysql/гибкий сервер/advanced-threat-protection-setting?view=azure-cli-latest).
Если экземпляр одного сервера имеет подсистему версии 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, не совпадающих со последовательностью столбцов в пользовательских таблицах. Это несоответствие может препятствовать настройке репликации, восстановлению данных, включению высокой доступности и другим операциям.
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, выполнив указанные здесь действия, а также когда состояние репликации отражает, что целевой сервер поймал источник, остановите репликацию и выполните переключение.
Рекомендации по настройке параметров команды cli База данных Azure для MySQL
Прежде чем активировать команду База данных Azure для MySQL Import CLI, ознакомьтесь со следующим руководством по настройке параметров, чтобы обеспечить более быструю загрузку данных с помощью интерфейса командной строки База данных Azure для MySQL импорта.
Если вы хотите переопределить интеллектуальные значения по умолчанию, выберите уровень вычислений и имя SKU для целевого гибкого сервера на основе ценовой категории исходного отдельного сервера и виртуальных ядер на основе подробных сведений в следующей таблице.
Отдельный сервер: ценовая Отдельный сервер: виртуальные ядра Гибкий уровень сервера Имя SKU гибкого сервера Основное 1 С увеличивающейся производительностью Standard_B2ms Основное 2 С увеличивающейся производительностью Standard_B2ms Общего назначения 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 Импорт для переноса экземпляра одного сервера?
Ниже приведены тестовые показатели производительности на основе размера хранилища общего назначения версии 2. (Для переноса серверов с хранилищем общего назначения версии 1 потребуется больше времени, так как она также включает обновление архитектуры хранилища)
Размер хранилища с одним сервером | Время импорта |
---|---|
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, размещенные для управления экземпляром отдельного сервера, должны быть обновлены с помощью ссылок на гибкий сервер.