Migrar carga de trabalho do MySQL local ou VM (Máquina Virtual) para o Banco de Dados do Azure para MySQL – Servidor Flexível usando a CLI de Importação do Banco de Dados do Azure para MySQL

A Importação do Banco de Dados do Azure para MySQL para migrações externas permite migrar sua carga de trabalho do MySQL local ou da VM (Máquina Virtual) de forma ininterrupta para o Banco de Dados do Azure para MySQL – Servidor Flexível. Ele usa um arquivo de backup físico fornecido pelo usuário e restaura os arquivos de backup físicos do servidor de origem para o servidor de destino oferecendo um caminho de migração simples e rápido. Após a operação de Importação, você pode aproveitar os benefícios do servidor flexível, que inclui melhores preço e desempenho, controle granular sobre a configuração do banco de dados e janelas de manutenção personalizadas.

Com base nas entradas do usuário, ele assume a responsabilidade de provisionar o Servidor Flexível de destino e, em seguida, restaurar o backup físico fornecido pelo usuário do servidor de origem armazenado na conta de armazenamento de Blobs do Azure para a instância do Servidor Flexível de destino.

Esse tutorial mostra como usar o comando da CLI de Importação do Banco de Dados do Azure para MySQL para Migrar a carga de trabalho do MySQL local ou da VM (Máquina Virtual) para o Banco de Dados do Azure para MySQL – Servidor Flexível.

Iniciar o Azure Cloud Shell

O Azure Cloud Shell é um shell gratuito e interativo que poderá ser usado para executar as etapas deste artigo. Ele tem ferramentas do Azure instaladas e configuradas para usar com sua conta.

Para abrir o Cloud Shell, selecione Experimentar no canto superior direito de um bloco de código. Você também pode abrir o Cloud Shell em uma guia separada do navegador indo até https://shell.azure.com/bash. Selecione Copiar para copiar os blocos de código, cole-o no Cloud Shell e selecione Enter para executá-lo.

Se preferir instalar e usar a CLI localmente, este tutorial exigirá a CLI do Azure versão 2.54.0 ou posterior. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Instalação

Você deve entrar na sua conta usando o comando az sign-in. Observe a propriedade id, que se refere à ID de assinaturada sua conta do Azure.

az login

Selecione a assinatura específica em sua conta na qual você deseja implantar o Servidor Flexível de destino usando o comando az account set. Anote o valor da id da saída az login para usá-la como valor do argumento subscription no comando. Para obter todas as suas assinaturas, use az account list.

az account set --subscription <subscription id>

