O blog da AWS

Migre um banco de dados SQL Server de vários TB para o Amazon RDS Custom for SQL Server usando o Amazon S3 e o Amazon EBS

Por Jose Amado-Blanco, Priya Nair, e Suprith Krishnappa C
Esta é a primeira de uma série de publicações em duas partes sobre como migrar um banco de dados de vários Terabytes para o Amazon Relational Database Services (Amazon RDS) Custom for SQL Server.

O Amazon RDS Custom for SQL Server é um serviço de banco de dados gerenciado que automatiza a configuração, operação, backups, alta disponibilidade e o escalonamento dos bancos de dados, ao mesmo tempo em que concede acesso ao banco de dados e ao sistema operacional (SO) subjacente. O administrador do banco de dados pode usar esse acesso para habilitar recursos nativos, como o SQL Common Language Runtime (CLR), definir as configurações do sistema operacional e instalar drivers, a fim de migrar aplicativos legados, personalizados e empacotados.

Visão geral

O Amazon RDS Custom for SQL Server tem uma unidade de dados padrão (D:) que permite até 16 TB de armazenamento. Para obter informações sobre as restrições de armazenamento do Amazon RDS Custom for SQL Server e como ajustar o armazenamento, consulte Modificar o armazenamento para uma instância de banco de dados RDS Custom for SQL Server.

Um desafio comum que os clientes enfrentam ao migrar para o Amazon RDS Custom for SQL Server é quando o tamanho do banco de dados mais os arquivos de backup são maiores que 16 TB. Neste post, mostramos como migrar com sucesso um banco de dados de vários terabytes usando o Amazon Simple Storage Service (Amazon S3) e o Amazon Elastic Block Store (Amazon EBS).

Evite o provisionamento excessivo de armazenamento

Você também pode usar essa abordagem para migrar um banco de dados de vários terabytes, mesmo que a soma do banco de dados e de seus arquivos de backup seja menor que 16 TB. Ele evita o provisionamento excessivo de armazenamento e reduz os custos, porque você pode recuperar o espaço dos arquivos de backup após a restauração do banco de dados.

Por exemplo, se você tiver um banco de dados de 10 TB e os arquivos de backup somarem até 5 TB, é possível provisionar um Amazon RDS Custom for SQL Server com 15 TB alocados para ele. Em seguida, você pode copiar os arquivos de backup para a unidade D: e restaurar o banco de dados. No entanto, a escolha dessa abordagem geraria um custo maior, porque você não pode liberar os 5 TB de armazenamento alocados para os arquivos de backup. Isso significa que você pagará por 5 TB que não estão sendo usados. Esses custos podem ser calculados usando a calculadora de preços da AWS.

A tabela a seguir mostra a diferença atual no custo de armazenamento de um Amazon RDS Custom for SQL Server na região us-east-1:

Custo de armazenamento do RDS Custom For SQL Server (Single-AZ)
SSD IOPS provisionado (io1)
IOPs de provisionamento: 1000
Quantidade de armazenamento Custo mensal
10 TB $1.277,60
15 TB $1.866.40

Visão geral da solução

Um dos métodos para migrar um banco de dados SQL Server local de vários terabytes para o Amazon RDS Custom for SQL Server é usar o Amazon S3 File Gateway, que é um volume EBS opcional. O Amazon S3 File Gateway fornece uma maneira fácil de armazenar e fazer backup de dados na nuvem. Depois de configurado, os usuários podem acessar os dados armazenados no Amazon S3 a partir do sistema de arquivos local. Usamos um bucket do S3 para armazenar os arquivos de backup no local e um volume do EBS como armazenamento temporário para o Amazon RDS Custom for SQL Server.

Você não deve hospedar arquivos de banco de dados no volume EBS anexado adicionalmente para evitar que o RDS Custom for SQL Server entre em um estado de configuração sem suporte. Para entender mais sobre o perímetro de suporte personalizado do RDS e o monitoramento de configurações não suportadas, consulte o link Perímetro de suporte do RDS Custom e configurações não suportadas.

Veja a seguir um diagrama de arquitetura de alto nível da migração.

O fluxo de trabalho de alto nível é:

  1. Faça backup do banco de dados local do SQL Server diretamente no compartilhamento de arquivos do S3 File Gateway.
  2. Adicione um volume EBS opcional ao Amazon RDS Custom for SQL Server.
  3. Baixe os arquivos de backup do S3 File Gateway para o volume do EBS.
  4. Restaure o arquivo de backup no Amazon RDS Custom for SQL Server.
  5. Remova o volume do EBS.

Pré-requisitos

Presumimos que você tenha os seguintes pré-requisitos:

