Restaurar um backup em uma instância de banco de dados MySQL do Amazon RDS - Amazon Relational Database Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Restaurar um backup em uma instância de banco de dados MySQL do Amazon RDS

O Amazon RDS oferece suporte à importação de bancos de dados MySQL usando arquivos de backup. Você pode criar um backup do banco de dados, armazená-lo no Amazon S3 e, depois, restaurar o arquivo de backup em uma nova instância de banco de dados do Amazon RDS que executa o MySQL.

O cenário descrito nesta seção restaura um backup de um banco de dados on-premises. Você pode usar essa técnica para bancos de dados em outros locais, como Amazon EC2 ou serviços de nuvem que não são da AWS, desde que o banco de dados esteja acessível.

Você pode localizar o cenário compatível no diagrama a seguir.


            MySQL importando arquivos de backup da arquitetura do S3

A importação de arquivos de backup do Amazon S3 é compatível com o MySQL versões 5.6, 5.7 e 8.0. A importação de arquivos de backup do Amazon S3 está disponível em todas as regiões da AWS.

Recomendamos que você importe o banco de dados para o Amazon RDS usando arquivos de backup se o banco de dados on-premises estiver offline enquanto o arquivo de backup for criado, copiado e restaurado. Se não for possível deixar o banco de dados offline, use a replicação de log binário (binlog) para atualizar o banco de dados depois de migrar para o Amazon RDS por meio do Amazon S3, conforme explicado neste tópico. Para obter mais informações, consulte Replicação com uma instância MySQL ou MariaDB executada externamente ao Amazon RDS. Também é possível usar o AWS Database Migration Service para migrar seu banco de dados para o Amazon RDS. Para obter mais informações, consulte O que é o AWS Database Migration Service?

Limitações e recomendações para importar arquivos de backup do Amazon S3 para o Amazon RDS

Veja a seguir algumas limitações e recomendações para importar arquivos de backup do Amazon S3:

  • Você só pode importar os dados para uma nova instância de banco de dados, não para uma instância existente.

  • É necessário usar o Percona XtraBackup para criar o backup de seu banco de dados no local.

  • Não é possível migrar de um banco de dados de origem que tenha tabelas definidas fora do diretório de dados MySQL padrão.

  • Você deve importar seus dados para a versão secundária padrão da sua versão principal do MySQL em sua região da AWS. Por exemplo, se sua versão principal for MySQL 5.6 e a versão secundária padrão para sua região da AWS for 5.6.44, você deverá importar seus dados para uma instância de banco de dados MySQL versão 5.6.44. Você pode atualizar sua instância de banco de dados após a importação. Para obter informações sobre como determinar a versão secundária padrão, consulte MySQL em versões do Amazon RDS.

  • Reverter migrações não é uma ação compatível com versões principais e secundárias. Por exemplo, você não pode migrar da versão 5.7 para a versão 5.6 e você não pode migrar da versão 5.6.39 para a versão 5.6.37.

  • Você não pode importar um banco de dados MySQL 5.5.

  • Não é possível importar um banco de dados MySQL on-premises de uma versão principal para outra. Por exemplo, não é possível importar um banco de dados MySQL 5.6 para um banco de dados Amazon RDS MySQL 5.7 ou 8.0. Da mesma forma, não é possível importar um banco de dados MySQL 5.7 para um banco de dados Amazon RDS MySQL 8.0. Você pode atualizar sua instância de banco de dados depois de concluir a importação.

  • Não é possível restaurar de um banco de dados de origem criptografado, mas você pode restaurar para uma instância de banco de dados do Amazon RDS.

  • Não é possível fazer a restauração de um backup criptografado no bucket do Amazon S3.

  • Você não pode restaurar a partir de um bucket do Amazon S3 em uma região da AWS diferente da instância de banco de dados do Amazon RDS.

  • A importação do Amazon S3 não tem suporte na classe de Instância de Banco de Dados db.t2.micro. Contudo, é possível restaurar para outra classe de instância de banco de dados e alterar a instância de banco de dados posteriormente. Para mais informações sobre as classes da instância, consulte Especificações de hardware para classes de instância de banco de dados .

  • O Amazon S3 limita o tamanho de um arquivo carregado para um bucket do Amazon S3 a 5 TB. Se um arquivo de backup exceder 5 TB, você deverá dividi o arquivo de backup em arquivos menores.

  • Quando você restaura o banco de dados, o backup é copiado e extraído na instância de banco de dados. Portanto, provisione espaço de armazenamento para a instância de banco de dados igual ou maior que a soma do tamanho do backup, além do tamanho do banco de dados original no disco.

  • O Amazon RDS limita a 1 milhão o número de arquivos carregados para um bucket do Amazon S3. Se os dados de backup do banco de dados, incluindo todos os backups completos e incrementais, exceder 1 milhão de arquivos, use um arquivo Gzip (.gz), tar (.tar.gz) ou Percona xbstream (.xbstream) para armazenar arquivos de backup completos e incrementais no bucket do Amazon S3. O Percona XtraBackup 8.0 oferece suporte apenas ao Percona xbstream para compactação.

  • As contas de usuário não são importadas automaticamente. Salve suas contas de usuário de seu banco de dados de origem e adicione-as à sua nova instância de banco de dados posteriormente.

  • As funções não são importadas automaticamente. Salve suas funções de seu banco de dados de origem e adicione-as à sua nova instância de banco de dados posteriormente.

  • Os procedimentos armazenados não são importados automaticamente. Salve seus procedimentos armazenados de seu banco de dados de origem e adicione-o à sua nova instância de banco de dados posteriormente.

  • As informações de fuso horário não são importadas automaticamente. Registre as informações de fuso horário de seu banco de dados de origem e defina o fuso horário de sua nova instância de banco de dados posteriormente. Para obter mais informações, consulte Fuso horário local para instâncias de banco de dados MySQL.

  • O parâmetro innodb_data_file_path deve ser configurado com apenas um arquivo de dados que usa o nome de arquivo de dados padrão "ibdata1:12M:autoextend". Bancos de dados com dois arquivos de dados ou com um arquivo de dados com um nome diferente não podem ser migrados usando esse método.

    Veja a seguir, exemplos de nomes de arquivos que não são permitidos: "innodb_data_file_path=ibdata1:50M; ibdata2:50M:autoextend" e "innodb_data_file_path=ibdata01:50M:autoextend".

  • O tamanho máximo do banco de dados restaurado é o tamanho máximo do banco de dados compatível menos o tamanho do backup. Portanto, se o tamanho máximo do banco de dados compatível for de 64 TiB e o tamanho do backup for de 30 TiB, o tamanho máximo do banco de dados restaurado será de 34 TiB, como no exemplo a seguir:

    64 TiB - 30 TiB = 34 TiB

    Para obter informações sobre o tamanho máximo do banco de dados compatível com o Amazon RDS for MySQL, consulte Armazenamento SSD de uso geral e Armazenamento SSD de IOPS provisionadas.

Visão geral da configuração para importar arquivos de backup do Amazon S3 para o Amazon RDS

Estes são os componentes necessários para configurar a importação de arquivos de backup do Amazon S3 para o Amazon RDS:

  • Um bucket do Amazon S3 para armazenar seus arquivos de backup.

  • Um backup de seu banco de dados no local criado pelo Percona XtraBackup.

  • Uma função do AWS Identity and Access Management (IAM) para permitir que o Amazon RDS acesse o bucket.

Se você já tiver um bucket do Amazon S3, você pode usá-lo. Se você não tiver um bucket do Amazon S3, crie um novo. Se você quiser criar um novo bucket, consulte Criar um bucket.

Use a ferramenta Percona XtraBackup para criar seu backup. Para obter mais informações, consulte Criar o backup de banco de dados.

