Use o Data Transmission Service (DTS) para migrar bancos de dados entre instâncias do ApsaraDB RDS for SQL Server com tempo de inatividade mínimo ou nulo. O DTS oferece suporte a três tipos de migração: migração de esquema, migração completa de dados e migração incremental de dados. Você pode combiná-los conforme sua tolerância a indisponibilidade.
Permissões necessárias
Garanta que as contas de banco de dados das instâncias de origem e de destino tenham as permissões listadas abaixo. Para criar ou modificar contas, consulte criar uma conta e modificar permissões da conta.
| Banco de dados | Migração de esquema | Migração completa | Migração incremental |
|---|---|---|---|
| Instância de origem | Leitura | Leitura | Owner nos objetos a serem migrados |
| Instância de destino | Leitura e gravação | ||
Limitações e notas de uso
Revise todas as limitações antes de configurar a tarefa de migração. Ignorá-las pode causar falha na tarefa, inconsistência de dados ou perda de dados.
Limites de escala
Uma única tarefa de migração suporta até 10 bancos de dados. Exceder esse limite causa problemas de estabilidade e desempenho. Divida os bancos de dados em várias tarefas, se necessário.
Na migração incremental, mantenha o número de tabelas do banco de dados de origem abaixo de 1.000. Ultrapassar esse valor gera latência ou instabilidade na tarefa.
Ao usar o mapeamento de nomes de objetos para renomear tabelas no destino, uma única tarefa suporta até 1.000 tabelas. Exceder esse limite resulta em erro de requisição. Divida as tarefas ou migre o banco de dados inteiro.
-
Divida em múltiplas tarefas se alguma das condições a seguir se aplicar à instância de origem:
Mais de 10 bancos de dados
Frequência de backup de log superior a uma vez por hora para um único banco de dados
Frequência de DDL superior a 100 por hora para um único banco de dados
Volume de log superior a 20 MB/s para um único banco de dados
Se o banco de dados de origem for Enterprise Edition, ele deve ser versão 2008 ou posterior. Se for Standard Edition, deve ser versão 2016 SP1 ou posterior.
Caso o banco de dados de origem seja SQL Server 2017 (incluindo Standard Edition e Enterprise Edition), recomendamos atualizar para uma versão mais recente.
Requisitos de estrutura de tabela
As tabelas a serem migradas devem ter restrições
PRIMARY KEYouUNIQUEcom todos os campos únicos. Caso contrário, o banco de dados de destino poderá conter registros duplicados.Se o modo de sincronização incremental estiver definido como Incremental synchronization based on logs of source database (heap tables are not supported), as tabelas devem ter índices clusterizados que incluam colunas de chave primária. Tabelas heap, tabelas sem chaves primárias, tabelas compactadas e tabelas com colunas computadas não são suportadas.
Quando o modo de sincronização incremental for Hybrid log-based parsing, as limitações de estrutura de tabela acima não se aplicam, mas os jobs de Change Data Capture (CDC) no banco de dados de origem devem estar em execução adequada.
Não é possível ativar CDC para tabelas com índices columnstore clusterizados.
Restrições de operações DDL
Não execute operações DDL (como modificar estruturas de tabela ou banco de dados) durante a migração de esquema ou a migração completa de dados. A tarefa falhará.
Evite executar operações contínuas de adição ou remoção de colunas durante a migração incremental. Mais de duas operações DDL de adição ou remoção de coluna em um minuto podem causar falha na tarefa. Mantenha intervalos superiores a 10 minutos entre essas operações.
O DTS não consegue migrar operações DDL na chave primária de uma tabela com CDC ativado.
O DTS não migra: DDL transacional (DDL de múltiplas colunas ou DDL combinado com DML em uma única instrução), DDL com tipos definidos pelo usuário, DDL online, DDL em objetos cujos nomes contenham palavras-chave reservadas ou DDL executado via procedimentos armazenados do sistema.
Restrição de reindexação
Não realize operações de reindexação durante a migração incremental de dados. A tarefa pode falhar e ocorrer perda de dados.
Tipos de dados não suportados
Os seguintes tipos de dados não são suportados: CURSOR, ROWVERSION, SQL_VARIANT, HIERARCHYID, POLYGON, GEOMETRY, GEOGRAPHY.
Requisitos de retenção de log
Apenas migração incremental: retenha os logs do banco de dados de origem por mais de 24 horas
Migração completa + migração incremental de dados: retenha os logs por pelo menos 7 dias (após a conclusão da migração completa, esse período pode ser reduzido para mais de 24 horas)
Para tarefas de migração incremental, os logs de dados do banco de dados de origem devem estar habilitados, o modo de backup deve estar definido como
Fulle um backup físico completo deve ter sido concluído com êxito.
Requisitos de configuração do CDC
Se for necessário ativar o CDC nas tabelas de origem, o campo
srvnamena viewsys.sysserversdeve corresponder ao valor retornado pela funçãoSERVERPROPERTY.Se o banco de dados de origem for ApsaraDB RDS for SQL Server, o proprietário do banco de dados deve ser sqlsa.
O componente CDC retém dados incrementais por 3 dias por padrão. Ajuste esse valor conforme suas necessidades de negócio.
Se a média diária de alterações SQL incrementais para uma única tabela exceder 10 milhões, defina o tempo de retenção do CDC para 1.440 minutos (1 dia).
-
Caso um único campo em uma tabela com CDC ativado precise gravar dados superiores a 64 KB, execute o seguinte comando no banco de dados de origem antes de iniciar a tarefa:
EXEC sp_configure 'max text repl size', -1;
Triggers e chaves estrangeiras
Se a tarefa de migração incluir migração incremental de dados, desative todos os triggers e chaves estrangeiras no banco de dados de destino antes de começar. Caso contrário, a tarefa poderá falhar ou haver perda de dados.
Nomenclatura de banco de dados
Se o nome do banco de dados a ser migrado não estiver em conformidade com as convenções de nomenclatura do ApsaraDB RDS for SQL Server, crie o banco de dados manualmente na instância de destino antes de configurar a tarefa de migração.
Transparent Data Encryption (TDE)
Se o banco de dados de origem for ApsaraDB RDS for SQL Server e a tarefa incluir migração incremental, desative o TDE para garantir a operação estável da instância de migração.
Contas de sistema do DTS
Não exclua nem modifique contas de sistema do DTS (como rdsdt_dtsacct) durante a execução da tarefa. A tarefa falhará.
Retomada automática de tarefa e risco de cutover
O DTS tenta retomar automaticamente tarefas de migração que falharam nos últimos 7 dias. Antes de alternar as cargas de trabalho para a instância de destino, encerre ou libere a tarefa, ou revogue as permissões de gravação da conta do DTS na instância de destino. Caso contrário, os dados na instância de destino poderão ser sobrescritos.
Outras observações
Certifique-se de que o servidor que hospeda o banco de dados de origem tenha largura de banda de saída suficiente. Largura de banda insuficiente reduz a velocidade da migração. Recomendamos realizar tarefas de migração fora dos horários de pico para evitar aumento na carga do banco de dados.
Para migração entre versões diferentes, verifique a compatibilidade antecipadamente. Consulte Diferenças de recursos entre versões do ApsaraDB RDS for SQL Server.
Durante a análise baseada em log híbrida, o DTS cria os seguintes objetos no banco de dados de origem: o trigger
dts_cdc_sync_ddl, a tabela de heartbeatdts_sync_progresse a tabela de armazenamento de DDLdts_cdc_ddl_history. Esses objetos não podem ser excluídos manualmente.Durante a migração completa de dados, ative o modo de isolamento de transação
READ_COMMITTED_SNAPSHOTno banco de dados de origem para evitar que bloqueios compartilhados afetem as operações de gravação.Após a conclusão da migração completa de dados, o armazenamento da tabela de destino pode ser maior que o da origem devido à fragmentação causada por operações INSERT concorrentes.
A migração incremental de dados não é suportada quando a versão do banco de dados de origem é ApsaraDB RDS for SQL Server 2008 ou 2008 R2.
Configurar a tarefa de migração
Etapa 1: Conectar bancos de dados de origem e destino
No painel de navegação à esquerda, clique em Data Migration e selecione uma região.
-
Clique em Create Task e configure as conexões dos bancos de dados de origem e destino.
Seção Parâmetro Descrição — Task Name Insira um nome descritivo para facilitar a identificação. Não é necessário que seja único. Source Database Select Existing Connection Se você salvou anteriormente detalhes de conexão na página DTS Data Connection Management, selecione a conexão aqui para pular a entrada manual. Database Type Selecione SQL Server. Access Method Selecione Cloud Instance. Instance Region Selecione a região da instância do ApsaraDB RDS for SQL Server de origem. Replicate Data Across Alibaba Cloud Accounts Selecione No para migração entre instâncias na mesma conta Alibaba Cloud. RDS Instance ID Selecione o ID da instância de origem. Database Account Insira a conta do banco de dados da instância de origem com as permissões necessárias. Database Password Insira a senha da conta do banco de dados. Encryption Selecione Non-encrypted se o SSL não estiver habilitado. Selecione SSL-encrypted se o banco de dados de origem tiver Secure Sockets Layer (SSL) habilitado — o DTS confia no certificado do servidor por padrão. Destination Database Select Existing Connection Se você salvou anteriormente detalhes de conexão na página DTS Data Connection Management, selecione a conexão aqui para pular a entrada manual. Database Type Selecione SQL Server. Access Method Selecione Cloud Instance. Instance Region Selecione a região da instância do ApsaraDB RDS for SQL Server de destino. Instance ID Selecione o ID da instância de destino. Database Account Insira a conta do banco de dados da instância de destino com as permissões necessárias. Database Password Insira a senha da conta do banco de dados. Encryption Selecione Non-encrypted se o SSL não estiver habilitado. Selecione SSL-encrypted se o banco de dados de destino tiver SSL habilitado — o DTS confia no certificado do servidor por padrão. -
Clique em Test Connectivity and Proceed.
Certifique-se de que os intervalos de endereços IP do servidor DTS foram adicionados às configurações de segurança dos bancos de dados de origem e de destino. Consulte Adicionar os blocos CIDR dos servidores DTS às configurações de segurança .
Etapa 2: Selecionar objetos para migrar
Na página Configure Objects, configure as definições de migração.
|
Parâmetro |
Descrição |
|
Migration Types |
Selecione os tipos de migração que correspondem à sua abordagem. Para migração completa: selecione Schema Migration e Full Data Migration. Para migração com tempo de inatividade mínimo: selecione Schema Migration, Full Data Migration e Incremental Data Migration. |
|
Method to Migrate Triggers in Source Database |
Escolha um método de migração de triggers baseado em seus requisitos. Pule esta opção se os objetos a serem migrados não contiverem triggers. Este parâmetro está disponível apenas quando Schema Migration e Incremental Data Migration estiverem selecionados. |
|
SQL Server Incremental Synchronization Mode |
Disponível apenas quando Incremental Data Migration estiver selecionado. Consulte Modos de sincronização incremental para comparação. |
|
The maximum number of tables for which CDC is enabled that DTS supports |
Defina o número máximo de tabelas com CDC habilitado para a instância de migração atual. Padrão: 1.000. Indisponível quando o modo de sincronização é Incremental synchronization based on logs of source database (heap tables are not supported). |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors (padrão): O DTS verifica se existem tabelas no destino com os mesmos nomes da origem. A tarefa só inicia se nenhum conflito for encontrado. Ignore Errors and Proceed: Ignora essa verificação. Durante a migração completa, o DTS mantém os registros existentes no destino e pula os registros conflitantes da origem. Durante a migração incremental, novos dados da origem podem sobrescrever dados do destino, causando perda de dados. Use com cautela. |
|
Source Objects |
Selecione os objetos a serem migrados e clique no ícone de seta para movê-los para Selected Objects. Selecionar tabelas ou colunas exclui outros tipos de objetos, como views, triggers e procedimentos armazenados. |
|
Selected Objects |
Para renomear um único objeto no destino, clique com o botão direito nele. Consulte Mapear o nome de um único objeto. Para renomear vários objetos, clique em Batch Edit. Consulte Mapear vários nomes de objetos de uma vez. Para filtrar linhas por condição, clique com o botão direito em uma tabela e configure uma condição de filtro. |
Renomear um objeto pode fazer com que objetos dependentes falhem na migração.
Etapa 3: Configurar definições avançadas
Clique em Next: Advanced Settings e configure as opções a seguir.
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS usa o cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte O que é um cluster dedicado do DTS. |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta reconectar após falhas de conexão depois que a tarefa inicia. Valores válidos: 10–1.440 minutos. Padrão: 720. Defina um valor maior que 30. Durante as tentativas, você é cobrado pela instância do DTS. |
|
Retry Time for Other Issues |
Tempo durante o qual o DTS tenta repetir operações DDL ou DML falhas. Valores válidos: 1–1.440 minutos. Padrão: 10. Defina um valor maior que 10. Deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita o uso de recursos de leitura/gravação durante a migração completa de dados para reduzir a carga do banco de dados. Configure QPS (queries per second) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s). Disponível apenas quando Full Data Migration estiver selecionado. |
|
Enable Throttling for Incremental Data Migration |
Limita o uso de recursos durante a migração incremental. Configure RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado. |
|
Environment Tag |
Uma tag opcional para identificar a instância do DTS por ambiente. |
|
Configure ETL |
Selecione Yes para configurar o processamento de extração, transformação e carga (ETL). Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. Selecione No para pular. |
|
Monitoring and Alerting |
Selecione Yes para receber alertas quando a tarefa falhar ou a latência exceder um limiar. Configure o limiar de alerta e os contatos de notificação. Consulte Configurar monitoramento e alertas. |
Etapa 4: Configurar verificação de dados (opcional)
Clique em Next Step: Data Verification para configurar uma tarefa de verificação de dados. Consulte Configurar uma tarefa de verificação de dados.
Etapa 5: Executar a pré-verificação e adquirir uma instância
-
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros da API para esta configuração de tarefa, passe o mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .
Aguarde a conclusão da pré-verificação. Se algum item falhar, clique em View Details, solucione os problemas e execute a pré-verificação novamente. Se um item gerar um alerta que possa ser ignorado, clique em Confirm Alert Details > Ignore > OK, e então clique em Precheck Again. Ignorar alertas pode resultar em inconsistência de dados.
Quando a Success Rate atingir 100%, clique em Next: Purchase Instance.
-
Na página Purchase Instance, configure a classe da instância.
Parâmetro
Descrição
Resource Group
O grupo de recursos para a instância de migração. Padrão: default resource group. Consulte O que é Resource Management?
Instance Class
Selecione uma classe de instância com base na velocidade de migração necessária. Consulte Classes de instância de instâncias de migração de dados.
Aceite os Data Transmission Service (Pay-as-you-go) Service Terms e clique em Buy and Start. Na caixa de diálogo de confirmação, clique em OK.
Monitorar a tarefa
Visualize o progresso da tarefa na página Data Migration.
Tarefas sem migração incremental de dados param automaticamente ao serem concluídas. O status mostra Completed.
Tarefas com migração incremental de dados executam continuamente e não param automaticamente. O status mostra Running.
Modos de sincronização incremental
Esta seção aplica-se quando Incremental Data Migration é selecionado como tipo de migração.
|
Modo |
Vantagens |
Desvantagens |
Use quando |
|
Hybrid log-based parsing (Análise baseada em log para tabelas não-heap e sincronização incremental baseada em CDC para tabelas heap) |
Suporta tabelas heap, tabelas sem chaves primárias, tabelas compactadas e tabelas com colunas computadas. Oferece uma variedade maior de instruções DDL. |
O DTS cria o trigger |
As tabelas de origem incluem tabelas heap, tabelas sem chaves primárias, ou tabelas compactadas ou com colunas computadas. Edições de origem suportadas: Enterprise ou Enterprise Evaluation (2012, 2014, 2016, 2019, 2022), Standard (2016, 2019, 2022). |
|
Incremental synchronization based on logs of source database (tabelas heap não são suportadas) |
Nenhuma alteração é feita no banco de dados de origem. |
Não suporta tabelas heap, tabelas sem chaves primárias, tabelas compactadas ou tabelas com colunas computadas. |
A origem é uma edição web do RDS for SQL Server (este modo é obrigatório). As tabelas de origem atendem a todos os requisitos estruturais. |
|
Polling and querying CDC instances for incremental synchronization |
Suporta migração do Amazon RDS for SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure SQL Server on Virtual Machine e Google Cloud SQL for SQL Server. Usa o componente CDC nativo do SQL Server para migração incremental estável com menor uso de largura de banda de rede. |
A conta do DTS deve ter permissão para ativar o CDC. A migração incremental tem uma latência de aproximadamente 10 segundos. Problemas de estabilidade e desempenho podem ocorrer ao migrar muitos bancos de dados e tabelas simultaneamente. |
A origem é uma instância SQL Server de nuvem de terceiros fora da Alibaba Cloud. |
Apêndice: Operações SQL suportadas para migração incremental
Operações DML
INSERT, UPDATE, DELETE
O DTS não migra instruções UPDATE que atualizam apenas campos de objeto grande (LOB).
Operações DDL
ALTER TABLE— suporta apenasADD COLUMN,DROP COLUMNeRENAME COLUMN-
CREATE TABLE,CREATE INDEXCREATE TABLEnão suporta partições ou funções dentro das definições de tabela. DROP TABLERENAME TABLE
As seguintes operações DDL não são migradas:
DDL transacional (DDL de múltiplas colunas ou DDL combinado com DML em uma única instrução) — pode ocorrer perda de dados
DDL com tipos definidos pelo usuário
DDL online
DDL em objetos cujos nomes contenham palavras-chave reservadas
DDL executado via procedimentos armazenados do sistema
TRUNCATE TABLE