Restauração de um backup em uma instância de banco de dados MySQL
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 o 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 do S3.](images/MySQL-bak-file.png)
A importação de arquivos de backup do Amazon S3 é compatível com o MySQL 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 ter mais informações, consulte Configurar a replicação da posição do arquivo de log binário com uma instância de origem externa. Também é possível usar o AWS Database Migration Service para migrar seu banco de dados para o Amazon RDS. Para ter 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.
-
Você não pode importar dados de uma exportação de snapshot de banco de dados para o Amazon S3.
-
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.
-
O Percona Server para MySQL não é aceito como banco de dados de origem porque ele pode conter tabelas
compression_dictionary*
no esquemamysql
. -
Você deve importar seus dados para a versão secundária padrão da versão principal do MySQL em sua Região da AWS. Por exemplo, se a versão principal for MySQL 8.0, e a versão secundária padrão de sua Região da AWS for 8.0.28, importe os dados para uma instância de banco de dados do MySQL versão 8.0.28. 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 8.0 para a versão 5.7 e não pode migrar da versão 8.0.32 para a versão 8.0.31.
-
Não é possível importar um banco de dados do MySQL 5.5 ou 5.6.
-
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 do MySQL 5.7 para um banco de dados do RDS para 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 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 ter 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 para 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 ter 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. Se preferir, crie uma nova função do IAM para você em sua conta por meio do assistente ao restaurar o banco de dados usando o AWS Management Console. 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. É recomendável utilizar a versão mais recente do Percona XtraBackup. Você pode instalar o Percona XtraBackup no Download Percona XtraBackup
Atenção
Ao criar um backup de banco de dados, o XtraBackup pode salvar credenciais no arquivo xtrabackup_info. Certifique-se de examinar esse arquivo para que a configuração tool_command
nele não contenha informações confidenciais.
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 RDS para 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 ter mais informações sobre como fazer backup de seu banco de dados com o Percona XtraBackup, consulte Percona XtraBackup - documentation
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
nota
Se você vir o erro a seguir, saiba que ele pode ser causado pela mistura de formatos de arquivo em seu comando:
ERROR:/bin/tar: This does not look like a tar archive
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 ter 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. Essa cópia deve preservar a estrutura de diretórios no bucket do Amazon S3. O Amazon RDS percorre todos os arquivos e diretórios. O Amazon RDS usa o arquivo xtrabackup-checkpoints
incluído em 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 ter 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. No entanto, se você restaurar o banco de dados usando o AWS Management Console, recomendamos que siga o procedimento em Console e deixe que o RDS crie esse perfil do IAM para você.
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 um perfil do IAM, você anexa as políticas de confiança e permissões. Para importar os arquivos de backup do Amazon S3, use políticas de confiança e de permissões semelhantes aos exemplos a seguir. Para ter mais informações sobre como criar a função, consulte Criar uma função para delegar permissões a um AWSserviço da .
As políticas de confiança e permissões exigem que você forneça um Nome do recurso da Amazon (ARN). Para ter mais informações sobre como formatar o ARN, consulte Nomes de recurso da Amazon (ARNs) e AWS namespaces de serviço da .
exemplo política 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
No exemplo a seguir, substitua iam_user_id
por seu próprio valor.
{ "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 perfil
No exemplo a seguir, substitua amzn-s3-demo-bucket
e prefix
por seus próprios valores.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/prefix
*" }, { // If your bucket is encrypted, include the following permission. This permission allows decryption of your AWS KMS key. "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:region
:customer_id
:key/key_id
*" ] } ] }
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 AWS Management Console, a AWS CLI ou a API do RDS.
Para importar dados do Amazon S3 para uma nova instância de banco de dados MySQL
-
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No canto superior direito do console do Amazon RDS, escolha a Região da AWS na qual deseja criar a instância de banco de dados. Escolha a mesma Região da AWS do bucket do Amazon S3 que contém o backup do banco de dados.
-
No painel de navegação, escolha Databases (Bancos de dados).
-
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.
-
Em S3 destination (destino do S3):
-
Selecione o S3 bucket (bucket do S3) que contém o backup.
-
(Opcional) Em Prefixo do S3, insira o prefixo do caminho dos 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.
-
-
Em Engine options (Opções de mecanismo):
-
Em Engine type (Tipo de mecanismo), escolha MySQL.
-
Para Source engine version (Versão do mecanismo de origem), escolha a versão principal do MySQL de seu banco de dados de origem.
-
Em Versão do mecanismo, escolha a versão secundária padrão da versão principal do MySQL na Região da AWS.
No AWS Management Console, apenas a versão secundária padrão está disponível. Você pode atualizar sua instância de banco de dados após a importação.
-
-
Em Perfil do IAM, crie ou escolha o perfil do IAM com a política de confiança e a política de permissões necessárias para que o Amazon RDS acesse o bucket do Amazon S3. Execute uma das seguintes ações:
(Recomendado) Escolha Criar um perfil e insira o Nome do perfil do IAM. Com essa opção, o RDS cria automaticamente o perfil com a política de confiança e a política de permissões para você.
Escolha um perfil do IAM existente. Verifique se esse perfil atende a todos os critérios em Criação manual de uma função do IAM.
-
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 autoscaling do armazenamento) para permitir o crescimento futuro automaticamente.
-
Escolha configurações adicionais conforme necessário.
-
Escolha 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 a autoescalabilidade de armazenamento e permitir o crescimento futuro automaticamente.
--allocated-storage
--db-instance-identifier
--db-instance-class
--engine
--master-username
--manage-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-identifiermyidentifier
\ --db-instance-classdb.m5.large
\ --enginemysql
\ --master-usernameadmin
\ --manage-master-user-password \ --s3-bucket-nameamzn-s3-demo-bucket
\ --s3-ingestion-role-arnarn:aws:iam::account-number:role/rolename
\ --s3-prefixbucketprefix
\ --source-enginemysql
\ --source-engine-version8.0.32
\ --max-allocated-storage1000
Para Windows:
aws rds restore-db-instance-from-s3 ^ --allocated-storage
250
^ --db-instance-identifiermyidentifier
^ --db-instance-classdb.m5.large
^ --enginemysql
^ --master-usernameadmin
^ --manage-master-user-password ^ --s3-bucket-nameamzn-s3-demo-bucket
^ --s3-ingestion-role-arnarn:aws:iam::account-number:role/rolename
^ --s3-prefixbucketprefix
^ --source-enginemysql
^ --source-engine-version8.0.32
^ --max-allocated-storage1000
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.