Alterar o conjunto de caracteres de uma tabela (por exemplo, de gbk para utf8mb4) com o comando ALTER bloqueia a tabela, o que pode impactar significativamente seus serviços quando a tabela é grande.
Para evitar o bloqueio da tabela, crie um esquema de tabela com o novo conjunto de caracteres em uma instância de destino, migre os dados da instância source usando o Data Transmission Service (DTS) e configure uma solução de rollback ou gravação dupla para garantir uma transição suave.
Precauções
Antes de alterar o conjunto de caracteres, teste suas aplicações e instruções SQL para garantir que sejam compatíveis com o novo conjunto de caracteres.
Durante uma migração de dados completa, o DTS consome recursos de leitura e gravação nas instâncias source e de destino, o que pode aumentar a carga do banco de dados. Avalie o desempenho de ambas as instâncias e considere migrar os dados em horários de menor movimento.
Se uma tabela na instância source não tiver uma chave primária ou restrição de exclusividade, e suas colunas não garantirem exclusividade, a migração poderá criar dados duplicados na instância de destino.
Etapa 1: Exportar e importar o esquema da tabela
Neste exemplo, todas as instâncias acessadas por meio do Data Management (DMS) utilizam o Flexible Control Mode.
-
Exporte o script de esquema das tabelas cujo conjunto de caracteres você deseja alterar a partir da instância source.
Faça logon na instância source usando o DMS. Para mais informações, consulte Log on to an ApsaraDB RDS instance by using DMS.
-
Na barra de navegação superior, escolha .
NotaPara realizar esta operação, você deve primeiro ativar a opção Drop-down Menus in Top Navigation Bar no menu de configurações, acessível pelo ícone no canto superior direito.
-
Configure as opções de exportação.
NotaOs parâmetros necessários e o processo de configuração podem variar dependendo do modo de gerenciamento da instância de destino. Para mais informações, consulte Export databases.
Configuração
Descrição
Data Export Type in Application
Selecione Database Export.
Database name
Selecione o banco de dados que deseja exportar.
NotaVocê deve ter as permissões necessárias para exportar o banco de dados. Para mais informações, consulte View my permissions.
Exported table
Neste exemplo, Specific Tables está selecionado. Você pode selecionar Specific Tables ou All Tables de acordo com suas necessidades.
NotaSe você selecionar Specific Tables, deverá selecionar as tabelas e configurar as condições de filtro no lado direito da página.
Export content
Selecione Code Structure.
File Format
Neste exemplo, SQL está selecionado por padrão e não pode ser alterado.
Exported Structure Type
Selecione os tipos de esquema a serem exportados com base nos requisitos do seu negócio.
-
Procedure
-
Function
-
Trigger
-
View
-
Event
NotaOs tipos de esquema suportados variam dependendo do tipo de banco de dados. As opções exibidas no console são definitivas.
More Options
Clique em Big Data Export Options ou SQL Script Options e, em seguida, selecione as opções necessárias.
-
clique em Submit an application e aguarde a aprovação do ticket.
Após a aprovação do ticket, na seção Download, clique em Download Exported File. O link para download é válido por 24 horas. Certifique-se de baixar o arquivo dentro deste período.
Descompacte o arquivo baixado. Em seguida, abra o script de esquema e modifique a configuração do conjunto de caracteres para o conjunto de caracteres de destino.
Adquira uma nova instância do ApsaraDB RDS for MySQL com as mesmas especificações da instância source. Para mais informações, consulte crie an ApsaraDB RDS for MySQL instance.
-
Importe o script de esquema modificado para a nova instância do ApsaraDB RDS for MySQL.
Faça logon na nova instância do ApsaraDB RDS for MySQL usando o DMS. Para mais informações, consulte Log on to an ApsaraDB RDS instance by using DMS.
Na barra de navegação superior, escolha .
-
Configure as opções de importação.
NotaOs parâmetros necessários e o processo de configuração podem variar dependendo do modo de gerenciamento da instância. Para mais informações, consulte Import data.
Parâmetro
Descrição
Data Change Type in Application
Selecione Large Data Import.
Database
O banco de dados de destino para a importação.
NotaPara instâncias no Flexible ou Stable Control Mode, você deve fazer logon no banco de dados antes de poder selecioná-lo.
File Encoding
Selecione a codificação de caracteres do arquivo de importação:
-
UTF-8
-
GBK
-
ISO-8859-1
-
Auto-detect
Import Mode
Selecione um modo de importação:
-
Speed Mode: Durante a fase de execução, o sistema lê o arquivo e executa diretamente as instruções SQL no banco de dados de destino. Este modo é mais rápido, porém menos seguro que o Security Mode.
NotaPor padrão, as regras de segurança para o modo Speed Mode não permitem a importação de dados no Speed Mode. Você pode ativar esse recurso para a regra de segurança relevante em .
-
Security Mode: Durante a fase de pré-verificação, o sistema analisa o arquivo e armazena em cache os dados SQL ou CSV. Durante a fase de execução, ele lê do cache e executa as instruções no banco de dados de destino. Este modo oferece melhor segurança, mas é mais lento que o Speed Mode.
File Type
Selecione o tipo de arquivo que você está importando.
-
Script SQL: No modo Security Collaboration, apenas os tipos de comando INSERT e REPLACE são permitidos por padrão. Um DBA ou administrador pode modificar as configurações em Security Rules > SQL Correct > Large Data Import.
-
CSV: O delimitador no arquivo deve ser uma vírgula.
-
Excel: O arquivo Excel pode conter cabeçalhos (atributos) ou apenas dados.
Attachment
Clique em File para enviar o anexo.
Nota-
Os tipos de arquivo SQL, CSV, TXT, XLSX e ZIP são suportados.
-
O tamanho máximo do arquivo é de 5 GB.
Other Options
Selecione se deseja ignorar erros.
-
Não ignorar (desmarcado): Padrão. Se ocorrer um erro, o sistema interrompe a execução das instruções SQL subsequentes e reporta um erro.
-
Ignorar (marcado): Se ocorrer um erro, o sistema o ignora e continua a executar as instruções SQL subsequentes.
-
-
Clique em Submit an application. Aguarde a aprovação da pré-verificação do sistema. Se a pré-verificação falhar, identifique e corrija o problema com base no aviso e, em seguida, envie o ticket novamente.
NotaO sistema faz uma pré-verificação do seu script SQL enviado. Se você enviar um arquivo CSV, ele gerará as instruções
INSERTcorrespondentes. Após a aprovação do ticket, na seção Perform, clique em Execute Change.
-
Na caixa de diálogo Task Settings, escolha quando executar o ticket. Você pode escolher Execute Immediately. Caso contrário, desative a opção Execute Immediately e selecione um horário de início. Em seguida, clique em Confirm Execution. A caixa de diálogo também exibe um Note for Security Change: Tente executar em horários de menor movimento.
Os métodos de execução são os seguintes:
Running Immediately: Padrão. A tarefa é executada imediatamente após você clicar em Confirm Execution.
Schedule: Selecione um horário de início para a tarefa. A tarefa é executada automaticamente no horário especificado após você clicar em Confirm Execution.
NotaDurante a execução, o sistema lê o SQL analisado em um fluxo e o executa em lotes no banco de dados. O tamanho de cada lote é de 1 MB.
Você pode visualizar o status da tarefa, os detalhes da verificação de SQL e os logs de agendamento na seção Execution.
-
Quando uma tarefa pausada é reiniciada, seu comportamento depende do modo de importação:
Speed Mode: A execução do script ou a importação do arquivo de dados começa do início.
Security Mode: A execução do script ou a importação do arquivo de dados é retomada a partir do ponto de pausa.
Após a importação ser concluída com sucesso, você pode verificar o conjunto de caracteres da tabela executando o comando
show create table <table_name>;.
Etapa 2: Migrar dados para a nova instância
-
Faça logon no console do Data Transmission Service (DTS).
NotaSe você for redirecionado automaticamente para o console do Data Management (DMS), clique no ícone
no chatbot
no canto inferior direito para retornar à versão anterior do console do DTS.Se você estiver no novo console do DTS, clique no ícone
no canto inferior direito para retornar à versão anterior.
No painel de navegação à esquerda, clique em Data Migration.
-
Na parte superior da página Migration Tasks, selecione a região do cluster de destino.
No canto superior direito da página, clique em Create Data Migration Task.
-
Configure os bancos de dados source e de destino para a tarefa de migração.
Categoria
Configuração
Descrição
Nome da tarefa
-
O DTS gera automaticamente um nome para a tarefa. Especifique um nome descritivo para fácil identificação. O nome não precisa ser único.
Banco de dados source
Tipo de instância
Selecione RDS Instance.
Região da instância
Selecione a região onde a instância RDS source está localizada.
ID da instância RDS
Selecione o ID da instância RDS source.
Conta do banco de dados
Insira a conta do banco de dados para a instância RDS source. Esta conta deve ter permissões de leitura e gravação nos bancos de dados a serem migrados.
Senha do banco de dados
Insira a senha da conta do banco de dados.
NotaApós inserir as informações do banco de dados source, você pode clicar em Test Connectivity ao lado de Database Password para verificar se as informações estão corretas. Se as informações estiverem corretas, a mensagem Passed será exibida. Se a mensagem Failed for exibida, clique em Diagnose ao lado da mensagem Failed e ajuste as informações do banco de dados source com base nos avisos.
Método de conexão
Selecione Non-encrypted ou SSL-encrypted. Se você escolher SSL-encrypted, deverá primeiro ativar a criptografia SSL para a instância RDS. Para mais informações, consulte Configure SSL encryption.
NotaA configuração Encryption está disponível apenas em regiões na parte continental da China.
Banco de dados de destino
Tipo de instância
Selecione RDS Instance.
Região da instância
Selecione a região onde a instância RDS de destino está localizada.
ID da instância RDS
Selecione o ID da instância RDS de destino.
Conta do banco de dados
Insira a conta do banco de dados para a instância RDS de destino. Esta conta deve ter permissões de leitura e gravação nos bancos de dados de destino.
Senha do banco de dados
Insira a senha da conta do banco de dados.
NotaApós inserir as informações do banco de dados de destino, você pode clicar em Test Connectivity após Database Password para verificar se as informações inseridas estão corretas. Se as informações estiverem corretas, uma mensagem Passed será exibida. Se uma mensagem Failed for exibida, clique em Diagnose após Failed e ajuste as informações do banco de dados de destino com base nos avisos.
Método de conexão
Selecione Non-encrypted ou SSL-encrypted. Se você escolher SSL-encrypted, deverá primeiro ativar a criptografia SSL para a instância RDS. Para mais informações, consulte Configure SSL encryption.
NotaA configuração Encryption está disponível apenas em regiões na parte continental da China.
-
Após concluir a configuração, clique em Add Whitelist and Proceed to Next Step no canto inferior direito da página.
NotaOs endereços IP dos servidores DTS são adicionados automaticamente à lista de permissões da instância do ApsaraDB RDS for MySQL para garantir a conectividade entre os servidores DTS e as instâncias source e de destino.
-
Selecione os tipos e objetos de migração.
Configuração
Descrição
Tipos de migração
Como a migração de esquema foi concluída em Step 1, você não precisa selecionar Schema Migration aqui.
-
Para realizar apenas uma migração completa, selecione apenas Full Data Migration.
AvisoPara garantir a consistência dos dados, não grave novos dados na instância source durante a migração completa de dados.
-
Para uma migração sem tempo de inatividade, selecione Full Data Migration e Incremental Data Migration.
NotaAs operações SQL suportadas durante a fase de migração incremental de dados são INSERT, atualize, exclua, crie TABLE, ALTER TABLE, RENAME TABLE, TRUNCATE TABLE e DROP TABLE.
Objetos de migração
Na caixa Migration Object, selecione os objetos cujos esquemas você migrou em Step 1. Em seguida, clique no ícone
para movê-los para a caixa Selected Objects.AvisoNão realize o mapeamento de nomes de objetos, pois o esquema já foi migrado. Isso fará com que a migração falhe.
-
-
Inicie a tarefa de migração.
-
No canto inferior direito da página, clique em Precheck and Start.
NotaO DTS realiza uma pré-verificação antes de iniciar a tarefa de migração. A tarefa só pode prosseguir após passar na pré-verificação.
Se a pré-verificação falhar, clique no ícone
ao lado de um item de verificação específico para visualizar seus detalhes. Corrija o problema com base no aviso e, em seguida, execute a pré-verificação novamente.
Após a pré-verificação ser aprovada, clique em Next.
Na caixa de diálogo Confirm Settings, selecione a Instance Class e marque a caixa de seleção Data Transmission Service (Pay-As-You-Go) Terms of Service.
Clique em Buy and Start para iniciar a tarefa de migração.
-
Etapa 3: Realizar o switchover da carga de trabalho
Escolha uma das seguintes soluções com base nas necessidades do seu negócio.
-
Solução de rollback (não requer alterações na aplicação, mas o rollback pode falhar):
Verifique os dados migrados na instância do ApsaraDB RDS for MySQL de destino.
Siga o procedimento no documento Workload switchover procedure para alternar sua carga de trabalho e estabelecer um plano de rollback. Isso envolve migrar dados incrementais da nova instância de destino de volta para a instância source original.
Mantenha a tarefa de migração reversa de dados em execução por um ciclo de negócios. Após o ciclo, teste todas as funcionalidades. Se tudo funcionar corretamente, interrompa a tarefa de migração reversa de dados.
Opcional: Se a instância source não for mais necessária, você pode liberá-la (se for uma instância de pagamento conforme o uso) ou cancelar sua assinatura (se for uma instância de assinatura).
-
Solução de gravação dupla (maior taxa de sucesso de rollback, mas requer alterações significativas na aplicação):
Modifique sua aplicação para implementar uma lógica de gravação dupla, onde as alterações de dados são gravadas nas instâncias source e de destino simultaneamente.
-
Interrompa a tarefa de migração de dados.
-
Migração completa de dados
Não interrompa manualmente uma tarefa durante a migração completa de dados. Caso contrário, o sistema pode falhar ao migrar todos os dados. Aguarde até que a tarefa de migração termine automaticamente.
-
Migração incremental de dados
Este tipo de tarefa não para automaticamente; você deve interrompê-la manualmente.
Aguarde até que a tarefa entre no estágio de Incremental Data Migration com o status Undelayed. Em seguida, interrompa as gravações no banco de dados source por alguns minutos. Durante este período, o status de Incremental Data Migration pode reportar uma latência.
Aguarde o status de Incremental Data Migration retornar para Undelayed. Assim que isso for confirmado na lista, selecione a caixa de seleção da tarefa e clique no botãoStopEndna barra de operações em lote na parte inferior.
NotaVocê pode fazer logon na instância source e executar
show processlist;para verificar as informações da sessão e garantir que nenhuma nova sessão esteja realizando operações de gravação. -
Verifique os dados migrados na instância do ApsaraDB RDS for MySQL de destino.
Configure sua aplicação para gravação dupla, onde as alterações de dados são gravadas nas instâncias source e de destino.
Mantenha o estado de gravação dupla por um ciclo de negócios. Após o ciclo, teste todas as funcionalidades. Se tudo funcionar corretamente, ajuste a aplicação para gravar apenas na instância de destino.
Opcional: Se a instância source não for mais necessária, você pode liberá-la (se for uma instância de pagamento conforme o uso) ou cancelar sua assinatura (se for uma instância de assinatura).