Se você já tiver uma função do IAM, você pode usá-la. Se você não tiver uma função do IAM, crie uma nova manualmente. Como alternativa, opte por criar uma nova função do IAM para você na sua conta por meio do assistente ao restaurar o banco de dados usando o Console de gerenciamento da AWS. Se você quiser criar manualmente uma nova função do IAM ou anexar políticas de confiança e de permissões a uma função do IAM existente, consulte Criação manual de uma função do IAM. Caso queira ter uma nova função do IAM criada para você, siga o procedimento em Console.

Criar o backup de banco de dados

Use o software Percona XtraBackup para criar seu backup. Você pode instalar o Percona XtraBackup no Download Percona XtraBackup.

nota

Você deve usar o Percona XtraBackup 8.0 para a migração do MySQL 8.0. O Percona XtraBackup 8.0.12 e versões posteriores oferecem suporte à migração de todas as versões do MySQL. Se você estiver migrando para o Amazon RDS MySQL 8.0.20 ou posterior, use o Percona XtraBackup 8.0.12 ou posterior.

Para migrações do MySQL 5.7, você também pode usar o Percona XtraBackup 2.4. Para migrações de versões anteriores do MySQL, você também pode usar o Percona XtraBackup 2.3 ou 2.4.

Você pode criar um backup completo de seus arquivos de banco de dados MySQL usando o Percona XtraBackup. Ou, se você já usa o Percona XtraBackup para fazer o backup dos arquivos do banco de dados MySQL, pode fazer upload dos arquivos e diretórios de backup completos e incrementais.

Para obter mais informações sobre como fazer backup de seu banco de dados com o Percona XtraBackup, consulte Percona XtraBackup - documentation e The xtrabackup binary no site da Percona.

Criar um backup completo com o Percona XtraBackup

Para criar um backup completo dos arquivos do banco de dados MySQL que podem ser restaurados a partir do Amazon S3, use o utilitário Percona XtraBackup (xtrabackup) para fazer backup do seu banco de dados.

Por exemplo, o seguinte comando cria um backup de um banco de dados MySQL e armazena os arquivos na pasta /on-premises/s3-restore/backup.

xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>

Se você deseja compactar o backup em um único arquivo (que pode ser dividido posteriormente, se necessário), salve o backup em um dos seguintes formatos:

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

nota

O Percona XtraBackup 8.0 oferece suporte apenas ao Percona xbstream para compactação.

O comando a seguir cria um backup do seu banco de dados MySQL dividido em vários arquivos Gzip.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar.gz

O comando a seguir cria um backup do seu banco de dados MySQL dividido em vários arquivos tar.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar

O comando a seguir cria um backup do seu banco de dados MySQL dividido em vários arquivos xbstream.

xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.xbstream

Usar backups incrementais com o Percona XtraBackup

Se você já usa o Percona XtraBackup para fazer backups completos e incrementais de seus arquivos de banco de dados MySQL, não precisa criar um backup completo e fazer upload dos arquivos de backup no Amazon S3. Em vez disso, você pode economizar muito tempo copiando os diretórios e arquivos de backup existentes no bucket do Amazon S3. Para obter mais informações sobre como criar backups incrementais usando o Percona XtraBackup, consulte Backups incrementais.

Quando copiar os arquivos existentes de backup completo e incremental para um bucket do Amazon S3, copie recursivamente o conteúdo do diretório de base. Esse conteúdo inclui o backup completo e também todo o backup incremental dos diretórios e arquivos. Esta cópia deve preservar a estrutura de diretórios no bucket do Amazon S3. O Amazon RDS itera por todos os arquivos e diretórios. O Amazon RDS usa o arquivo xtrabackup-checkpoints incluído a cada backup incremental para identificar o diretório de base e ordenar os backups incrementais por intervalo de número de sequência de log (LSN).

Considerações sobre backup para o Percona XtraBackup

O Amazon RDS consome seus arquivos de backup com base no nome do arquivo. Nomeie seus arquivos de backup com a extensão de arquivo apropriada com base no formato do arquivo, como .xbstream para arquivos armazenados usando o formato Percona xbstream.