Como essa solução envolve a configuração e o uso de recursos da AWS, ela incorrerá em custos em sua conta. Consulte os preços da AWS para obter mais informações. É altamente recomendável que você configure isso em uma instância que não seja de produção e execute validações completas antes de implementar essa solução em um ambiente de produção.

Faça backup do seu banco de dados SQL Server local no compartilhamento de arquivos do S3 File Gateway

Fazemos backup de nosso grande banco de dados local em vários arquivos de backup para aumentar o desempenho e manter cada tamanho de arquivo menor que 5 TB devido às limitações de tamanho de objeto do S3.

Em nosso exemplo, fazemos backup dos seguintes arquivos:

  • SampleTest_FullBackupCompressed01.bak
  • SampleTest_FullBackupCompressed02.bak
  • SampleTest_FullBackupCompressed03.bak
  • SampleTest_FullBackupCompressed04.bak

Adicione um volume EBS opcional ao Amazon RDS Custom for SQL Server

Crie um volume de armazenamento grande o suficiente para armazenar os arquivos de backup e certifique-se de que ele esteja na mesma zona de disponibilidade (AZ) do banco de dados RDS Custom for SQL Server.

Se seu RDS Custom for SQL Server foi implantado em um Single-AZ, crie o volume EBS na mesma zona de disponibilidade do RDS Custom.

Se o RDS Custom for SQL Server foi implantado em um Multi-AZ, para determinar em qual zona de disponibilidade o RDS Custom está sendo executado, siga estas etapas (isso também pode ser usado para implantações Single-AZ):

  1. Recupere o endpoint RDS Custom for SQL Server usando o AWS CLI. O endpoint estará em “Endpoint”/“Address”, conforme mostrado abaixo:
aws rds describe-db-instances --db-instance-identifier <INSTANCE_NAME> --region <REGION>

Em nosso exemplo:

aws rds describe-db-instances --db-instance-identifier rdscustommultitb --region us-east-1

O endpoint também pode ser encontrado no console do AWS RDS na guia “Connectivity & security” depois de selecionar sua instância de banco de dados.

  1. Recupere o endereço IP do RDS Custom for SQL Server. A partir de um servidor que tenha acesso ao RDS Custom for SQL Server (talvez você precise de um servidor bastion se o RDS tiver sido criado em uma rede privada, conforme sugerido de acordo com as melhores práticas), execute o seguinte comando:
nslookup <RDSEndpoint>

Em nosso exemplo:

nslookup rdscustommultitb.<address>.us-east-1.rds.amazonaws.com

  1. Compare o endereço IP recuperado com o endereço dos 2 EC2 criados para o RDS Custom for SQL Server para determinar qual EC2 é o ativo e, assim, poder determinar em qual zona de disponibilidade ele está sendo executado. Esta postagem pressupõe que o banco de dados RDS Custom for SQL Server foi criado na zona de disponibilidade us-east-1a.

Você pode usar o AWS Console ou o AWS CLI para criar o volume do EBS. Para obter instruções detalhadas, consulte Criar um volume vazio.

  1. No console do Amazon EBS, crie seu volume. Nesta postagem, adicionamos a tag de nome rdscustombackupstorage ao nosso volume do EBS.

Para criar um volume do EBS usando o AWS CLI, execute um comando no PowerShell semelhante ao seguinte:

aws ec2 create-volume --volume-type gp3 --size 6000 --iops 3000 --throughput 125 --availability-zone us-east-1a --tag-specifications 'ResourceType=volume,Tags=[{Key=Name,Value=rdscustombackupstorage}]'

Quando o volume de armazenamento estiver disponível, você precisará anexá-lo à instância do RDS Custom for SQL Server.

  1. Selecione o volume do EBS que você criou e, no menu Ações, escolha Anexar volume (attach volume em inglês).

  1. Escolha a instância RDS Custom for SQL Server.
  2. Escolha Anexar volume (attach volume em inglês).

Para anexar um volume do EBS à instância usando o AWS CLI, execute um comando no PowerShell semelhante ao seguinte:

aws ec2 attach-volume --volume-id vol-<volumeid> --instance-id i-<instanceid> --device /dev/sdf

Depois de anexar um volume do EBS à sua instância, ele é exposto como um dispositivo de bloco e aparece como um disco removível no Windows.

  1. Você pode formatar o volume com qualquer sistema de arquivos e montá-lo.

Como o volume do EBS é maior que 2 TiB, você deve usar um esquema de particionamento GPT para acessar o volume inteiro. Consulte Sobre estilos de partição — GPT e MBR para obter informações sobre partições GPT e MBR.

  1. Para disponibilizar o volume do EBS para uso, você precisa iniciar uma conexão RDP na instância de banco de dados do RDS Custom. Consulte Conectando-se à sua instância de banco de dados personalizada do RDS usando RDP para obter etapas detalhadas.
  2. Depois de fazer o RDP em sua instância RDS Custom for SQL Server, você pode conectar o disco usando o PowerShell, a ferramenta de linha de comando DiskPart ou o utilitário de gerenciamento de disco. Para obter mais informações, consulte Disponibilizar um volume do Amazon EBS para uso no Windows.

Em nosso exemplo, usamos o utilitário de gerenciamento de disco.

Depois que o disco for inicializado, você deverá criar um volume e atribuir uma letra de unidade a ele.

  1. Clique com o botão direito do mouse no espaço não alocado e escolha Novo volume simples (em inglês, ‘New Simple Volume’).

  1. Escolha Avançar (Next) na página de boas-vindas.
  2. Defina o novo tamanho do volume e escolha Avançar (Next).

  1. Atribua uma letra de drive e escolha Avançar (Next).

  1. Formate a partição e escolha Avançar (Next).

  1. Revise suas configurações e escolha Concluir (Finish).

Certifique-se de que a unidade E: esteja disponível por meio do explorador de arquivos ou do utilitário de gerenciamento de disco.

Para disponibilizar volumes do EBS com partições brutas para uso com o Windows usando o PowerShell, execute um comando semelhante ao seguinte:

Stop-Service -Name ShellHWDetection

Get-Disk | Where PartitionStyle -eq 'raw' | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter  -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "E" -Confirm:$false

Start-Service -Name ShellHWDetection

Baixe os arquivos de backup do S3 File Gateway para o volume EBS

Quando o disco estiver on-line e disponível para uso, transfira os backups do bucket do S3 para o novo volume do EBS depois de instalar o AWS CLI. Consulte Migrar o SQL Server local para o Amazon RDS Custom for SQL Server usando backup e restauração nativos e o Amazon S3 para conhecer as permissões necessárias para baixar arquivos de backup do Amazon S3 para o Amazon RDS Custom for SQL Server.

Execute os seguintes comandos na instância RDS Custom for SQL Server de destino para baixar todos os arquivos de backup para a pasta Backup criada na unidade E::

aws s3 cp s3://multitbrdscustom/SampleTest_FullBackupCompressed01.bak E:\BACKUP 
aws s3 cp s3://multitbrdscustom/SampleTest_FullBackupCompressed02.bak E:\BACKUP 
aws s3 cp s3://multitbrdscustom/SampleTest_FullBackupCompressed03.bak E:\BACKUP 
aws s3 cp s3://multitbrdscustom/SampleTest_FullBackupCompressed04.bak E:\BACKUP

Restaure o arquivo de backup no Amazon RDS Custom for SQL Server

Depois de baixar todos os arquivos de backup, use o seguinte comando nativo do SQL Server para restaurar o banco de dados, apontando para o volume do EBS adicionado e o local dos arquivos de backup (no nosso caso, E:\Backup). Os arquivos do banco de dados devem residir em D:\rdsdbdata\DATA

UTILICE [master]  RESTORE DATABASE [SampleTest] FROM  DISK = N' E:\Backup\SampleTest_FullBackupCompressed01.bak ', DISK = N' E:\Backup\SampleTest_FullBackupCompressed02.bak',  DISK = N' E:\Backup\SampleTest_FullBackupCompressed03.bak ',  DISK = N''  CON FILE = 1,  MUEVA N' sampleTest_data001' A N' sampleTest_Data002',  MUEVA N' SampleTest_Data003' A N   E:\Backup\SampleTest_FullBackupCompressed04.bak D:\rdsdbdata\DATA\SampleTest_Data001.mdf D:\rdsdbdata\DATA\SampleTest_Data002.ndf 'D:\rdsdbdata\DATA\SampleTest_Data003.ndf',  MOVER N' SampleTest_Data004' A N' D:\rdsdbdata\DATA\SampleTest_Data004.ndf ', MOVER N' SampleTest_Data005' A N' D:\rdsdbdata\DATA\SampleTest_Data005.ndf', MOVER N' SampleTest_Data006' A N ',  MOVER N' SampleTest_Data008' A N' D:\rdsdbdata\DATA\SampleTest_Data008.ndf', MOVER N' SampleTest_Data008' A N' ',  MOVER N' SampleTest_Data008' _data009' A' N ', MOVER     D:\rdsdbdata\DATA\SampleTest_Data006.ndf D:\rdsdbdata\DATA\SampleTest_Data007.ndf D:\rdsdbdata\DATA\SampleTest_Data009.ndf N'sampleTest_Data010' A N' D:\rdsdbdata\DATA\SampleTest_Data010.ndf ', MOVER N' SampleTest_Data011' A N' D:\rdsdbdata\DATA\SampleTest_Data011.ndf', MOVER N' SampleTest_Data012' A N' D:\rdsdbdata\DATA\SampleTest_Data012.ndf ',  MOVER N'SampleTest_data013' A N' SampleTest_Data014', MOVER N' SampleTest_Data014' A N' 286',  MOVER N'sampleTest_Data014' PARA N' D:\rdsdbdata\DATA\SampleTest_Data015.ndf ', MUEVA N' SampleTest_Data016' A N' 1234     D:\rdsdbdata\DATA\SampleTest_Data013.ndf D:\rdsdbdata\DATA\SampleTest_Data014.ndf D:\rdsdbdata\DATA\SampleTest_ Data016.ndf',  MUEVA 'SampleTest_log01' A N' D:\rdsdbdata\DATA\SampleTest_Log01.ldf ', NOUNLOAD, STATS = 5 GB

