Seis soluções para migrar bancos de dados SQL Server para o ApsaraDB RDS for SQL Server, cada uma adequada a diferentes ambientes de origem, tolerâncias a tempo de inatividade e requisitos de recursos.
Pré-requisitos
Antes de começar:
Uma instância de destino do ApsaraDB RDS for SQL Server com especificações e armazenamento pelo menos iguais aos do banco de dados de origem. Crie uma instância do ApsaraDB RDS for SQL Server
Versões dos bancos de dados de origem e de destino compatíveis com o Data Transmission Service (DTS), caso utilize o DTS.
Blocos CIDR do servidor DTS adicionados às configurações de segurança dos bancos de dados de origem e de destino, caso utilize o DTS.
Regras de firewall, listas de permissões e grupos de segurança configurados para permitir o acesso das ferramentas de migração.
Lista de verificação de preparação
Antes de selecionar uma solução:
-
Verifique a compatibilidade de versões. Execute a seguinte consulta nas instâncias de origem e de destino para confirmar se o nível de compatibilidade do destino é igual ou superior ao da origem:
SELECT name, compatibility_level FROM sys.databases; Verifique o acesso à rede. Confirme se os bancos de dados de origem e de destino aceitam conexões dos servidores DTS ou de outras ferramentas de migração.
Avalie as características do banco de dados de origem. Identifique tabelas heap, tabelas sem chaves primárias, tabelas compactadas e tabelas com colunas computadas. Esses fatores determinam os modos disponíveis no DTS. Perguntas frequentes sobre como verificar tipos de tabela.
Confira a edição e a versão de origem. Alguns modos de migração exigem edições e versões específicas do SQL Server (detalhes na matriz de capacidades abaixo).
Soluções de migração
Seis soluções em três categorias: backup físico, migração lógica via DTS e migração manual por meio do SQL Server Management Studio (SSMS).
Backup físico via Object Storage Service (OSS) (manual)
Faça upload manual de backups completos e incrementais para o OSS e restaure-os na instância de destino.
Procedimento:
Defina o parâmetro
backup_typecomoFULLno banco de dados de origem.Crie um backup completo e faça upload dele para um bucket do OSS.
Faça backup e upload de logs incrementais conforme uma programação definida.
Interrompa as gravações no banco de dados de origem. Após a reprodução bem-sucedida do último log incremental, transfira as cargas de trabalho para o destino.
Se o banco de dados de origem executar o SQL Server 2008 R2, atualize a versão do banco antes de realizar esta operação.
Backup físico via Data Disaster Recovery e DTS
Utilize um gateway físico e o DTS para automatizar o upload e a restauração de backups.
Procedimento:
Implante um gateway físico.
Use o DTS para migrar os dados. O sistema faz automaticamente o upload dos dados de backup para o OSS.
Interrompa as gravações no banco de dados de origem. Após a reprodução bem-sucedida do último log incremental, transfira as cargas de trabalho para o destino.
Migração lógica via DTS: modo de análise de log
O DTS lê e analisa os logs de transações do banco de dados de origem para capturar alterações.
Procedimento:
Crie uma tarefa de migração de dados no DTS. Defina o parâmetro SQL Server Incremental Synchronization Mode como Incremental Synchronization Based on Logs of Source Database (Heap tables are not supported).
Interrompa as gravações no banco de dados de origem. Após a reprodução bem-sucedida do último log incremental, transfira as cargas de trabalho para o destino.
Migração lógica via DTS: modo híbrido de análise de log
Combina a análise baseada em log para tabelas não heap com o Change Data Capture (CDC) para tabelas heap, ampliando a variedade de tipos de tabela passíveis de migração.
Procedimento:
Crie uma tarefa de migração de dados no DTS. Defina o parâmetro SQL Server Incremental Synchronization Mode como Log-based Parsing for Non-heap Tables and CDC-based Incremental Synchronization for Heap Tables (Hybrid Log-based Parsing).
Interrompa as gravações no banco de dados de origem. Após a reprodução bem-sucedida do último log incremental, transfira as cargas de trabalho para o destino.
Migração lógica via DTS: modo de sondagem de instância CDC
Utiliza o componente nativo de CDC do SQL Server para capturar alterações incrementais a partir de tabelas de alterações, em vez de logs de transações. Isso proporciona uma migração mais estável e com menor consumo de largura de banda, sem ser afetada pelo truncamento de logs.
Procedimento:
Crie uma tarefa de migração de dados no DTS. Defina o parâmetro SQL Server Incremental Synchronization Mode como Polling and querying CDC instances for incremental synchronization.
Interrompa as gravações no banco de dados de origem. Após a reprodução bem-sucedida do último log incremental, transfira as cargas de trabalho para o destino.
Migração via SSMS
Exporte e importe dados manualmente utilizando o SSMS.
Procedimento:
Interrompa as gravações no banco de dados de origem.
Exporte os dados do banco de origem usando o SSMS.
Importe os dados exportados para o banco de dados de destino.
Verifique a consistência dos dados e transfira as cargas de trabalho para o destino.
Referência: Usar o SSMS para migrar dados para a nuvem
Matriz de capacidades
Utilize esta matriz para comparar recursos entre as soluções de migração.
|
Capacidade |
OSS manual (físico) |
Data Disaster Recovery + DTS (físico) |
Análise de log (lógico) |
Análise híbrida de log (lógico) |
Sondagem CDC (lógico) |
SSMS |
|
Mapeamento de nomes (bancos, tabelas, colunas) |
Não |
Não |
Sim |
Sim |
Sim |
Não |
|
Migração incremental sem interrupção de serviço |
Não (minutos de inatividade) |
Não (minutos de inatividade) |
Sim |
Sim [\*] |
Sim [\*] |
Não (inatividade total) |
|
Migração de múltiplos bancos (tarefa única) |
Não (um banco por vez) |
Sim |
Sim (máx. 10) |
Sim (máx. 10) |
Sim (máx. 10) |
Não |
|
Migração entre versões |
Não (versão destino >= origem) |
Não (versão destino >= origem) |
Sim |
Sim |
Sim |
Sim |
|
Velocidade de migração |
Rápida |
Rápida |
— |
— |
— |
— |
|
Suporte a origem em nuvem de terceiros |
Não |
Não |
Amazon RDS, Azure SQL Database |
Amazon RDS, Azure SQL Database |
Amazon RDS, Azure SQL Database, Google Cloud SQL for SQL Server |
Não |
|
Suporte a tabelas heap |
Sim |
Sim |
Não |
Sim |
Sim |
Sim |
|
Suporte a tabelas compactadas |
Sim |
Sim |
Não |
Sim |
Sim |
Sim |
|
Tabelas sem chaves primárias |
Sim |
Sim |
Não |
Sim |
Sim [†] |
Sim |
|
Tabelas com colunas computadas |
Sim |
Sim |
Não |
Não |
Sim |
Sim |
|
Migração DDL (Data Definition Language) |
Completa (via backup/restauração) |
Completa (via backup/restauração) |
Parcial |
Parcial |
Limitada |
Completa (via exportação/importação) |
|
Complexidade de configuração |
Média (backup/upload manual) |
Baixa (console DTS) |
Baixa (console DTS) |
Baixa (console DTS) |
Baixa (console DTS) |
Baixa (GUI do SSMS) |
\* Durante a migração incremental, o banco de dados de origem continua aceitando gravações. No entanto, os modos de análise híbrida de log e sondagem CDC podem causar breves bloqueios de tabela (alguns segundos) quando o DTS ativa o CDC na inicialização da tarefa. Todas as soluções exigem a interrupção das gravações durante o cutover final.
† Tabelas sem restrições PRIMARY KEY ou UNIQUE podem ser migradas no modo de sondagem CDC, mas podem conter dados duplicados. Caso precise manter essas tabelas, avalie se a duplicidade de dados é aceitável. Limitações do modo de sondagem de instância CDC.
Limitações por solução
OSS manual (backup físico)
Exige backup e upload manuais dos logs.
Migra apenas um banco de dados por vez.
Interrupção de serviço de vários minutos durante o switchover final (interrupção de gravações e espera pela reprodução do último log incremental).
A versão do banco de dados de destino não pode ser anterior à versão do banco de origem.
Não há suporte para mapeamento de nomes de bancos de dados, tabelas e colunas.
Data Disaster Recovery + DTS (backup físico)
A extensão do arquivo de log de backup deve ser bak.
Interrupção de serviço de vários minutos durante o switchover final.
É necessário instalar o AliyunDBSAgent no servidor do banco de dados de origem.
A versão do banco de dados de destino não pode ser anterior à versão do banco de origem.
Não há suporte para mapeamento de nomes de bancos de dados, tabelas e colunas.
Modo de análise de log (lógico)
Apenas algumas instruções DDL podem ser migradas. Mais de 100 instruções DDL por hora afetam a velocidade da migração.
Se a velocidade de gravação de logs no banco de origem exceder 10 MB/s, 30 GB/hora ou 500 GB/dia, a tarefa poderá sofrer atrasos ou falhar.
Caso a frequência de backup de logs ultrapasse uma vez por hora, o DTS pode não conseguir obter os logs de backup locais. Mantenha os logs de backup por três dias nos discos locais.
O DTS cria um gatilho e uma tabela de armazenamento DDL no banco de dados de origem para capturar alterações de DDL.
Desative as restrições FOREIGN KEY durante a migração incremental de dados. Caso contrário, a tarefa poderá falhar.
Não é possível migrar tabelas heap, tabelas sem chaves primárias, tabelas compactadas e tabelas com colunas computadas. Perguntas frequentes sobre como verificar tipos de tabela.
Tabelas sem restrições PRIMARY KEY ou UNIQUE podem conter dados duplicados. Se precisar manter essas tabelas, não utilize esta solução.
O DTS utiliza a função
fn_logpara extrair e analisar logs. Essa função não é estável. Operações inesperadas podem causar falha na tarefa.Limite de 10 bancos de dados por tarefa de migração. Exceder esse limite pode causar problemas de estabilidade e desempenho.
Modo híbrido de análise de log (lógico)
Requisito de edição de origem: SQL Server 2008 ou posterior (Enterprise Edition), ou SQL Server 2016 SP1 ou posterior (Standard Edition). Não há suporte para SQL Server 2017.
Apenas algumas instruções DDL podem ser migradas. Mais de 100 instruções DDL por hora afetam a velocidade da migração.
Se a velocidade de gravação de logs no banco de origem exceder 10 MB/s, 30 GB/hora ou 500 GB/dia, a tarefa poderá sofrer atrasos ou falhar.
Caso a frequência de backup de logs ultrapasse uma vez por hora, o DTS pode não conseguir obter os logs de backup locais. Mantenha os logs de backup por três dias nos discos locais.
O DTS ativa o CDC para bancos de dados e determinadas tabelas. Além disso, cria um gatilho e uma tabela de armazenamento DDL no banco de origem para capturar alterações de DDL.
Desative as restrições FOREIGN KEY durante a migração incremental de dados. Caso contrário, a tarefa poderá falhar.
Não é possível migrar tabelas com colunas computadas. Perguntas frequentes sobre como verificar tipos de tabela.
Tabelas sem restrições PRIMARY KEY ou UNIQUE podem conter dados duplicados. Se precisar manter essas tabelas, não utilize esta solução.
O DTS utiliza a função
fn_logpara extrair e analisar logs. Essa função não é estável. Operações inesperadas podem causar falha na tarefa.Limite de 10 bancos de dados por tarefa de migração. Exceder esse limite pode causar problemas de estabilidade e desempenho.
Modo de sondagem de instância CDC (lógico)
Requisito de edição de origem para VMs no Azure: SQL Server 2008 ou posterior (Enterprise Edition), ou SQL Server 2016 SP1 ou posterior (Standard Edition). Não há suporte para SQL Server 2017.
-
Permissões da conta: A conta de acesso do DTS deve ter permissão para ativar o CDC nos níveis de banco de dados e de tabela. O CDC no nível de banco exige uma conta com a função
sysadmin. O CDC no nível de tabela requer uma conta privilegiada.Azure SQL Database: Uma conta de administrador de servidor possui as permissões necessárias. É possível ativar o CDC para todos os bancos adquiridos sob o modelo vCore. Para o modelo DTU, os bancos devem ter uma camada de serviço S3 ou superior.
Amazon RDS for SQL Server: Uma conta privilegiada possui as permissões necessárias. É possível ativar o CDC para procedimentos armazenados no nível do banco de dados.
Não é possível ativar o CDC para índices columnstore clusterizados.
O pré-módulo do DTS ativa o CDC no banco de dados de origem. Devido a limitações do SQL Server, esse processo causa bloqueios de tabela que duram alguns segundos.
Limite de 1.000 tabelas por tarefa. Exceder esse limite pode causar atrasos ou instabilidade.
Limite de 10 bancos de dados por tarefa de migração. Exceder esse limite pode causar problemas de estabilidade e desempenho.
Tabelas sem restrições PRIMARY KEY ou UNIQUE podem conter dados duplicados. Se precisar manter essas tabelas, não utilize esta solução.
A migração incremental de dados apresenta uma latência de aproximadamente 10 segundos.
Não adicione nem remova colunas via DDL mais de duas vezes por minuto. Caso contrário, a tarefa de migração poderá falhar.
Não modifique as instâncias de CDC do banco de origem durante a migração. Do contrário, a tarefa poderá falhar ou ocorrer perda de dados.
Migrar várias tabelas em múltiplos bancos de dados em uma única tarefa pode causar problemas de estabilidade e desempenho.
Migração via SSMS
Exige a interrupção das gravações no banco de origem antes da migração. Caso contrário, pode haver inconsistência de dados.
Execute todas as etapas de migração manualmente por meio do SSMS.
Escolha uma solução de migração
Faça sua escolha com base no ambiente de origem, nas necessidades de migração incremental e nas restrições operacionais.
Se o seu ambiente de origem não oferecer suporte à migração incremental de dados, interrompa as gravações no banco de origem antes de iniciar a migração.
SQL Server auto-gerenciado
|
Atributo |
Detalhes |
|
Suporte a incremental |
Sim |
|
Soluções disponíveis |
Backup físico manual via OSS, Backup físico via Data Disaster Recovery + DTS, Migração lógica via DTS (todos os três modos) |
|
Recomendada |
Data Disaster Recovery + DTS via gateway físico |
Essa abordagem combina a velocidade do backup físico com a conveniência do console DTS, além de permitir a migração de múltiplos bancos em uma única tarefa. Migrar dados de um banco de dados SQL Server auto-gerenciado para uma instância do ApsaraDB RDS for SQL Server usando um gateway físico.
Azure SQL Database
|
Atributo |
Detalhes |
|
Suporte a incremental |
Sim |
|
Soluções disponíveis |
Migração lógica via DTS (defina o SQL Server Incremental Synchronization Mode como Polling and querying CDC instances for incremental synchronization para dados incrementais), Migração ponta a ponta pelo console do ApsaraDB RDS, Migração via SSMS |
|
Recomendada |
Migração ponta a ponta pelo console do ApsaraDB RDS ou Migração lógica via DTS com modo de sondagem CDC |
Ambas oferecem fluxos de trabalho guiados com etapas manuais mínimas. Migrar dados de um banco de dados SQL Server no Microsoft Azure para o ApsaraDB RDS for SQL Server.
Azure SQL Managed Instance e SQL Server em Máquinas Virtuais do Azure
|
Atributo |
Detalhes |
|
Suporte a incremental |
Sim |
|
Soluções disponíveis |
Migração lógica via DTS (defina o SQL Server Incremental Synchronization Mode como Polling and querying CDC instances for incremental synchronization para dados incrementais), Migração ponta a ponta pelo console do ApsaraDB RDS, Migração via SSMS, Backup físico manual via OSS |
Amazon RDS for SQL Server
|
Atributo |
Detalhes |
|
Suporte a incremental |
Sim |
|
Soluções disponíveis |
Migração lógica via DTS (defina o SQL Server Incremental Synchronization Mode como Polling and querying CDC instances for incremental synchronization para dados incrementais), Migração ponta a ponta pelo console do ApsaraDB RDS, Migração via SSMS, Backup físico manual via OSS |
|
Recomendada |
Migração ponta a ponta pelo console do ApsaraDB RDS ou Migração lógica via DTS com modo de sondagem CDC |
Huawei Cloud RDS for SQL Server
|
Atributo |
Detalhes |
|
Suporte a incremental |
Não |
|
Soluções disponíveis |
Migração via SSMS, Migração lógica via DTS (apenas dados completos), Backup físico manual via OSS (apenas dados completos) |
|
Recomendada |
Migração de backup completo manual via OSS |
Se o banco de dados de origem executar o SQL Server 2008 R2, atualize a versão do banco antes de realizar esta operação. Para obter instruções sobre como adquirir os dados de backup, consulte Creating a Manual Backup e Downloading a Backup File.
TencentDB for SQL Server
Com suporte a incremental:
|
Atributo |
Detalhes |
|
Suporte a incremental |
Sim |
|
Soluções disponíveis |
Migração lógica via DTS, Backup físico manual via OSS |
|
Recomendada |
Migração lógica via DTS |
Sem suporte a incremental: Utilize a migração via SSMS.
Google Cloud SQL for SQL Server
|
Atributo |
Detalhes |
|
Suporte a incremental |
Sim |
|
Soluções disponíveis |
Migração via SSMS, Migração lógica via DTS (defina o SQL Server Incremental Synchronization Mode como Polling and querying CDC instances for incremental synchronization para dados incrementais) |
|
Recomendada |
Migração lógica via DTS com modo de sondagem CDC |
Próximos passos
Verificar a integridade dos dados
Após a migração, confirme se todos os dados foram transferidos corretamente para a instância de destino.
Verificação de dados principais
Ordene os dados por data ou ID de incremento automático e compare os registros mais recentes entre os bancos de origem e de destino. Por exemplo, se a tabela principal de negócios Orders contiver campos como OrderID e OrderDate, execute a seguinte consulta em ambos os bancos:
-- Source database
SELECT TOP 10 OrderID, OrderDate, CustomerID, TotalAmount
FROM Orders
ORDER BY OrderDate DESC;
-- Destination database
SELECT TOP 10 OrderID, OrderDate, CustomerID, TotalAmount
FROM Orders
ORDER BY OrderDate DESC;
Verificação completa de dados com o DTS
O DTS oferece verificação completa de dados entre os bancos de origem e de destino sem tempo de inatividade. Configure uma tarefa de verificação de dados.
Atualizar estatísticas do banco de dados
O desempenho das consultas na instância de destino pode diminuir devido a mudanças na distribuição dos dados. Atualize todas as estatísticas nos bancos migrados para restaurar o desempenho. Atualize estatísticas do banco de dados.