Use este método quando for possível tirar a instância MySQL auto-gerenciada do ar durante a migração. Faça um backup físico completo com o Percona XtraBackup, transmita-o para o Object Storage Service (OSS) e importe-o pelo console do ApsaraDB RDS para criar uma nova instância RDS.
Caso não seja possível interromper o banco de dados, use o Data Transmission Service (DTS) para migrar com tempo de inatividade mínimo.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância MySQL auto-gerenciada que atenda aos requisitos de migração. Consulte Limitations para ver a lista completa.
Um bucket do OSS na mesma região da instância RDS de destino. Consulte Create buckets caso precise criar um.
Go e Unzip instalados no host que executa a instância MySQL auto-gerenciada.
Limitações
Analise as restrições abaixo antes de prosseguir:
|
Categoria |
Restrição |
|
|
MySQL version |
A origem deve executar MySQL 5.7.32 ou anterior, ou MySQL 8.0.18 ou anterior. Origem e destino devem executar a mesma versão do MySQL. |
|
|
Ferramenta de backup |
O MySQL 5.7 exige o Percona XtraBackup 2.4. O MySQL 8.0 requer o Percona XtraBackup 8.0. |
|
|
Escopo do backup |
Apenas backup completo. Arquivos de backup diferencial e de log não são suportados. Dados incrementais gerados após a conclusão do backup não são incluídos. |
|
|
Opções do XtraBackup |
As opções |
|
|
Formato do arquivo de backup |
O arquivo deve estar no formato |
|
|
Criptografia do OSS |
Defina Encryption Method como None ao criar o bucket do OSS. Buckets criptografados não são suportados. |
|
|
Região do OSS |
O bucket do OSS deve estar na mesma região da instância RDS. |
|
|
Tamanho do arquivo no OSS |
Máximo de 16 TB ao fazer upload em partes via CLI. |
|
|
Diretório de dados |
O diretório |
grep datadir` para verificar. |
|
Configuração do InnoDB |
O parâmetro |
|
|
Destino |
Os dados só podem ser restaurados em uma nova instância RDS, não em uma existente. O destino deve ser uma instância de pagamento conforme o uso executando MySQL 5.7 ou MySQL 8.0 no RDS Basic Edition com SSDs padrão. |
|
|
Armazenamento |
A instância RDS de destino deve ter mais espaço de armazenamento do que os dados de origem. |
|
|
Não migrado |
Contas de usuário, funções personalizadas, procedimentos armazenados e informações de fuso horário não são migrados. Registre esses itens antes da migração e adicione-os manualmente depois. |
|
|
Replicação GTID |
Se você planeja replicar dados incrementais após a migração, ative a replicação baseada em GTID e defina |
|
|
AliyunRDSImportRole |
Após autorizar o ApsaraDB RDS a acessar o OSS, uma função do RAM chamada |
|
|
Retenção de backup |
Não exclua o arquivo de backup do OSS antes que a migração seja concluída. |
Identificar objetos que não são migrados
Execute a consulta a seguir na instância de origem para listar procedimentos armazenados e funções que precisam ser recriados após a migração:
SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE
FROM information_schema.routines
WHERE ROUTINE_SCHEMA NOT IN ('sys', 'information_schema', 'performance_schema', 'mysql');
Registre também as contas de usuário e as configurações de fuso horário antes de prosseguir.
Como funciona
Instale o Percona XtraBackup no host que executa a instância MySQL auto-gerenciada.
Instale o MySQL Backup Helper, que fornece o
backup_helper(verificação de compatibilidade) e ooss_stream(upload para o OSS).Execute uma verificação de compatibilidade, faça um backup completo e transmita-o diretamente para o OSS. Em seguida, importe o arquivo de backup pelo console do ApsaraDB RDS para criar uma nova instância RDS.
O ambiente neste guia usa uma instância Elastic Compute Service (ECS) executando CentOS Linux V8.3.2011. Para etapas específicas do Ubuntu, consulte o Apêndice 1: Instalar o Percona XtraBackup no Ubuntu e o Apêndice 2: Instalar Go e Unzip no Ubuntu.
Etapa 1: Instalar o Percona XtraBackup
Etapa 2: Instalar o MySQL Backup Helper
O MySQL Backup Helper oferece duas ferramentas: o backup_helper verifica se a instância suporta a migração, e o oss_stream transmite o backup diretamente para o OSS.
Instalar dependências (CentOS)
sudo yum install -y go
sudo yum install -y unzip
Para Ubuntu, consulte o Apêndice 2.
Compilar o MySQL Backup Helper
-
Baixe o código-fonte:
wget https://github.com/aliyun/mysql-backup-helper/archive/refs/heads/master.zip -
Descompacte o pacote:
unzip master.zip -
Compile o
backup_helper:cd mysql-backup-helper-master go build -a -o backup_helper main.go -
Compile o
oss_stream:cd oss_stream go build -a -o oss_stream oss_stream.go
Etapa 3: Fazer backup e migrar
3,1 Verificar a compatibilidade da migração
Execute o backup_helper para confirmar se a instância de origem suporta a migração:
cd ~/mysql-backup-helper-master && ./backup_helper \
-host <host-ip> \
-port <port> \
-user <username> \
--password <password>
Substitua os espaços reservados pelos valores reais:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
Endereço IP do host que executa a instância MySQL |
|
|
|
Porta do MySQL |
|
|
|
Nome de usuário da conta root |
|
|
|
Senha da conta root |
|
Se a verificação for bem-sucedida, prossiga para a próxima etapa.
3,2 Fazer backup e enviar para o OSS
O Percona XtraBackup grava a linha de comando completa (incluindo senhas) no arquivo xtrabackup_info dentro do backup. Após concluir o upload, verifique se esse arquivo não expõe credenciais sensíveis.
Execute o backup e transmita-o diretamente para o bucket do OSS. Selecione o comando correspondente à sua versão do MySQL.
MySQL 5.7
MySQL 5.7 — usa o innobackupex:
innobackupex --backup \
--host=<host-ip> \
--port=<port> \
--user=<username> \
--password=<password> \
--stream=xbstream \
--compress <temp-dir> | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId <AccessKey-ID> \
-accessKeySecret <AccessKey-secret> \
-bucketName <bucket-name> \
-endpoint <OSS-endpoint> \
-objectName <backup-file-name>
Exemplo:
innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ****** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb
MySQL 8.0
MySQL 8.0 — usa o xtrabackup:
xtrabackup --backup \
--host=<host-ip> \
--port=<port> \
--user=<username> \
--password=<password> \
--stream=xbstream \
--compress <temp-dir> | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId <AccessKey-ID> \
-accessKeySecret <AccessKey-secret> \
-bucketName <bucket-name> \
-endpoint <OSS-endpoint> \
-objectName <backup-file-name>
Exemplo:
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ******** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb
Substitua os espaços reservados pelos valores reais:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
Endereço IP do host que executa a instância MySQL |
|
|
|
Porta do MySQL |
|
|
|
Nome de usuário da conta root |
|
|
|
Senha da conta root |
|
|
|
Diretório temporário para o backup |
|
|
|
Seu AccessKey ID da Alibaba Cloud |
|
|
|
Seu AccessKey secret da Alibaba Cloud |
|
|
|
Nome do seu bucket do OSS |
|
|
|
Endpoint do seu bucket do OSS |
|
|
|
Nome a ser atribuído ao objeto de backup no OSS |
|
Para bancos de dados grandes, execute o comando com nohup para evitar interrupções caso a sessão seja desconectada. MySQL 5.7: MySQL 8.0:
nohup sh -c 'innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream --compress /root/mysql/data | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI**************** -accessKeySecret ****** -bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &
nohup sh -c 'xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** -accessKeySecret ****** \
-bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &
Quando o backup for concluído, o terminal exibirá completed OK !.
Faça login no console do OSS para confirmar se o arquivo foi enviado com sucesso. Se o upload falhar, execute o comando de backup novamente.
Se o OSS estiver temporariamente indisponível, salve o backup em um arquivo local primeiro e faça o upload posteriormente. Consulte o Apêndice 3: Fazer backup localmente e enviar para o OSS.
3,3 Importar o backup no console do ApsaraDB RDS
Faça login no console do ApsaraDB RDS. Na barra de navegação superior, selecione a região da instância RDS de destino. No painel de navegação à esquerda, clique em Backups.
Na aba User Backups, clique em Import Backup.
-
No assistente Import Guide, leia as instruções e clique em Next até chegar à etapa 3. Import Data.
As etapas 1. Back Up Source Database e 2. Upload Backup Files to OSS do assistente correspondem às etapas 3,1 e 3,2 deste guia.
-
Na etapa 3. Import Data, configure os parâmetros a seguir e clique em OK.
Se o ApsaraDB RDS não estiver autorizado a acessar o OSS, clique em Authorize na parte inferior desta etapa. Na página exibida, clique em Confirm Authorization Policy .
Parâmetro
Descrição
MySQL version
Exibe 5.7/8.0 automaticamente. Tanto o MySQL 5.7 quanto o MySQL 8.0 são suportados.
Region
Região do bucket do OSS que armazena o arquivo de backup. Deve corresponder à região da instância RDS de destino.
OSS Bucket
Bucket do OSS que contém o arquivo de backup. Consulte Upload objects para obter detalhes.
OSS file name
Objeto de backup no bucket do OSS. Suporta correspondência exata e aproximada. O arquivo deve estar no formato
_QP.XBou compactado comoTAR.GZ.Note
Descrição opcional para ajudar a identificar o arquivo de backup.
Zone
Zona do bucket do OSS. Selecionar uma zona permite que o ApsaraDB RDS crie um snapshot em segundos, reduzindo o tempo de importação. A nova instância RDS será criada nesta zona.
Storage Capacity
Armazenamento necessário para o arquivo de backup. Valores válidos: 20–6000 GB. O padrão é 3× o tamanho do arquivo de backup (mínimo de 20 GB).
-
Na aba User Backups, aguarde até que o Status da tarefa de verificação mude de Verifying para Completed.
ImportanteO tempo de verificação varia. Instâncias com alta atividade de escrita ou transações grandes durante o backup podem levar mais tempo para serem verificadas.
Localize o arquivo de backup e clique em Restore na coluna Actions.
-
Configure os parâmetros a seguir e clique em Next: Instance Configuration.
Parâmetro
Descrição
Zone of Primary Node
Zona para a instância RDS primária. Exibido apenas se você não selecionou uma zona ao importar o arquivo de backup.
Storage Type
ESSD PL1: SSD empresarial de nível de desempenho 1. Standard SSD: Dispositivo de armazenamento em bloco elástico padrão. Consulte Storage types para obter detalhes.
Instance Type
General-purpose (Entry-level): Memória e I/O alocados exclusivamente, com CPU e armazenamento compartilhados. Consulte Primary ApsaraDB RDS instance types para ver a lista completa.
Storage Capacity
Armazenamento provisionado para arquivos de dados, sistema, logs e transações. Ajustável em incrementos de 5 GB.
-
Configure os parâmetros a seguir e clique em Next: Confirm Order.
Parâmetro
Descrição
Network Type
Selecione VPC. Uma Virtual Private Cloud (VPC) oferece maior segurança e melhor desempenho. Você também deve configurar a VPC e o vSwitch of Primary Node. A instância RDS e qualquer instância ECS à qual você deseje se conectar devem estar na mesma VPC.
Parameter Template
Modelo de parâmetros do sistema ou personalizado. Consulte Use a parameter template.
Time Zone
Fuso horário da instância RDS.
Table Name Case Sensitivity
Se os nomes das tabelas na instância de origem diferenciam maiúsculas de minúsculas, selecione Case-sensitive para manter a consistência.
-
Confirme a configuração da instância na seção Parameters, defina o Purchase Plan, aceite os Termos de Serviço e clique em Pay Now.
O ApsaraDB RDS leva de 1 a 5 minutos para criar a instância.
Próximos passos
Configurar o período de retenção do backup
Por padrão, o arquivo de backup importado é retido por 3 dias. Ajuste o período de retenção conforme suas necessidades.
Faça login no console do ApsaraDB RDS. Selecione uma região e clique em Backups no painel de navegação à esquerda.
Localize o arquivo de backup. Na coluna Expiration Time, clique em Set Retention Period.
Selecione um período de retenção na lista suspensa ou escolha Custom Retention Period e insira um valor.
Clique em OK.
Se o tempo de expiração ultrapassar 2099, ele será exibido como Permanent .
Adicionar tags ao arquivo de backup
Faça login no console do ApsaraDB RDS. Selecione uma região e clique em Backups.
Localize o arquivo de backup. Na coluna Tags, clique em +Add.
-
Na caixa de diálogo, clique em Create a label, preencha os campos Key e Value, clique em OK ao lado dos campos para criar a tag e, em seguida, clique em OK no canto inferior direito.
Para usar uma tag existente, selecione-a na lista suspensa Select the label .
Para atualizar uma tag, passe o mouse sobre ela e clique em edit. Na dica de ferramenta, repita a etapa 3.
Verificar dados de log para recuperação incremental
Se ocorreram alterações nos dados da instância de origem durante o backup, o arquivo de backup conterá informações de log para recuperação incremental.
Faça login no console do ApsaraDB RDS. Selecione uma região e clique em Backups.
Localize o arquivo de backup e clique em View Details na coluna Actions.
-
Na mensagem exibida, revise os dados de log:
Master_Log_File: Primeiro arquivo de log contendo dados incrementais.
Master_Log_Position: Primeira entrada de log nesse arquivo que contém dados incrementais.
O período de retenção padrão para registros de validação de backup é de 7 dias. Após a migração, replique os dados incrementais da instância de origem para a instância RDS de destino o mais rápido possível.
Excluir o arquivo de backup
Se você não precisar mais do arquivo de backup, exclua-o para reduzir custos de armazenamento.
Faça login no console do ApsaraDB RDS. Selecione uma região e clique em Backups.
Localize o arquivo de backup e clique em Delete na coluna Actions.
Na caixa de diálogo de confirmação, clique em OK.
Atualizar sua instância RDS
Após a migração, você pode executar as operações a seguir na nova instância RDS:
Mais operações na aba User Backups
Filtrar colunas: Clique no ícone
no canto superior direito para mostrar ou ocultar colunas. Mova as colunas entre a lista oculta (esquerda) e a lista exibida (direita) usando os ícones
e
. Clique em OK.Exportar lista de instâncias: Clique no ícone
para exportar as informações de backup como um arquivo CSV.Atualizar: Clique no ícone
para atualizar a aba User Backups.
Apêndice 1: Instalar o Percona XtraBackup no Ubuntu
Apêndice 2: Instalar Go e Unzip no Ubuntu
Apêndice 3: Fazer backup localmente e enviar para o OSS
Use esta abordagem se o OSS estiver temporariamente indisponível quando você executar o backup.
Etapa 1: Fazer backup para um arquivo local
Selecione o comando correspondente à sua versão do MySQL.
MySQL 5.7:
innobackupex --backup \
--host=<host-ip> --port=<port> \
--user=<username> --password=<password> \
--stream=xbstream --compress <temp-dir> \
> /<backup-dir>/<backup-file-name>_qp.xb
Exemplo:
innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data > /root/backup_qp.xb
MySQL 8.0:
xtrabackup --backup \
--host=<host-ip> --port=<port> \
--user=<username> --password=<password> \
--stream=xbstream --compress <temp-dir> \
> /<backup-dir>/<backup-file-name>_qp.xb
Exemplo:
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data > /root/backup_qp.xb
Etapa 2: Enviar o arquivo local para o OSS
Quando o OSS estiver disponível, faça o upload usando o oss_stream:
cat /<backup-dir>/<backup-file-name>_qp.xb | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ******** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb
Exemplo:
cat /root/backup_qp.xb | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId ******** \
-accessKeySecret LTAI**************** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb