Trabalhar com armazenamento no RDS para SQL Server - Amazon Relational Database Service

Trabalhar com armazenamento no RDS para SQL Server

Com o RDS para SQL Server, você pode anexar até três volumes adicionais à sua instância do RDS para SQL Server, cada um associado a uma letra de unidade exclusiva do Windows. Isso permite que você distribua arquivos de banco de dados em vários volumes além da unidade D: padrão. Ao adicionar um volume de armazenamento, você ganha maior flexibilidade para gerenciamento de arquivos de banco de dados e otimização do armazenamento.

Os benefícios são:

  • Distribuição flexível de arquivos: distribua arquivos de dados do banco de dados e arquivos de log em vários volumes para melhorar a performance de E/S.

  • Otimização do armazenamento: use diferentes tipos e configurações de armazenamento para diferentes requisitos de workload.

  • Escalabilidade: adicione capacidade de armazenamento sem modificar os volumes existentes.

Considerações sobre o uso de volumes de armazenamento adicionais com o RDS para SQL Server

Observe os seguintes recursos e limitações ao usar volumes de armazenamento adicionais com o RDS para SQL Server:

  • É possível incluir volumes de armazenamento somente no SQL Server Standard Edition (SE) e no Enterprise Edition (EE).

  • É possível adicionar até três volumes de armazenamento adicionais por instância.

  • Os nomes dos volumes são associados automaticamente às letras das unidades do Windows da seguinte forma:

    • rdsdbdata2: unidade H:.

    • rdsdbdata3: unidade I:.

    • rdsdbdata4: unidade J:.

  • Os arquivos TempDB continuam usando a unidade T: ao usar o armazenamento de instância NVMe. Os arquivos de auditoria do SQL Server e os arquivos do Microsoft Business Intelligence (MSBI) permanecem na unidade D:.

  • Você só pode usar os tipos de armazenamento SSD de uso geral (gp3) e o armazenamento em SSD de IOPS provisionadas.

  • Não há limitações de tamanho mínimo para volumes de armazenamento adicionais. O tamanho máximo de armazenamento para sua instância de banco de dados é de 256 TiB no total em todos os volumes.

  • A adição de volumes de armazenamento a instâncias com réplicas de leitura ou a instâncias de réplica de leitura não é aceita.

  • A movimentação de arquivos entre volumes após a criação não é aceita.

  • Você não pode excluir o volume D:, mas pode excluir outros volumes de armazenamento, desde que estejam vazios.

  • A modificação do tamanho dos volumes existentes durante a restauração de snapshots ou recuperação para um ponto no tempo (PITR) não é aceita. No entanto, você pode adicionar novos volumes de armazenamento durante as operações de restauração.

Adicionar, remover ou modificar volumes de armazenamento com o RDS para SQL Server

Você pode adicionar, modificar e remover volumes de armazenamento adicionais usando a AWS CLI ou o Console de gerenciamento da AWS. Todas as operações usam a operação de API modify-db-instance com o parâmetro additional-storage-volumes.

Importante

Adicionar ou remover volumes de armazenamento adicionais cria uma ação pendente de backup e uma janela de bloqueio de restauração pontual. Essa janela é fechada quando o fluxo de trabalho de backup é concluído.

Adicionar volumes de armazenamento

É possível adicionar até três volumes de armazenamento além da unidade D: padrão. Para adicionar um novo volume de armazenamento à sua instância do RDS para SQL Server, use o comando modify-db-instance com o parâmetro additional-storage-volumes.

O exemplo a seguir adiciona um novo volume de SSD de uso geral de 4 mil GiB (gp3) chamado rdsdbdata4.

aws rds modify-db-instance \ --db-instance-identifier my-sql-server-instance \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":4000}]' \ --apply-immediately

Escalar volumes de armazenamento adicionais

Você pode modificar qualquer configuração de armazenamento para seus volumes adicionais, exceto o tamanho do armazenamento. O exemplo a seguir modifica a configuração de IOPS do volume rdsdbdata2.

aws rds modify-db-instance \ --db-instance-identifier my-sql-server-instance \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":4000}]' \ --apply-immediately

Remover volumes de armazenamento adicionais

Você não pode excluir o volume D:, mas pode excluir outros volumes de armazenamento quando estão vazios.

Atenção

Antes de remover um volume de armazenamento adicional, garanta que nenhum arquivo de banco de dados esteja armazenado no volume.

O exemplo a seguir remove o volume rdsdbdata4.

aws rds modify-db-instance \ --db-instance-identifier my-sql-server-instance \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","SetForDelete":true}]' \ --apply-immediately

Operações de restauração para volumes de armazenamento adicionais com o RDS para SQL Server

Quando você restaura seu banco de dados, pode adicionar volumes de armazenamento. Também é possível modificar as configurações de armazenamento dos volumes existentes.

Restauração por snapshot

Quando você restaura por meio de um snapshot, pode adicionar outros volumes de armazenamento ou modificar as configurações de IOPS, throughput e tipo de armazenamento dos volumes existentes.

O seguinte exemplo restaura uma instância de banco de dados por meio de um snapshot e modifica a configuração de IOPS para o volume rdsdbdata2:

aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier my-restored-instance \ --db-snapshot-identifier my-snapshot \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata2","IOPS":5000}]'

Recuperação para um ponto no tempo

Durante a recuperação para um ponto no tempo (PITR), é possível adicionar novos volumes de armazenamento com configurações personalizadas.

O seguinte exemplo realiza PITR e adiciona um novo volume de SSD de uso geral de 5 mil GiB (gp3):

aws rds restore-db-instance-to-point-in-time \ --source-db-instance-identifier my-source-instance \ --target-db-instance my-pitr-instance \ --use-latest-restorable-time \ --region us-east-1 \ --additional-storage-volumes '[{"VolumeName":"rdsdbdata4","StorageType":"gp3","AllocatedStorage":5000,"IOPS":5000,"StorageThroughput":200}]'

Restauração de banco de dados nativo

Você pode usar o procedimento armazenado rds_restore_database para restaurar bancos de dados em volumes de armazenamento adicionais específicos. Dois novos parâmetros aceitam a seleção de volume:

data_file_volume

Especifica a letra da unidade para arquivos de dados do banco de dados.

log_file_volume

Especifica a letra da unidade para arquivos de log do banco de dados.

O exemplo a seguir restaura um banco de dados com arquivos de dados na unidade H: e arquivos de log na unidade I::

EXEC msdb.dbo.rds_restore_database @restore_db_name='my_database', @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak', @data_file_volume='H:', @log_file_volume='I:';

Se você não especificar parâmetros de volume nem especificar a unidade D: para ambos os parâmetros, os arquivos do banco de dados serão restaurados para a unidade D: padrão:

EXEC msdb.dbo.rds_restore_database @restore_db_name='my_database', @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/backup-file.bak';

Casos de uso para volumes de armazenamento adicionais com o RDS para SQL Server

Volumes de armazenamento adicionais comportam vários cenários de gerenciamento de banco de dados. As seções a seguir descrevem casos de uso comuns e abordagens de implementação.

Criar bancos de dados em volumes de armazenamento adicionais

É possível criar bancos de dados diretamente em volumes de armazenamento adicionais utilizando instruções CREATE DATABASE padrão do SQL Server.

O seguinte exemplo cria um banco de dados com arquivos de dados na unidade H: e arquivos de log na unidade I::

CREATE DATABASE MyDatabase ON ( NAME = 'MyDatabase_Data', FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data.mdf', SIZE = 100MB, FILEGROWTH = 10MB ) LOG ON ( NAME = 'MyDatabase_Log', FILENAME = 'I:\rdsdbdata\data\MyDatabase_Log.ldf', SIZE = 10MB, FILEGROWTH = 10% );

Ampliar a capacidade de armazenamento

Quando a unidade D: padrão atinge sua capacidade máxima, você pode adicionar outros volumes de armazenamento, escalar volumes existentes e criar arquivos de dados ou arquivos de log nos novos volumes.

Como ampliar a capacidade de armazenamento
  1. Adicione um volume de armazenamento à sua instância usando o comando modify-db-instance.

  2. Adicione um novo arquivo de dados ao volume de armazenamento adicional:

    ALTER DATABASE MyDatabase ADD FILE ( NAME = 'MyDatabase_Data2', FILENAME = 'H:\rdsdbdata\data\MyDatabase_Data2.ndf', SIZE = 500MB, FILEGROWTH = 50MB );

Mover bancos de dados entre volumes

Para mover um banco de dados para um volume diferente, use a abordagem de backup e restauração com os procedimentos armazenados rds_backup_database e rds_restore_database. Para obter mais informações, consulte Usar o backup e restauração nativos.

Como mover um banco de dados para outro volume
  1. Faça backup do bancos de dados usando rds_backup_database:

    EXEC msdb.dbo.rds_backup_database @source_db_name='MyDatabase', @s3_arn_to_backup_to='arn:aws:s3:::my-bucket/database-backup.bak';
  2. Restaure o banco de dados no volume de destino:

    EXEC msdb.dbo.rds_restore_database @restore_db_name='MyDatabase_New', @s3_arn_to_restore_from='arn:aws:s3:::my-bucket/database-backup.bak', @data_file_volume='H:', @log_file_volume='I:';
  3. Remova o banco de dados da sua unidade antiga para liberar espaço. Para obter mais informações, consulte Eliminar um banco de dados em uma instância de banco de dados do Amazon RDS para Microsoft SQL Server.

Arquivar dados em um armazenamento econômico

Para tabelas particionadas, você pode arquivar dados antigos em volumes de armazenamento adicionais com características de performance diferentes.

Como arquivar dados particionados
  1. Adicione um volume de armazenamento com o tipo e a capacidade de armazenamento adequados.

  2. Crie um grupo de arquivos no volume de armazenamento adicional:

    ALTER DATABASE MyDatabase ADD FILEGROUP ArchiveFileGroup; ALTER DATABASE MyDatabase ADD FILE ( NAME = 'Archive_Data', FILENAME = 'H:\rdsdbdata\data\Archive_Data.ndf', SIZE = 1GB, FILEGROWTH = 100MB ) TO FILEGROUP ArchiveFileGroup;
  3. Mova as partições para o novo grupo de arquivos usando os comandos de gerenciamento de partições do SQL Server.