O Amazon RDS consome os arquivos de backup em ordem alfabética assim como na ordem numérica natural. Use a opção split ao emitir o comando xtrabackup para garantir que os arquivos de backup sejam gravados e nomeados na ordem apropriada.

O Amazon RDS não oferece suporte a backups parciais criados com o Percona XtraBackup. Você não pode usar as seguintes opções para criar um backup parcial quando faz backup dos arquivos de origem de seu banco de dados: --tables, --tables-exclude, --tables-file, --databases, --databases-exclude ou --databases-file.

O Amazon RDS oferece suporte a backups incrementais criados com o Percona XtraBackup. Para obter mais informações sobre como criar backups incrementais usando o Percona XtraBackup, consulte Backups incrementais.

Criação manual de uma função do IAM

Se você não tiver uma função do IAM, crie uma nova manualmente. Como alternativa, opte por criar uma nova função do IAM para você por meio do assistente ao restaurar o banco de dados usando o Console de gerenciamento da AWS. Caso queira ter uma nova função do IAM criada para você, siga o procedimento em Console.

Para criar manualmente uma nova função do IAM para importar seu banco de dados do Amazon S3, crie uma função para delegar permissões do Amazon RDS para seu bucket do Amazon S3. Quando você cria uma função do IAM, você anexa as políticas de confiança e permissões. Para importar seus arquivos de backup do Amazon S3, use políticas de confiança e de permissões semelhantes aos exemplos a seguir. Para obter mais informações sobre como criar a função, consulte Criar uma função para delegar permissões a um serviço da AWS.

Como alternativa, opte por criar uma nova função do IAM para você por meio do assistente ao restaurar o banco de dados usando o Console de gerenciamento da AWS. Caso queira ter uma nova função do IAM criada para você, siga o procedimento em Console.

As políticas de confiança e permissões exigem que você forneça um Nome do recurso da Amazon (ARN). Para mais informações sobre como formatar o ARN, consulte Nomes de recurso da Amazon (ARNs) e namespaces de serviço da AWS.

exemplo Políticas de confiança para importar do Amazon S3

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

exemplo Política de permissões para importar do Amazon S3 — permissões de usuário do IAM

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::IAM User ID:role/S3Access" } ] }

exemplo Política de permissões para importar do Amazon S3 — permissões de função

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::bucket_name/prefix*" } ] }
nota

Se você incluir um prefixo de nome de arquivo, inclua o asterisco (*) após o prefixo. Se não quiser especificar um prefixo, especifique apenas um asterisco.

Importar dados do Amazon S3 para uma nova instância de banco de dados MySQL

Você pode importar dados do Amazon S3 para uma nova instância de banco de dados do MySQL usando o Console de gerenciamento da AWS, a AWS CLI ou a API do RDS.