Além disso, usar opções avançadas de backup como BLOCKSIZE, MAXTRANSFERSIZE e BUFFERCOUNT pode aumentar consideravelmente a taxa de transferência de backup e restauração.

Remova o volume do EBS

Depois que o banco de dados for restaurado, se você não pretende mais usar o volume, certifique-se de primeiro desmontar e desanexar o volume da instância do EC2 e depois excluí-lo para evitar custos adicionais.

Para desmontar o volume:

  1. Inicie o utilitário de gerenciamento de disco.
    • (Windows Server 2012 e versões posteriores) Na barra de tarefas, clique com o botão direito do mouse no logotipo do Windows e escolha Gerenciamento de disco.
    • Windows Server 2008) Escolha Iniciar, Ferramentas administrativas, Gerenciamento do computador, Gerenciamento de disco.
  2. Clique com o botão direito do mouse no disco e escolha Offline. Aguarde até que o status do disco mude para Offline antes de abrir o console do Amazon EC2.

Separe o volume

Você pode usar o console da AWS para separar o volume. Selecione o volume, clique em Ações (Actions) e selecione Desanexar volume (Detach volume)

Para desanexar um volume do EBS usando o AWS CLI, emita um comando semelhante ao seguinte no Powershell:

aws ec2 detach-volume --volume-id vol-<volumeid>

Excluir o volume

Você pode usar o AWS Console para excluir o volume. Selecione o volume, clique em Ações e selecione Excluir volume.

Para excluir um volume do EBS usando o AWS CLI, emita um comando semelhante ao seguinte no Powershell:

aws ec2 delete-volume --volume-id vol-<volumeid>

Resumo

Neste post, demonstramos como migrar com sucesso um banco de dados quando o tamanho total do banco de dados e do backup excede 16 TB. Esse método também permite evitar o provisionamento excessivo de armazenamento para o Amazon RDS Custom for SQL Server ao mesmo tempo em que transfere bancos de dados muito grande, reduzindo assim os custos.

Na parte 2 desta série, mostraremos como migrar um banco de dados SQL Server de vários TB para o Amazon RDS Custom for SQL Server usando o Amazon FSX for Windows File Server para armazenar seus arquivos de backup.

 

Este artigo foi traduzido do Blog da AWS em Inglês.

 


Sobre os autores

Jose Amado-Blanco é consultor sênior em migração de banco de dados com mais de 25 anos de experiência trabalhando com serviços profissionais da AWS. Jose ajuda os clientes em sua jornada para migrar e modernizar suas soluções de banco de dados locais para a AWS.

 

 

 

 

Priya Nair Priya Nair é consultora de banco de dados na AWS. Possui mais de 18 anos de experiência trabalhando com diferentes tecnologias de banco de dados. Priya trabalha como especialista em migração de banco de dados para ajudar os clientes da Amazon a migrar seu ambiente de banco de dados local para as soluções de banco de dados em nuvem da AWS.

 

 

 

 

Suprith Krishnappa Cé consultor de banco de dados da equipe de serviços profissionais da Amazon Web Services. Suprith trabalha com clientes corporativos, oferecendo suporte técnico e projetando soluções para clientes em projetos de banco de dados, além de ajudá-los a migrar e modernizar seus bancos de dados existentes para a nuvem da AWS.

 

 

 

 

Revisores

Borja Prado es Senior Solutions Architect en AWS, especializado en modernización de aplicaciones y tecnologías Microsoft. Trabaja ayudando a nuestros clientes en la migración, despliegue y modernización de cargas de trabajo Windows en AWS. Además, está especializado en el diseño e implementación de soluciones escalables con .NET.

 

 

 

 

Marcos Freccia es arquitecto sénior de bases de datos en migraciones de bases de datos para el equipo de AWS ProServe. Ha apoyado y capacitado a clientes en su viaje para migrar y modernizar sus soluciones de bases de datos de centros de datos on-premise a AWS.