Pré-requisitos

  • O servidor de origem deve ter os seguintes parâmetros:
    • Lower_case_table_names = 1
    • Innodb_file_per_table = ON
    • O nome do espaço de tabela do sistema deve ser ibdata1.
    • O nome do espaço de tabela do sistema deve ser igual ou superior a 12 MB. (Padrão MySQL)
    • Innodb_page_size = 16348 (padrão MySQL)
    • Há suporte apenas para o mecanismo INNODB.
  • Faça um backup físico da carga de trabalho do MySQL usando o Percona XtraBackup. Estas são as etapas para usar o Percona XtraBackup para fazer um backup completo:
    • Instale o Percona XtraBackup na carga de trabalho de VM ou local. Para a versão do mecanismo MySQL v5.7, instale o Percona XtraBackup versão 2.4, confira Instalação do Percona XtraBackup 2.4. Para a versão do mecanismo MySQL v8.0, instale o Percona XtraBackup versão 8.0, confira Instalação do Percona XtraBackup 8.0.
    • Para obter instruções sobre como fazer um Backup completo com o Percona XtraBackup 2.4, consulte Backup completo. Para obter instruções sobre como fazer um Backup completo com o Percona XtraBackup 8.0, confira [Backup completo] (https://docs.percona.com/percona-xtrabackup/8.0/create-full-backup.html). Ao fazer backup completo, execute os comandos abaixo nesta ordem:
      • - xtrabackup --backup --host={host} --user={user} --password={password} --target-dir={backup__dir_path}
      • - xtrabackup --prepare --{backup_dir_path} (forneça o mesmo caminho de backup aqui, como no comando acima)
    • Considerações ao usar o Percona XtraBackup:
      • Execute as etapas de backup e preparação.
      • Verifique se não há erros nas etapas de backup e preparação.
      • Mantenha os logs das etapas de backup e preparação para o Suporte do Azure, necessários em caso de falhas.
  • Crie um contêiner de Blob do Azure e obtenha o token SAS (Assinatura de Acesso Compartilhado) (portal do Azure ou CLI do Azure) para o contêiner. Certifique-se de conceder Adicionar, Criar e Gravar na lista suspensa Permissões. Copie e cole o token SAS do blob e os valores da URL em um local seguro. Eles são exibidos apenas uma vez e não podem ser recuperados depois que a janela é fechada.
  • Carregue o arquivo de backup completo em {backup_dir_path} no Armazenamento de Blobs do Azure. Siga estas etapas para carregar um arquivo.
  • Para executar uma migração online, capture e armazene a posição do bin-log do arquivo de backup feito usando o Percona XtraBackup executando o comando cat xtrabackup_info e copiando a saída de bin_log pos.
  • A conta de armazenamento do Azure deve ser acessível publicamente usando o token SAS. Não há suporte para a conta de armazenamento do Azure com configuração de rede virtual.

Limitações

  • A configuração do servidor de origem não é migrada. Você deve criar e configurar o Servidor flexível de destino de forma adequada.
  • Não há suporte para a migração em backups criptografados.
  • Usuários e privilégios não são migrados como parte da Importação do Banco de Dados do Azure para MySQL. Você deve fazer um backup manual de usuários e privilégios antes de iniciar a Importação do Banco de Dados do Azure para MySQL para migrar logons após a operação de importação restaurando-os no Servidor Flexível de destino.
    • O user1@localhost não pode ser migrado, pois não há suporte para a criação de usuário do localhost no Servidor Flexível.
  • Servidores Flexíveis habilitados para HA (Alta Disponibilidade) são retornados como servidores desabilitados de HA para aumentar a velocidade da operação de migração após a migração de importação. Habilite a HA para o Servidor Flexível de destino após a migração.

Recomendações para uma experiência de migração ideal

  • Considere manter a conta de Armazenamento de Blobs do Azure e o Servidor Flexível de destino a serem implantados na mesma região para melhor desempenho de importação.
  • Configuração de SKU recomendada para o Servidor Flexível de destino do Banco de Dados do Azure para MySQL –
    • A configuração de SKU com capacidade de intermitência para o destino não é recomendada para otimizar o tempo de migração ao executar a operação de Importação do Banco de Dados do Azure para MySQL. É recomendável escalar para Uso Geral/Comercialmente Crítico para o curso da operação de importação, postagem, que você pode reduzir verticalmente para SKU com capacidade de intermitência.

Acionar uma operação de importação do Banco de Dados do Azure para MySQL para migrar do Banco de Dados do Azure para MySQL – Servidor Flexível

Dispare uma operação de importação do Banco de Dados do Azure para MySQL com o comando az mysql flexible-server import create. O comando a seguir cria um Servidor Flexível de destino e executa a importação no nível da instância do arquivo de backup para o destino usando o contexto local da CLI do Azure:

az mysql flexible-server import create --data-source-type
                                --data-source
                                --data-source-sas-token
                                --resource-group
                                --name
                                --sku-name
                                --tier
                                --version
                                --location
                                [--data-source-backup-dir]
                                [--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]
                                [--private-dns-zone]
                                [--public-access]
                                [--resource-group]
                                [--standby-zone]
                                [--storage-auto-grow {Disabled, Enabled}]
                                [--subnet]
                                [--subnet-prefixes]
                                [--tags]
                                [--vnet]
                                [--zone]

The following example takes in the data source information for your source MySQL server's backup file and target Flexible Server information, creates a target Flexible Server named `test-flexible-server` in the `westus` location and performs an import from backup file to target.

azurecli-interactive
az mysql flexible-server import create --data-source-type "azure_blob" --data-source "https://onprembackup.blob.core.windows.net/onprembackup" --data-source-backup-dir "mysql_backup_percona" –-data-source-token "{sas-token}" --resource-group "test-rg"  --name "test-flexible-server" –-sku-name Standard_D2ds_v4  --tier GeneralPurpose –-version 5.7 -–location "westus"

Aqui estão os detalhes dos argumentos acima:

Configuração Valor de exemplo Descrição
data-source-type azure_blob O tipo de fonte de dados que serve como destino de origem para disparar a Importação do Banco de Dados do Azure para MySQL. Valores aceitos: [azure_blob]. Descrição dos valores aceitos – azure_blob: Armazenamento de Blobs do Azure.
data-source {resourceID} A ID do recurso do contêiner de Blob do Azure.
data-source-backup-dir mysql_percona_backup O diretório do contêiner do Armazenamento de Blobs do Azure no qual o arquivo de backup foi carregado. Esse valor é necessário somente quando o arquivo de backup não é armazenado na pasta raiz do contêiner de Blobs do Azure.
data-source-sas-token {sas-token} O token SAS (Assinatura de Acesso Compartilhado) gerado para conceder acesso à importação do contêiner de Armazenamento de Blobs do Azure.
resource-group test-rg O nome do grupo de recursos do Azure do Servidor Flexível de destino do Banco de Dados do Azure para MySQL.
mode Offline O modo de importação do Banco de Dados do Azure para MySQL. Valores aceitos: [Offline]; Valor padrão: Offline.
local westus O local do Azure para o Servidor Flexível de origem do Banco de Dados do Azure para MySQL.
name test-flexible-server Insira um nome exclusivo para o Servidor Flexível do Banco de Dados do Azure para MySQL de destino. O nome do servidor pode conter apenas letras minúsculas, números e o caractere de hífen (-). Ele deve conter de 3 a 63 caracteres. Observação: esse servidor está implantado na mesma assinatura, grupo de recursos e região que a origem.
admin-user adminuser O nome de usuário para a entrada do administrador do Servidor Flexível do Banco de Dados do Azure para MySQL de destino. Ele não pode ser azure_superuser, admin, administrator, root, guest nem public.
admin-password password A senha de usuário do administrador para seu Servidor Flexível do Banco de Dados do Azure para MySQL de destino. Ele deve conter entre 8 e 128 caracteres. Sua senha deve conter os caracteres de três categorias: Letras maiúsculas em Inglês, letras minúsculas em Inglês, números e caracteres não alfanuméricos.
sku-name GP_Gen5_2 Insira o nome da camada de preços e a configuração da computação do seu Servidor Flexível do Banco de Dados do Azure para MySQL de destino. Segue a convenção {tipo de preço} {geração de computação} {vCores} em formato abreviado. Confira os tipos de preço para obter mais informações.
Camada Com capacidade de intermitência Camada de computação do Servidor Flexível do Banco de Dados do Azure para MySQL de destino. Valores aceitos: ComCapacidadeDeIntermitência, UsoGeral, OtimizadoParaMemória; valor padrão: ComCapacidadeDeIntermitência.
public-access 0.0.0.0 Determina o acesso público para o Servidor Flexível do Banco de Dados do Azure para MySQL de destino. Insira um único ou intervalo de endereços IP a ser incluído na lista permitida de IPs. Os intervalos de endereços IP devem ser separados por traços e não devem conter espaços. A especificação 0.0.0.0 permite o acesso público a partir de quaisquer recursos implantados no Azure para acessar seu servidor. Configurá-lo como "Nenhum" define o servidor no modo de acesso público, mas não cria uma regra de firewall.
Rede virtual myVnet Nome ou ID de uma rede virtual nova ou existente. Se você quiser usar uma rede virtual de um grupo de recursos ou assinatura diferente, forneça uma ID do recurso. O nome deve ter entre 2 e 64 caracteres. O nome deve: começar com uma letra ou um número; terminar com uma letra, um número ou um sublinhado; e pode conter apenas letras, números, sublinhados, pontos ou hifens.
subnet mySubnet Nome ou ID do recurso de uma sub-rede nova ou existente. Se você quiser usar uma sub-rede de um grupo de recursos ou assinatura diferente, forneça a ID do recurso em vez do nome. A sub-rede é delegada a flexibleServers. Após a delegação, essa sub-rede não poderá ser usada para nenhum outro tipo de recursos do Azure.
private-dns-zone myserver.private.contoso.com O nome ou a ID da zona DNS privada nova ou existente. Você pode usar a zona DNS privada do mesmo grupo de recursos, grupo de recursos diferente ou assinatura diferente. Se você quiser usar uma zona de um grupo de recursos ou assinatura diferente, forneça a ID do recurso. A CLI cria uma nova zona DNS privada dentro do mesmo grupo de recursos que a rede virtual, se não for fornecida pelos usuários.
chave identificador de chave de testKey A ID do recurso da chave de chave primária para criptografia de dados.
identity testIdentity O nome ou a ID do recurso da identidade atribuída pelo usuário para criptografia de dados.
storage-size 32 A capacidade de armazenamento do Servidor Flexível do Banco de Dados do Azure para MySQL de destino. O mínimo é 20 GiB e o máximo é 16 TiB.
marcas key=value Forneça o nome do grupo de recursos do Azure.
version 5.7 Versão principal do Servidor Flexível do Banco de Dados do Azure para MySQL de destino.
alta disponibilidade ComRedundânciaDeZona Habilite (ComRedundânciaDeZona ou MesmaZona) ou desabilite o recurso de alta disponibilidade para o Servidor Flexível do Banco de Dados do Azure para MySQL de destino. Valores aceitos: Desabilitado, MesmaZona, ComRedundânciaDeZona; Valor padrão: Desabilitado.
zona 1 Zona de disponibilidade na qual o recurso será provisionado.
standby-zone 3 As informações da zona de disponibilidade do servidor em espera quando a alta disponibilidade está habilitada.
storage-auto-grow habilitado Habilitar ou desabilitar o crescimento automático do armazenamento do Servidor Flexível do Banco de Dados do Azure para MySQL. O valor padrão é Habilitado. Valores aceitos: Desabilitado, Habilitado; Valor padrão: Habilitado.
iops 500 Número de IOPS a serem alocados para o Servidor Flexível do Banco de Dados do Azure para MySQL. Você recebe uma determinada quantidade de IOPS gratuitas com base na computação e no armazenamento provisionados. O valor padrão para IOPS é IOPS livre. Para saber mais sobre IOPS com base na computação e no armazenamento, consulte o IOPS no Servidor Flexível do Banco de Dados do Azure para MySQL.

Migração para o Servidor Flexível com tempo de inatividade mínimo

Para fazer uma migração online depois de concluir a propagação inicial do arquivo de backup usando a importação do Banco de Dados do Azure para MySQL, configure a replicação de dados entre a origem e o destino seguindo as etapas descritas aqui. Você pode usar a posição de bin-log capturada ao usar o arquivo de backup usando o Percona XtraBackup para configurar a replicação baseada na posição de Bin-log.

Quanto tempo a importação do Banco de Dados do Azure para MySQL leva para migrar minha instância do MySQL?

O desempenho do parâmetro de comparação com base no tamanho do armazenamento.

Tamanho do Armazenamento do Arquivo de Backup Tempo de Importação
1 GiB 0 min 23 seg
10 GiB 4 min 24 seg
100 GiB 10 min 29 seg
500 GiB 13 min 15 seg
1 TB 22 min 56 seg
10 TB 2 horas 5 min 30 seg

À medida que o tamanho do armazenamento aumenta, o tempo necessário para copiar os dados também aumenta, em uma relação quase linear. No entanto, é importante observar que a velocidade da cópia pode ser significativamente afetada por flutuações de rede. Portanto, os dados fornecidos aqui devem ser considerados apenas como uma referência.

Próxima etapa