Para importar dados do Amazon S3 para uma nova instância de banco de dados MySQL

  1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No canto superior direito do console do Amazon RDS, selecione a região da AWS na qual deseja criar a instância de banco de dados. Escolha o mesmo nome da região da AWS que o bucket do Amazon S3 que contém seu backup de banco de dados.

  3. No painel de navegação, escolha Databases (Bancos de dados).

  4. Escolha Restore from S3 (Restaurar do S3).

    A página Create database by restoring from S3 (Criar banco de dados restaurando a partir do S3) é exibida.

    
                                A página em que você especifica os detalhes para restaurar uma instância de banco de dados a partir do S3
  5. Em S3 destination (destino do S3):

    1. Escolha o S3 bucket (Bucket do S3) em que os logs de auditoria serão gravados.

    2. (Opcional) Em S3 folder path prefix (Prefixo do caminho da pasta do S3), digite um prefixo de caminho de arquivo para os arquivos armazenados no bucket do Amazon S3.

      Se você não especificar um prefixo, o RDS criará a instância de banco de dados usando todos os arquivos e as pastas na pasta raiz do bucket do S3. Se você especificar um prefixo, o RDS criará a instância de banco de dados usando os arquivos e as pastas no bucket do S3 no qual o caminho para o arquivo começa com o prefixo especificado.

      Por exemplo, suponha que você armazene seus arquivos de backup no S3 em uma subpasta denominada backups e que você tenha vários conjuntos de arquivos de backup, cada um em seu próprio diretório (gzip_backup1, gzip_backup2 e assim por diante). Nesse caso, especifique um prefixo de backups/gzip_backup1 para restaurar dos arquivos na pasta gzip_backup1.

  6. Em Engine options (Opções de mecanismo):

    1. Em Engine type (Tipo de mecanismo), escolha MySQL.

    2. Para Source engine version (Versão do mecanismo de origem), escolha a versão principal do MySQL de seu banco de dados de origem.

    3. Para Version (Versão), escolha a versão do mecanismo MySQL para sua instância de banco de dados restaurada.

  7. Para IAM role (Função do IAM), é possível escolher uma função existente do IAM.

  8. (Opcional) Você também pode ter uma nova função do IAM escolhendo Create a New Role (Criar uma nova função). Em caso afirmativo:

    1. Insira o IAM role name (Nome da função do IAM).

    2. Escolha se deseja Allow access to KMS key (Permitir acesso à chave KMS):

      • Se você não criptografou os arquivos de backup, escolha No (Não).

      • Se você criptografou os arquivos de backup com AES-256 (SSE-S3) quando os carregou para o Amazon S3, escolha No (Não). Nesse caso, os dados são descriptografados automaticamente.

      • Se você criptografou os arquivos de backup com criptografia no lado do servidor do AWS-KMS (SSE-KMS) ao carregá-los para o Amazon S3, escolha No (Não). A seguir, escolha a chave mestre correta de Chave mestra.

        O Console de gerenciamento da AWS cria uma política do IAM que habilita o Aurora para descriptografar os dados.

      Para obter mais informações, consulte Proteger dados usando criptografia do lado do servidor no Guia do desenvolvedor do Amazon S3.

  9. Especifique as informações da instância de banco de dados. Para obter informações sobre cada configuração, consulte Configurações para instâncias de banco de dados.

    nota

    Certifique-se de alocar memória suficiente para sua nova instância de banco de dados para que a operação de restauração possa continuar.

    Você também pode escolher Enable storage autoscaling (Habilitar dimensionamento automático de armazenamento) para permitir o crescimento futuro automaticamente.

  10. Escolha configurações adicionais conforme necessário.

  11. Escolha Create database (Criar banco de dados).

Para importar dados do Amazon S3 para uma nova instância de banco de dados MySQL usando a AWS CLI, chame o comando restore-db-instance-from-s3 com os parâmetros a seguir. Para obter informações sobre cada configuração, consulte Configurações para instâncias de banco de dados.

nota

Certifique-se de alocar memória suficiente para sua nova instância de banco de dados para que a operação de restauração possa continuar.

Você também pode usar o parâmetro --max-allocated-storage para habilitar o dimensionamento automático de armazenamento e permitir o crescimento futuro automaticamente.

  • --allocated-storage

  • --db-instance-identifier

  • --db-instance-class

  • --engine

  • --master-username

  • --master-user-password

  • --s3-bucket-name

  • --s3-ingestion-role-arn

  • --s3-prefix

  • --source-engine

  • --source-engine-version

exemplo

Para Linux, macOS ou Unix:

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier myidentifier \ --db-instance-class db.m5.large \ --engine mysql \ --master-username admin \ --master-user-password mypassword \ --s3-bucket-name mybucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 5.6.44 \ --max-allocated-storage 1000

Para Windows:

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m5.large ^ --engine mysql ^ --master-username admin ^ --master-user-password mypassword ^ --s3-bucket-name mybucket ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucketprefix ^ --source-engine mysql ^ --source-engine-version 5.6.44 ^ --max-allocated-storage 1000

Para importar dados do Amazon S3 para uma nova instância de banco de dados MySQL usando a API do Amazon RDS, chame a operação RestoreDBInstanceFromS3.