

# Importar dados para uma instância de banco de dados do Amazon RDS para MySQL.
<a name="MySQL.Procedural.Importing.Other"></a>

Você pode usar várias técnicas diferentes para importar os dados para uma instância de banco de dados do RDS para MySQL. A melhor abordagem depende de inúmeros fatores:
+ origem dos dados;
+ Quantidade de dados
+ importação única ou contínua;
+ quantidade de tempo de inatividade.

 Se você também estiver migrando uma aplicação com os dados, é importante considerar a quantidade de tempo de inatividade.

A seguinte tabela lista técnicas para importar dados em uma instância de banco de dados do RDS para MySQL:


| Origem | Quantidade de dados | Uma vez ou contínuo | Tempo de inatividade da aplicação | Técnica | Mais informações | 
| --- | --- | --- | --- | --- | --- | 
|  Banco de dados MySQL existente no local ou no Amazon EC2  |  Quaisquer  |  Uma vez  |  Alguns  |  Crie um backup de seu banco de dados no local, armazene-o no Amazon S3 e, em seguida, restaure o arquivo de backup para uma nova instância de banco de dados do Amazon RDS executando MySQL.  |  [Restaurar um backup em uma instância de banco de dados do Amazon RDS para MySQL](MySQL.Procedural.Importing.md)  | 
|  Banco de dados MySQL existente no local ou no Amazon EC2  |  Quaisquer  |  Contínuo  |  Mínimo  |  Configure a replicação com um banco de dados MySQL existente como origem de replicação.  |  [Configurar a replicação da posição do arquivo de log binário com uma instância de origem externa](MySQL.Procedural.Importing.External.Repl.md) [Importar dados para um banco de dados do Amazon RDS para MySQL com tempo de inatividade reduzido](mysql-importing-data-reduced-downtime.md)  | 
|  Qualquer banco de dados existente  |  Quaisquer  |  Uma vez ou contínuo  |  Mínimo  |  Use o AWS Database Migration Service para migrar o banco de dados com o mínimo de tempo de inatividade e, para diversos mecanismos de banco de dados (DB), continuar a replicação contínua.  |  [What is AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) (O que é o ) e [Using a MySQL-compatible database as a target for AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html) (Usar um banco de dados compatível com MySQL como destino para o ) no *Guia do usuário do AWS Database Migration Service*   | 
|  Instância de banco de dados MySQL existente  |  Quaisquer  |  Uma vez ou contínuo  |  Mínimo  |  Crie uma réplica de leitura para a replicação contínua. Promova a réplica de leitura para a criação única de uma instância de banco de dados.  |  [Trabalhar com réplicas de leitura de instância de banco de dados](USER_ReadRepl.md)  | 
|  Banco de dados existente do MySQL  |  Pequeno  |  Uma vez  |  Alguns  | Copie os dados diretamente para sua instância de banco de dados MySQL usando um utilitário de linha de comando. |  [Importar dados de um banco de dados externo do MySQL para uma instância de banco de dados do Amazon RDS para MySQL.](mysql-importing-data-external-database.md)  | 
|  Dados não armazenados em um banco de dados existente  |  Médio  |  Uma vez  |  Alguns  | Crie arquivos simples e importe-os usando instruções MySQL LOAD DATA LOCAL INFILE. |  [Importar dados de qualquer fonte para uma instância de banco de dados do Amazon RDS para MySQL](mysql-importing-data-any-source.md)  | 

**nota**  
O banco de dados do sistema `mysql` contém informações de autenticação e autorização necessárias para fazer login na instância de banco de dados e acessar os dados. Soltar, alterar, renomear ou truncar tabelas, dados ou outros conteúdos do banco de dados `mysql` em sua instância de banco de dados pode resultar em erros e pode tornar a instância de banco de dados e seus dados inacessíveis. Se isso ocorrer, você poderá restaurar a instância de banco de dados por meio de um snapshot usando o comando [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) da AWS CLI. Você pode recuperar a instância de banco de dados usando o comando [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) da AWS CLI. 

# Considerações sobre importação de dados para o MySQL
<a name="MySQL.Procedural.Importing.Advanced"></a>

O conteúdo a seguir apresenta informações técnicas relacionadas ao carregamento de dados no MySQL. Este conteúdo é destinado a usuários que estão familiarizados com a arquitetura do servidor MySQL.

## registro em log binário
<a name="MySQL.Procedural.Importing.Advanced.Log"></a>

A habilitação do registro em log binário reduz a performance do carregamento de dados e requer até quatro vezes mais espaço em disco em comparação com o registro em log desabilitado. O tamanho da transação usada para carregar os dados afeta diretamente a performance do sistema e as necessidades de espaço em disco. As transações maiores exigem mais recursos.

## Tamanho da transação
<a name="MySQL.Procedural.Importing.Advanced.Size"></a>

O tamanho da transação influencia os seguintes aspectos dos carregamentos de dados do MySQL:
+ Consumo de recursos
+ Utilização de espaço em disco
+ Processo de retomada
+ Tempo de recuperação
+ Formato de entrada (arquivos simples ou SQL)

Esta seção descreve como o tamanho da transação afeta o registro em log binário e justifica a desabilitação do registro em log binário durante grandes cargas de dados. Você pode habilitar e desabilitar o registro em log binário configurando o período de retenção de backup automatizado do Amazon RDS. Valores diferentes de zero habilitam o registro em log binário, enquanto um valor de zero o desabilita. Para obter mais informações, consulte [Período de retenção de backup](USER_WorkingWithAutomatedBackups.BackupRetention.md).

Esta seção descreve também o impacto de grandes transações sobre o InnoDB e por que é importante que o tamanho das transações seja pequeno. 

### Transações pequenas
<a name="MySQL.Procedural.Importing.Advanced.Log.Small"></a>

Para pequenas transações, o registro em log binário duplica o número de gravações em disco necessárias para carregar os dados. Esse efeito pode degradar severamente a performance de outras sessões de banco de dados e aumentar o tempo necessário para carregar os dados. A degradação experimentada depende em parte dos seguintes fatores:
+ Taxa de upload
+ Outra atividade do banco de dados que ocorre durante o carregamento
+ Capacidade da instância de banco de dados do Amazon RDS

Os logs binários também consomem um espaço em disco aproximadamente igual à quantidade de dados carregados enquanto os logs são copiados e removidos. O Amazon RDS minimiza isso fazendo backup e removendo os logs binários com frequência. 

### Transações grandes
<a name="MySQL.Procedural.Importing.Advanced.Log.Large"></a>

Quanto a transações grandes, o registro em log binário triplica as IOPS e o uso do disco pelos seguintes motivos:
+ O cache de log binário armazena os dados da transação temporariamente no disco.
+ Esse cache se amplia de acordo com o tamanho da transação, o que consome espaço em disco.
+ Quando a transação (de confirmação ou reversão) é concluída, o sistema copia o cache para o log binário.

Esse processo cria três cópias dos dados:
+ os dados originais;
+ o cache no disco;
+ a entrada final do log binário.

Cada operação de gravação incorre em E/S adicional, afetando ainda mais a performance.

Por isso, o registro em log binário requer o triplo de espaço em disco em comparação com o registro desabilitado. Por exemplo, carregar 10 GiB de dados como uma única transação cria três cópias:
+ 10 GiB para os dados da tabela;
+ 10 GiB para o cache de log binário;
+ 10 GiB para o arquivo de log binário.

O total de espaço em disco temporário necessário é 30 GiB.

Considerações importantes sobre o espaço em disco:
+ O arquivo de cache persiste até que a sessão termine ou uma nova transação crie outro cache.
+ O log binário permanece até o momento em que ele é copiado, possivelmente mantendo 20 GiB (cache e log) por um período prolongado.

Se você usar `LOAD DATA LOCAL INFILE` para carregar os dados, a recuperação de dados criará uma quarta cópia caso o banco de dados tenha que ser recuperado de um backup feito antes do carregamento. Durante a recuperação, o MySQL extrai dados de log binário em um arquivo simples. Em seguida, o MySQL executa `LOAD DATA LOCAL INFILE`. Com base no exemplo anterior, essa recuperação requer um total de espaço em disco temporário de 40 GiB ou 10 GiB cada para tabela, cache, log e arquivo local. Sem pelo menos 40 GiB de espaço livre em disco, a recuperação falhará.

### Otimizar grandes carregamentos de dados
<a name="MySQL.Procedural.Importing.AnySource.Advanced.Disable"></a>

No caso de grandes carregamentos de dados, desabilite o registro em log binário para reduzir os custos indiretos e os requisitos de espaço em disco. Você pode desabilitar o registro em log binário definindo o período de retenção de backup como 0. Após o término do carregamento, substitua o período de retenção de backup por um valor apropriado diferente de zero. Para ter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md) e [Período de retenção de backup](USER_ModifyInstance.Settings.md) na tabela de configurações.

**nota**  
Se a instância de banco de dados for uma instância de banco de dados de origem para réplicas de leitura, não será possível definir o período de retenção de backup como 0.

Antes de carregar os dados, recomendamos criar um snapshot do banco de dados. Para obter mais informações, consulte [Gerenciar backups manuais](USER_ManagingManualBackups.md). 

## InnoDB
<a name="MySQL.Procedural.Importing.Advanced.InnoDB"></a>

As informações a seguir sobre o registro em log de desfazer e as opções de recuperação ajudam a manter as transações do InnoDB pequenas para otimizar a performance do banco de dados.

### Conceitos básicos sobre o registro em log de desfazer no InnoDB
<a name="MySQL.Procedural.Importing.Advanced.InnoDB.Undo"></a>

Desfazer é um mecanismo de registro em log que permite a reversão de transações e comporta o controle de simultaneidade de várias versões (MVCC). 

No caso do MySQL 5.7 e versões anteriores, os logs de desfazer são armazenados no espaço de tabela do sistema InnoDB (geralmente ibdata1) e são retidos até que o thread de limpeza os remova. Por esse motivo, grandes transações de carregamento de dados podem fazer com que o espaço de tabela do sistema se torne muito grande e consuma espaço em disco que não pode ser recuperado sem recriar o banco de dados.

Para todas as versões do MySQL, o thread de limpeza só deve remover quaisquer logs de desfazer depois que a transação ativa mais antiga for confirmada ou revertida. Se o banco de dados estiver processando outras transações durante o carregamento, os logs de desfazer também se acumularão e não poderão ser removidos, mesmo que as transações sejam confirmadas e nenhuma outra precise dos logs de desfazer para o MVCC. Nessa situação, todas as transações, incluindo as transações somente leitura, ficam mais lentas. Essa desaceleração ocorre porque todas as transações acessam todas as linhas que qualquer transação, não apenas a transação de carregamento, altera. Na prática, as transações devem examinar os logs de desfazer cuja eliminação foi impedida pelas transações de carregamento de longa duração durante uma limpeza de logs de desfazer. Isso afeta a performance de qualquer operação que acesse linhas modificadas. 

### Opções de recuperação de transações do InnoDB
<a name="MySQL.Procedural.Importing.Advanced.InnoDB.Rollback"></a>

Embora o InnoDB otimize as operações de confirmação, a reversão de grandes transações é lenta. Para uma recuperação mais rápida, execute uma recuperação para um ponto no tempo ou restaure um snapshot do banco de dados. Para obter mais informações, consulte [Recuperação para um ponto no tempo](USER_PIT.md) e [Restaurar uma instância de banco de dados](USER_RestoreFromSnapshot.md).

## Formatos de importação de dados
<a name="MySQL.Procedural.Importing.Advanced.InputFormat"></a>

O MySQL aceita dois formatos de importação de dados: arquivos simples e SQL. Analise as informações sobre cada formato para determinar a melhor opção para suas necessidades.

### Arquivos simples
<a name="MySQL.Procedural.Importing.Advanced.InputFormat.FlatFiles"></a>

Para transações pequenas, carregue arquivos simples com `LOAD DATA LOCAL INFILE`. Esse formato de importação de dados pode oferecer os seguintes benefícios em relação ao uso do SQL:
+ regras de tráfego de rede;
+ custos de transmissão de dados mais baixos;
+ redução dos custos indireto de processamento do banco de dados;
+ processamento de fluxos.

`LOAD DATA LOCAL INFILE` carrega todo o arquivo simples como uma única transação. Mantenha os arquivos individuais com um tamanho pequeno para obter as seguintes vantagens:
+ **Capacidade de retomar**: é fácil manter o controle de quais arquivos foram carregados. Se surgir um problema durante o carregamento, você poderá continuar de onde parou. Você pode precisar retransmitir alguns dados ao Amazon RDS, mas, com arquivos pequenos, a quantidade retransmitida é mínima.
+ **Carregamento de dados em paralelo**: se você tiver IOPS e largura de banda da rede suficientes para carregamento de um único arquivo, o carregamento em paralelo pode economizar tempo.
+ **Controle da taxa de carregamento**: se o carregamento de dados tiver um impacto negativo em outros processos, você poderá controlar a taxa de carregamento aumentando o intervalo entre os arquivos. 

Grandes transações reduzem os benefícios de usar `LOAD DATA LOCAL INFILE` para importar dados. Quando você não conseguir dividir uma grande quantidade de dados em arquivos menores, considere a possibilidade de usar o SQL.

### SQL
<a name="MySQL.Procedural.Importing.Advanced.InputFormat.SQL"></a>

O SQL tem uma vantagem fundamental em relação aos arquivos simples: é fácil manter as transações com um tamanho pequeno. Contudo, o tempo de carregamento do SQL pode ser significativamente mais longo do que o dos arquivos simples. Além disso, após uma falha, pode ser difícil determinar onde retomar. Não é possível reiniciar os arquivos mysqldump. Se ocorrer uma falha ao carregar um arquivo mysqldump, você deve modificá-lo ou substituí-lo para que o carregamento possa continuar. Ou, alternativamente, depois de corrigir a causa da falha, você pode restaurar para o ponto no tempo anterior ao carregamento e reenviar o arquivo. Para obter mais informações, consulte [Recuperação para um ponto no tempo](USER_PIT.md).

## Usar snapshots de banco de dados do Amazon RDS para pontos de verificação de banco de dados
<a name="MySQL.Procedural.Importing.Advanced.Checkpoints"></a>

Se você carrega dados por longos períodos, como horas ou dias, sem registro em log binário, use snapshots de banco de dados para oferecer pontos de verificação periódicos em prol da segurança dos dados. Cada snapshot de banco de dados cria uma cópia consistente da instância de banco de dados, que serve como ponto de recuperação durante falhas do sistema ou eventos de corrupção de dados. Como os snapshots de banco de dados são rápidos, os pontos de verificação frequentes têm um impacto mínimo na performance do carregamento. Você pode excluir snapshots de banco de dados anteriores sem afetar a durabilidade ou os recursos de recuperação do banco de dados. Para ter mais informações sobre snapshots de banco de dados, consulte [Gerenciar backups manuais](USER_ManagingManualBackups.md).

## Reduzir os tempos de carregamento do banco de dados
<a name="MySQL.Procedural.Importing.Advanced.LoadTime"></a>

Os seguintes itens são dicas adicionais para reduzir os tempos de carregamento: 
+ Crie todos os índices secundários antes de carregar dados nos bancos de dados MySQL. Ao contrário de outros sistemas de banco de dados, o MySQL reconstrói a tabela inteira ao adicionar ou modificar índices secundários. Esse processo cria outra tabela com alterações no índice, copia todos os dados e descarta a tabela original.
+ Carregue os dados na ordem da chave primária. Quanto a tabelas do InnoDB, isso pode reduzir os tempos de carregamento em 75% a 80% e diminuir o tamanho do arquivo de dados em 50%.
+ Desabilite as restrições de chave estrangeira definindo `foreign_key_checks` como `0`. Isso com frequência é necessário para arquivos simples carregados com `LOAD DATA LOCAL INFILE`. Com relação a qualquer carregamento, desabilitar as verificações de chave estrangeira acelera o carregamento de dados. Após a conclusão do carregamento, habilite novamente as restrições configurando `foreign_key_checks` como `1` e verifique os dados.
+ Carregue os dados em paralelo, a menos que esteja se aproximando de um limite de recursos. Para habilitar o carregamento simultâneo em vários segmentos da tabela, use tabelas particionadas quando apropriado. 
+ Para reduzir os custos indiretos de execução do SQL, combine várias instruções `INSERT` em operações `INSERT` únicas de vários valores. `mysqldump` implementa essa otimização automaticamente. 
+ Reduza as operações de E/S de log do InnoDB configurando `innodb_flush_log_at_trx_commit` como `0`. Após a conclusão do carregamento, restaure `innodb_flush_log_at_trx_commit` para `1`. 
**Atenção**  
Ao definir `innodb_flush_log_at_trx_commit` como `0`, o InnoDB descarrega os respectivos logs a cada segundo em vez de a cada confirmação. Essa configuração aumenta a performance, mas pode gerar risco de perda de transações durante falhas no sistema.
+ Se você estiver carregando dados em uma instância de banco de dados que não tem réplicas de leitura, defina `sync_binlog` como `0`. Após a conclusão do carregamento, restaure `sync_binlog parameter` para `1`.
+ Carregue os dados antes de converter a instância de banco de dados em uma implantação multi-AZ. Se a instância de banco de dados já utiliza uma implantação multi-AZ, não recomendamos mudar para uma implantação single-AZ para carregamento de dados. Se fizer isso, obterá apenas pequenas melhorias.

# Restaurar um backup em uma instância de banco de dados do Amazon RDS para MySQL
<a name="MySQL.Procedural.Importing"></a>

O Amazon RDS permite a importação de bancos de dados MySQL com arquivos de backup. Você pode criar um backup do banco de dados, armazenar o arquivo de backup 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 Amazon RDS permite a importação de arquivos de backup do Amazon S3 em todas as Regiões da AWS. 

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

O diagrama a seguir mostra o cenário com suporte.

![\[MySQL importando arquivos de backup do S3.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/MySQL-bak-file.png)


Se seu banco de dados on-premises puder ficar off-line enquanto você cria, copia e restaura os arquivos de backup, recomendamos usar os arquivos de backup para importar o banco de dados para o Amazon RDS. Se o banco de dados não puder ficar off-line, use um dos seguintes métodos:
+ **Logs binários**: primeiro, importe arquivos de backup do Amazon S3 para o Amazon RDS, conforme explicado neste tópico. Em seguida, use a replicação de log binário (binlog) para atualizar o banco de dados. Para obter mais informações, consulte [Configurar a replicação da posição do arquivo de log binário com uma instância de origem externa](MySQL.Procedural.Importing.External.Repl.md). 
+ **AWS Database Migration Service**: use o AWS Database Migration Service para migrar o banco de dados para o Amazon RDS. Para ter mais informações, consulte [O que é o AWS Database Migration Service?](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 

## Visão geral da configuração para importar arquivos de backup do Amazon S3 para o Amazon RDS
<a name="MySQL.Procedural.Importing.Enabling"></a>

Para configurar importar arquivos de backup do Amazon S3 para o Amazon RDS, você precisa dos seguintes componentes: 
+ Um bucket do Amazon S3 para armazenar seus arquivos de backup.

  Se você já tiver um bucket do Amazon S3, poderá usá-lo. Se você não tiver um bucket do Amazon S3, crie um. Para mais informações, consulte [ Criar um bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingaBucket.html). 
+ Um backup de seu banco de dados no local criado pelo Percona XtraBackup.

  Para obter mais informações, consulte [Criar o backup de banco de dados](#MySQL.Procedural.Importing.Backup). 
+ Um perfil do AWS Identity and Access Management (IAM) para permitir que o Amazon RDS acesse o bucket do S3.

  Se você já tiver um perfil do IAM, poderá usá-lo e anexar políticas de confiança e permissões a ele. Para obter mais informações, consulte [Criação manual de uma função do IAM](#MySQL.Procedural.Importing.Enabling.IAM).

  Se você não tiver um perfil do IAM, há duas opções:
  + É possível criar um perfil do IAM manualmente. Para obter mais informações, consulte [Criação manual de uma função do IAM](#MySQL.Procedural.Importing.Enabling.IAM).
  + Você pode optar por deixar o Amazon RDS criar um perfil do IAM para você. Se quiser que o Amazon RDS crie um perfil do IAM para você, siga o procedimento que usa o Console de gerenciamento da AWS na seção [Importar dados do Amazon S3 para uma nova instância de banco de dados MySQL](#MySQL.Procedural.Importing.PerformingImport). 

## Criar o backup de banco de dados
<a name="MySQL.Procedural.Importing.Backup"></a>

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 em [Software Downloads](https://www.percona.com/downloads/) no site da Percona. 

**Atenção**  
Ao criar um backup de banco de dados, o XtraBackup pode salvar credenciais no arquivo xtrabackup\$1info. Confirme se a configuração `tool_command` no arquivo xtrabackup\$1info não contém informações confidenciais.

A versão do Percona XtraBackup a ser usada depende da versão do MySQL da qual você está fazendo backup.
+ **MySQL 8.4**: use o Percona XtraBackup versão 8.4.
+ **MySQL 8.0**: use o Percona XtraBackup versão 8.0.
**nota**  
O Percona XtraBackup 8.0.12 e versões posteriores oferecem suporte à migração de todas as versões do MySQL 8.0. Se você estiver migrando para o RDS para MySQL 8.0.32 ou posterior, use o Percona XtraBackup 8.0.12 ou posterior.
+ **MySQL 5.7**: use o Percona XtraBackup versão 2.4.

Você pode usar o Percona XtraBackup para criar um backup completo de seus arquivos de banco de dados MySQL. 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 do banco de dados com o Percona XtraBackup, consulte [Percona XtraBackup - Documentation](https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html) no site da Percona. 

### Criar um backup completo com o Percona XtraBackup
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Full"></a>

Para criar um backup completo dos arquivos do banco de dados MySQL que o Amazon RDS pode restaurar do Amazon S3, use o utilitário Percona XtraBackup (`xtrabackup`). 

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 com base em sua versão do MySQL: 
+ **Gzip (.gz)**: para MySQL 5.7 e versões anteriores.
+ **tar (.tar)**: para MySQL 5.7 e versões anteriores.
+ **Percona xbstream (.xbstream)**: para todas as versões do MySQL.

**nota**  
O Percona XtraBackup 8.0 e posterior permite que apenas o Percona xbstream seja usado para compactação.

**MySQL 5.7 e versões anteriores**

O comando a seguir cria um backup do seu banco de dados MySQL dividido em vários arquivos Gzip. Substitua os valores por suas próprias informações.

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

**MySQL 5.7 e versões anteriores**

O comando a seguir cria um backup do seu banco de dados MySQL dividido em vários arquivos tar. Substitua os valores por suas próprias informações.

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

**Todas as versões do MySQL**

O comando a seguir cria um backup do seu banco de dados MySQL dividido em vários arquivos xbstream. Substitua os valores por suas próprias informações.

```
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, é provável que você tenha misturado os formatos de arquivo em seu comando:  

```
ERROR:/bin/tar: This does not look like a tar archive
```

### Usar backups incrementais com o Percona XtraBackup
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Incr"></a>

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, para economizar tempo, copie 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 [Create an incremental backup](https://docs.percona.com/percona-xtrabackup/LATEST/create-incremental-backup.html) no site da Percona. 

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 todos os diretórios e arquivos de backup incremental. 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
<a name="AuroraMySQL.Migrating.ExtMySQL.S3.Backup.Considerations"></a>

O Amazon RDS consome seus arquivos de backup com base no nome do arquivo. Nomeie os arquivos de backup com a extensão de arquivo apropriada com base no formato do arquivo. Por exemplo, use `.xbstream` para arquivos armazenados que usam o formato Percona xbstream. 

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

O Amazon RDS não oferece suporte a backups parciais criados com o Percona XtraBackup. Não é possível usar as seguintes opções para criar um backup parcial ao fazer backup dos arquivos de origem de seu banco de dados: 
+ `--tables`
+ `--tables-exclude`
+ `--tables-file`
+ `--databases`
+ `--databases-exclude`
+ `--databases-file`

## Criação manual de uma função do IAM
<a name="MySQL.Procedural.Importing.Enabling.IAM"></a>

Se você não tiver um perfil do IAM, crie um novo manualmente. No entanto, se você restaurar o banco de dados usando o Console de gerenciamento da AWS, recomendamos que deixe que Amazon o RDS crie esse perfil do IAM para você. Para que o Amazon RDS crie esse perfil para você, siga o procedimento na seção [Importar dados do Amazon S3 para uma nova instância de banco de dados MySQL](#MySQL.Procedural.Importing.PerformingImport).

Para criar manualmente um perfil do IAM para importar seu banco de dados do Amazon S3, crie um perfil para delegar permissões do Amazon RDS ao 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 ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).

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 ](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html). 

**Example política de confiança para importar do Amazon S3**    
****  

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

**Example política de permissões para importar do Amazon S3: permissões de usuário do IAM**  
No exemplo a seguir, substitua *iam\$1user\$1id* por seu próprio valor.    
****  

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

**Example 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*"
        },
        {
        "Effect": "Allow",
        "Action":
            [
                "kms:Decrypt"
            ],
        "Resource": [
            "arn:aws:kms:us-east-1:111122223333:key/key_id*"
            ]
        }
    ]
}
```
Se você incluir um prefixo de nome de arquivo, inclua o asterisco (\$1) 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
<a name="MySQL.Procedural.Importing.PerformingImport"></a>

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.

### Console
<a name="MySQL.Procedural.Importing.Console"></a>

**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/](https://console.aws.amazon.com/rds/).

1. No canto superior direito do console do Amazon RDS, escolha a Região da AWS na qual você quer 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. 

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

1. 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 Criar banco de dados restaurando pelo S3 em que você especifica os detalhes para restaurar uma instância de banco de dados pelo S3.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/mys-s3-ingestion.png)

1. Em **Origem do S3**:

   1. Selecione o **S3 bucket** (bucket do S3) que contém o backup.

   1. (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 Amazon RDS criará a instância de banco de dados usando todos os arquivos e pastas na pasta raiz do bucket do S3. Se você especificar um prefixo, o Amazon 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, você armazena seus arquivos de backup no S3 em uma subpasta denominada backups e tem vários conjuntos de arquivos de backup, cada um em seu próprio diretório (gzip\$1backup1, gzip\$1backup2 e assim por diante). Nesse caso, para restaurar dos arquivos na pasta gzip\$1backup1 para especifique o prefixo backups/gzip\$1backup1. 

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

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

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

   1. 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 Console de gerenciamento da AWS, apenas a versão secundária padrão está disponível. Depois de concluir a importação, você pode atualizar a instância de banco de dados.

1. 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 Amazon 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](#MySQL.Procedural.Importing.Enabling.IAM).

1. 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](USER_CreateDBInstance.Settings.md). 
**nota**  
Aloque armazenamento suficiente para sua nova instância de banco de dados para que a operação de restauração possa continuar.  
Para permitir o crescimento futuro automaticamente, em **Configuração adicional de armazenamento**, escolha **Habilitar escalabilidade automática do armazenamento**.

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

1. Escolha **Criar banco de dados**.

### AWS CLI
<a name="MySQL.Procedural.Importing.CLI"></a>

Para importar dados do Amazon S3 para uma nova instância de banco de dados MySQL usando a AWS CLI, execute o comando [restore-db-instance-from-s3](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html) com as opções a seguir. Para obter informações sobre cada configuração, consulte [Configurações para instâncias de banco de dados](USER_CreateDBInstance.Settings.md). 

**nota**  
Aloque armazenamento suficiente para sua nova instância de banco de dados para que a operação de restauração possa continuar.  
Para habilitar o ajuste de escala automático do armazenamento e permitir o crescimento futuro automaticamente, use a opção `--max-allocated-storage`.
+ `--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`

**Example**  
Para Linux, macOS ou Unix:  

```
 1. aws rds restore-db-instance-from-s3 \
 2.     --allocated-storage 250 \
 3.     --db-instance-identifier my_identifier \
 4.     --db-instance-class db.m5.large \
 5.     --engine mysql \
 6.     --master-username admin \
 7.     --manage-master-user-password \
 8.     --s3-bucket-name amzn-s3-demo-bucket \
 9.     --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \
10.     --s3-prefix bucket_prefix \
11.     --source-engine my_sql \
12.     --source-engine-version 8.0.32 \
13.     --max-allocated-storage 1000
```
Para Windows:  

```
 1. aws rds restore-db-instance-from-s3 ^
 2.     --allocated-storage 250 ^
 3.     --db-instance-identifier my_identifier ^
 4.     --db-instance-class db.m5.large ^
 5.     --engine mysql ^
 6.     --master-username admin ^
 7.     --manage-master-user-password ^
 8.     --s3-bucket-name amzn-s3-demo-bucket ^
 9.     --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^
10.     --s3-prefix bucket_prefix ^
11.     --source-engine mysql ^
12.     --source-engine-version 8.0.32 ^
13.     --max-allocated-storage 1000
```

### API do RDS
<a name="MySQL.Procedural.Importing.API"></a>

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](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html).

## Limitações e considerações para importar arquivos de backup do Amazon S3 para o Amazon RDS
<a name="MySQL.Procedural.Importing.Limitations"></a>

As seguintes limitações e considerações se aplicam à importação de arquivos de backup do Amazon S3 para uma instância de banco de dados do RDS para MySQL: 
+ Só é possível migrar os dados para uma nova instância de banco de dados, não para uma instância existente.
+ Você deve usar o Percona XtraBackup para fazer backup dos dados no Amazon S3. Para obter mais informações, consulte [Criar o backup de banco de dados](#MySQL.Procedural.Importing.Backup).
+ O bucket do Amazon S3 e a instância de banco de dados do RDS para MySQL devem estar na mesma Região da AWS.
+ Não é possível restaurar nas seguintes origens:
  + Uma exportação de um snapshot de instância de banco de dados para o Amazon S3. Também não é possível migrar dados de uma exportação de snapshot de instância de banco de dados para o bucket do Amazon S3.
  + Um banco de dados de origem criptografado. Entretanto, você pode criptografar os dados que estão sendo migrados. Também é possível deixar os dados não criptografados durante o processo de migração.
  + Um banco de dados MySQL 5.5 ou 5.6.
+ O RDS para MySQL não aceita o Percona Server para MySQL como banco de dados de origem porque ele pode conter tabelas `compression_dictionary*` no esquema `mysql schema`.
+ O RDS para MySQL não permite a reversão de migrações para versões principais ou secundárias. Por exemplo, não é possível migrar do MySQL versão 8.0 para o RDS para MySQL 5.7 nem do MySQL versão 8.0.32 para o RDS para MySQL versão 8.0.26.
+ O Amazon RDS não permite fazer importações na classe de instância de banco de dados db.t2.micro por meio do Amazon S3. Contudo, você poderá restaurar para outra classe de instância de banco de dados e, posteriormente, alterar a instância de banco de dados. Para mais informações sobre as classes da instância, consulte [Especificações de hardware para classes de instância de banco de dados](Concepts.DBInstanceClass.Summary.md). 
+ 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.
+ 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.
+ Para fornecer serviços de gerenciamento para cada instância de banco de dados, o Amazon RDS cria o usuário `rdsadmin` ao criar a instância de banco de dados. Como `rdsamin` é um usuário reservado no Amazon RDS, as seguintes limitações se aplicam:
  + O Amazon RDS não importa funções, procedimentos, visualizações, eventos e acionadores com o definidor `'rdsadmin'@'localhost'`. Para obter mais informações, consulte [Objetos armazenados com “rdsadmin'@'localhost” como definidor](#MySQL.Procedural.Importing.StoredObjects) e [Privilégios da conta de usuário mestre](UsingWithRDS.MasterAccounts.md). 
  + Ao criar a instância de banco de dados, o Amazon RDS cria um usuário principal com os privilégios máximos permitidos. Na restauração por meio de backup, o Amazon RDS remove automaticamente qualquer privilégio não permitido atribuído aos usuários que estão sendo importados.

    Para identificar usuários que possam ser afetados por isso, consulte [Contas de usuário com privilégios não compatíveis](#MySQL.Migrating.ExtMySQL.Prechecks.Users). Para ter mais informações sobre privilégios permitidos no RDS para MySQL, consulte [Modelo de privilégios baseados em perfis para o RDS para MySQL](Appendix.MySQL.CommonDBATasks.privilege-model.md).
+ O Amazon RDS não migra tabelas criadas pelo usuário no esquema `mysql`.
+ Você deve configurar o parâmetro `innodb_data_file_path` com apenas um arquivo de dados que usa o nome de arquivo de dados padrão `ibdata1:12M:autoextend`. Você pode migrar bancos de dados com dois arquivos de dados ou com um arquivo de dados com um nome diferente usando esse método.

  Os seguintes exemplos são nomes de arquivo que o Amazon RDS não permite: 
  + `innodb_data_file_path=ibdata1:50M`
  + `ibdata2:50M:autoextend`
  + `innodb_data_file_path=ibdata01:50M:autoextend`
+ 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 tamanho máximo aceito para backups não compactados usando esse método é 64 TiB. Para backups compactados, esse limite é menor para levar em conta os requisitos de espaço sem compactação. Nesses casos, o tamanho máximo de backup aceito é `64 TiB - compressed backup size`. 

  Para ter informações sobre o tamanho máximo do banco de dados que o Amazon RDS para MySQL permite, consulte [Armazenamento SSD de uso geral](CHAP_Storage.md#Concepts.Storage.GeneralSSD) e [Armazenamento SSD de IOPS provisionadas](CHAP_Storage.md#USER_PIOPS). 
+ O Amazon RDS não permite importações do MySQL e de outros componentes e plug-ins externos.
+ Ele não restaura tudo do seu banco de dados. Recomendamos salvar o esquema do banco de dados e os valores dos itens do banco de dados MySQL de origem relacionados abaixo e adicioná-los à instância de banco de dados restaurada do RDS para MySQL depois que ela for criada:
  + Contas de usuário
  + Funções
  + Procedimentos armazenados
  + Informações de fuso horário. As informações de fuso horário são carregadas do sistema operacional local da instância de banco de dados do RDS para MySQL. Para obter mais informações, consulte [Fuso horário local para instâncias de banco de dados MySQL](MySQL.Concepts.LocalTimeZone.md).

### Objetos armazenados com “rdsadmin'@'localhost” como definidor
<a name="MySQL.Procedural.Importing.StoredObjects"></a>

O Amazon RDS não importa funções, procedimentos, visualizações, eventos e acionadores com o `'rdsadmin'@'localhost'` como definidor.

Você pode usar o script SQL a seguir, no banco de dados MySQL de origem, a fim de listar os objetos armazenados que têm o definidor incompatível.

```
-- This SQL query lists routines with `rdsadmin`@`localhost` as the definer.

SELECT
    ROUTINE_SCHEMA,
    ROUTINE_NAME
FROM
    information_schema.routines
WHERE
    definer = 'rdsadmin@localhost';

-- This SQL query lists triggers with `rdsadmin`@`localhost` as the definer.

SELECT
    TRIGGER_SCHEMA,
    TRIGGER_NAME,
    DEFINER
FROM
    information_schema.triggers
WHERE
    DEFINER = 'rdsadmin@localhost';

-- This SQL query lists events with `rdsadmin`@`localhost` as the definer.

SELECT
    EVENT_SCHEMA,
    EVENT_NAME
FROM
    information_schema.events
WHERE
    DEFINER = 'rdsadmin@localhost';

-- This SQL query lists views with `rdsadmin`@`localhost` as the definer.
SELECT
    TABLE_SCHEMA,
    TABLE_NAME
FROM
    information_schema.views
WHERE
    DEFINER = 'rdsadmin@localhost';
```

### Contas de usuário com privilégios não compatíveis
<a name="MySQL.Migrating.ExtMySQL.Prechecks.Users"></a>

As contas de usuário com privilégios que o RDS para MySQL não permite são importadas sem os privilégios não permitidos. Para ver a lista de privilégios compatíveis, consulte [Modelo de privilégios baseados em perfis para o RDS para MySQL](Appendix.MySQL.CommonDBATasks.privilege-model.md).

É possível executar a consulta SQL a seguir em seu banco de dados de origem para listar as contas de usuário com privilégios incompatíveis.

```
SELECT
    user,
    host
FROM
    mysql.user
WHERE
    Shutdown_priv = 'y'
    OR File_priv = 'y'
    OR Super_priv = 'y'
    OR Create_tablespace_priv = 'y';
```

# Importar dados de um banco de dados externo do MySQL para uma instância de banco de dados do Amazon RDS para MySQL.
<a name="mysql-importing-data-external-database"></a>

É possível importar dados de um banco de dados MySQL existente para uma instância de banco de dados do RDS para MySQL. Para isso, copie o banco de dados com [mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) e conecte-o diretamente à instância de banco de dados do RDS para MySQL. O utilitário de linha de comandos `mysqldump` é comumente usado para fazer backups e transferir dados de um servidor MySQL para outro. Ele está incluído no software-cliente do MySQL.

**nota**  
Se você estiver importando ou exportando grandes volumes de dados com uma instância de banco de dados do MySQL, será mais confiável e mais rápido mover dados para dentro e para fora do Amazon RDS usando arquivos de backup `xtrabackup` e o Amazon S3. Para obter mais informações, consulte [Restaurar um backup em uma instância de banco de dados do Amazon RDS para MySQL](MySQL.Procedural.Importing.md). 

Um comando `mysqldump` típico para mover dados de um banco de dados externo para uma instância de banco de dados do Amazon RDS é semelhante ao exemplo a seguir. Substitua os valores por suas próprias informações.

```
mysqldump -u local_user \
    --databases database_name \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mysql -u RDS_user \
        --port=port_number \
        --host=host_name \
        -pRDS_password
```

**Importante**  
Não deixe um espaço entre a opção `-p` e a senha inserida.  
Faz parte das práticas recomendadas de segurança especificar credenciais diferentes dos prompts mostrados neste exemplo.

Analise as seguintes recomendações e considerações:
+ Exclua os seguintes esquemas do arquivo de despejo: 
  + `sys`
  + `performance_schema`
  + `information_schema`

  O utilitário `mysqldump` exclui esses esquemas por padrão.
+ Para migrar usuários e privilégios, considere o uso de uma ferramenta que gera a linguagem de controle de dados (DCL) para recriá-los, como o utilitário [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html).
+ Para realizar a importação, verifique se o usuário que está fazendo isso tem acesso à instância de banco de dados. Para obter mais informações, consulte [Controlar acesso com grupos de segurança](Overview.RDSSecurityGroups.md).

Os parâmetros utilizados são os seguintes:
+ `-u local_user` – use para especificar um nome do usuário. Ao usar esse parâmetro pela primeira vez, especifique o nome de uma conta de usuário no banco de dados local MySQL que você identifica com o parâmetro `--databases`.
+ `--databases database_name`: use para especificar o nome do banco de dados na instância do MySQL local que você deseja importar para o Amazon RDS.
+ `--single-transaction` – use para garantir que todos os dados carregados do banco de dados local sejam consistentes com um único ponto no tempo. Se houver outros processos alterando os dados enquanto eles são lidos por `mysqldump`, usar esse parâmetro ajudará a manter a integridade dos dados. 
+ `--compress` – use para reduzir o consumo de largura de banda da rede, compactando os dados do banco de dados local antes de os enviar para o Amazon RDS.
+ `--order-by-primary` – use para reduzir o tempo de carregamento, ordenando os dados de cada tabela de acordo com a chave primária.
+ `--routines`: use se houver determinadas rotinas, como funções ou procedimentos armazenados, no banco de dados que você está copiando. Defina o parâmetro como `0`, o que exclui as rotinas durante o processo de importação. Depois, recrie manualmente as rotinas no banco de dados do Amazon RDS.
+ `--triggers`: use se houver gatilhos no banco de dados que você está copiando. Defina o parâmetro como `0`, o que exclui os gatilhos durante o processo de importação. Depois, recrie manualmente os gatilhos no banco de dados do Amazon RDS.
+ `--events`: use se houver eventos no banco de dados que você está copiando. Defina o parâmetro como `0`, o que exclui os eventos durante o processo de importação. Em seguida, recrie manualmente os eventos no banco de dados do Amazon RDS. 
+ `-plocal_password`: use para especificar uma senha. Ao usar esse parâmetro pela primeira vez, especifique a senha da conta de usuário que você identifica com o primeiro parâmetro `-u`.
+ `-u RDS_user` – use para especificar um nome do usuário. Ao usar esse parâmetro pela segunda vez, especifique o nome de uma conta de usuário no banco de dados padrão para a instância de banco de dados do MySQL que você identifica com o parâmetro `--host`.
+ `--port port_number`: use para especificar a porta da sua instância de banco de dados MySQL. Por padrão, essa porta é 3306, a menos que você tenha alterado o valor ao criar a instância de banco de dados.
+ `--host host_name` – use para especificar o nome do Sistema de Nome de Domínio (DNS) do endpoint da instância de banco de dados Amazon RDS, por exemplo, `myinstance.123456789012.us-east-1.rds.amazonaws.com`. Você pode encontrar o valor do endpoint nos detalhes da instância do banco de dados no console do Amazon RDS.
+ `-pRDS_password` – use para especificar uma senha. Na segunda utilização desse parâmetro, você especifica a senha da conta de usuário identificada pelo segundo parâmetro `-u`.

Certifique-se de criar procedimentos armazenados, acionadores, funções ou eventos manualmente no seu banco de dados Amazon RDS. Se algum desses objetos estiver no banco de dados que você está copiando, exclua-os quando executar `mysqldump`. Para fazer isso, inclua estes parâmetros em seu comando `mysqldump`: 
+ `--routines=0`
+ `--triggers=0`
+ `--events=0`

**Exemplo**

O exemplo a seguir copia o banco de dados de exemplo `world` no host local para uma instância de banco de dados do RDS para MySQL. Substitua os valores por suas próprias informações.

Para Linux, macOS ou Unix:

```
sudo mysqldump -u local_user \
    --databases world \
    --single-transaction \
    --compress \
    --order-by-primary  \
    --routines=0 \
    --triggers=0 \
    --events=0 \
    -plocal_password | mysql -u rds_user \
        --port=3306 \
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com \
        -pRDS_password
```

Para Windows:

Execute o comando a seguir em um prompt de comando que foi aberto clicando com o botão direito do mouse em **Prompt de comando** no menu de programas do Windows e escolhendo **Executar como administrador**. Substitua os valores por suas próprias informações.

```
mysqldump -u local_user ^
    --databases world ^
    --single-transaction ^
    --compress ^
    --order-by-primary  ^
    --routines=0 ^
    --triggers=0 ^
    --events=0 ^
    -plocal_password | mysql -u RDS_user ^
        --port=3306 ^
        --host=my_instance.123456789012.us-east-1.rds.amazonaws.com ^
        -pRDS_password
```

**nota**  
Faz parte das práticas recomendadas de segurança especificar credenciais diferentes dos prompts mostrados no exemplo.

# Importar dados para um banco de dados do Amazon RDS para MySQL com tempo de inatividade reduzido
<a name="mysql-importing-data-reduced-downtime"></a>

Em alguns casos, pode ser preciso importar dados de um banco de dados MySQL externo compatível com uma aplicação dinâmica para uma instância de banco de dados do RDS para MySQL ou um cluster de banco de dados multi-AZ do RDS para MySQL. Use o procedimento a seguir para minimizar o impacto sobre a disponibilidade das aplicações. Este procedimento também pode ser útil se você está trabalhando com um banco de dados muito grande. Usando esse procedimento, você pode reduzir o custo da importação ao diminuir a quantidade de dados transmitidos pela rede para a AWS. 

Neste procedimento, você transfere uma cópia dos dados do banco de dados para uma instância do Amazon EC2 e importa os dados em um novo banco de dados do Amazon RDS. Depois, use a replicação para atualizar o banco de dados do Amazon RDS em relação à instância externa dinâmica, antes de redirecionar sua aplicação ao banco de dados do Amazon RDS. Configure a replicação com base nas coordenadas do log binário.

**nota**  
Se você quiser importar dados para uma instância de banco de dados RDS para MySQL e o seu ambiente for compatível, recomendamos mover dados para dentro e para fora do Amazon RDS usando arquivos de backup e o Amazon S3. Para obter mais informações, consulte [Restaurar um backup em uma instância de banco de dados do Amazon RDS para MySQL](MySQL.Procedural.Importing.md). 

O diagrama a seguir mostra como importar um banco de dados MySQL externo para um banco de dados MySQL no Amazon RDS.

![\[Fluxo de trabalho que mostra como importar um banco de dados MySQL externo para um banco de dados MySQL no Amazon RDS.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_1.png)


## Tarefa 1: criar uma cópia do banco de dados existente
<a name="mysql-importing-data-reduced-downtime-copy-database"></a>

A primeira etapa no processo de migração de um grande volume de dados para um banco de dados do RDS para MySQL com o mínimo de tempo de inatividade é criar uma cópia dos dados de origem. 

O diagrama a seguir mostra como criar um backup do banco de dados MySQL.

![\[Fluxo de trabalho que mostra como criar um backup do banco de dados MySQL.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_2.png)


Você pode usar o utilitário `mysqldump` para criar um backup de banco de dados no formato SQL ou de texto delimitado. Recomendamos que você faça uma execução de teste com cada formato em um ambiente que não seja de produção para ver qual método minimiza o tempo de execução de `mysqldump`.

Recomendamos também que você pondere a performance de `mysqldump` em relação ao benefício oferecido usando o formato de texto delimitado para o carregamento. Um backup usando o formato de texto delimitado cria um arquivo de texto separado por tabulação para cada tabela que está sendo despejada. Você pode carregar esses arquivos em paralelo usando o comando `LOAD DATA LOCAL INFILE` para reduzir a quantidade de tempo necessária para importar seu banco de dados. Para acessar mais informações, consulte [Etapa 5: Carregar os dados](mysql-importing-data-any-source.md#mysql-importing-data-any-source-load-data) no procedimento Importar dados de qualquer origem.

Antes de iniciar a operação de backup, defina as opções de replicação no banco de dados MySQL que você está copiando para o Amazon RDS. As opções de replicação incluem ativar o registro em log binário e definir um ID de servidor exclusivo. Configurar essas opções faz com que seu servidor comece a registrar em log transações de banco de dados e o prepara para ser um uma instância de replicação de origem mais adiante nesse processo.

Analise as seguintes recomendações e considerações:
+ Use a opção `--single-transaction` com `mysqldump` porque ela despeja um estado consistente do banco de dados. Para garantir um arquivo de despejo válido, não execute instruções de linguagem de definição de dados (DDL) enquanto `mysqldump` estiver em execução. É possível programar uma janela de manutenção para essas operações.
+ Exclua os seguintes esquemas do arquivo de despejo: 
  + `sys`
  + `performance_schema`
  + `information_schema`

  O utilitário `mysqldump` exclui esses esquemas por padrão.
+ Para migrar usuários e privilégios, considere o uso de uma ferramenta que gera a linguagem de controle de dados (DCL) para recriá-los, como o utilitário [pt-show-grants](https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html).

### Como definir opções de replicação
<a name="mysql-importing-data-reduced-downtime-set-replication-options"></a>

1. Edite o arquivo `my.cnf`. Esse arquivo geralmente está localizado em `/etc`.

   ```
   sudo vi /etc/my.cnf
   ```

   Adicione as opções `log_bin` e `server_id` à seção `[mysqld]`. A opção `log_bin` fornece um identificador de nome de arquivo para arquivos de log binário. A opção `server_id` fornece um identificador exclusivo para o servidor em relações entre origem e réplica.

   O seguinte exemplo mostra a seção `[mysqld]` atualizada de um arquivo `my.cnf`:

   ```
   [mysqld]
   log-bin=mysql-bin
   server-id=1
   ```

   Para ter mais informações, consulte [Setting the Replication Source Configuration](https://dev.mysql.com/doc/refman/8.4/en/replication-howto-masterbaseconfig.html) na documentação do MySQL.

1. Para replicação com um cluster de banco de dados multi-AZ, defina os parâmetros `ENFORCE_GTID_CONSISTENCY` e `GTID_MODE` como `ON`.

   ```
   mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
   ```

   ```
   mysql> SET @@GLOBAL.GTID_MODE = ON;
   ```

   Essas configurações não são necessárias para a replicação com uma instância de banco de dados.

1. Reinicie o serviço `mysql`.

   ```
   sudo service mysqld restart
   ```

### Como criar uma cópia de backup do banco de dados existente
<a name="mysql-importing-data-reduced-downtime-create-backup"></a>

1. Crie um backup dos seus dados usando o utilitário `mysqldump`, especificando o formato SQL ou texto delimitado.

   Para o MySQL 8.0.25 e versões anteriores, especifique `--master-data=2` para criar um arquivo de backup que possa ser usado para iniciar a replicação entre servidores. Para o MySQL 8.0.26 e versões posteriores, especifique `--source-data=2` para criar um arquivo de backup que possa ser usado para iniciar a replicação entre servidores. Para ter mais informações, consulte [mysqldump — A Database Backup Program](https://dev.mysql.com/doc/refman/8.4/en/mysqldump.html) na documentação do MySQL.

   Para melhorar a performance e garantir a integridade dos dados, use as opções `--order-by-primary` e `--single-transaction` para `mysqldump`.

   Para evitar a inclusão do banco de dados do sistema MySQL no backup, não use a opção `--all-databases` com `mysqldump`. Para ter mais informações, consulte [Creating a Data Snapshot Using mysqldump](https://dev.mysql.com/doc/mysql-replication-excerpt/8.0/en/replication-howto-mysqldump.html) na documentação do MySQL.

   Use `chmod`, se necessário, para garantir que o diretório no qual o arquivo de backup está sendo criado seja gravável.
**Importante**  
No Windows, execute a janela de comando como um administrador.
   + Para produzir a saída SQL, use o seguinte comando:

     Para Linux, macOS ou Unix:

     ```
     sudo mysqldump \
         --databases database_name \
         --master-data=2  \
         --single-transaction \
         --order-by-primary \
         -r backup.sql \
         -u local_user \
         -ppassword
     ```
**nota**  
Faz parte das práticas recomendadas de segurança especificar credenciais diferentes dos prompts mostrados no exemplo.

     Para Windows:

     ```
     mysqldump ^
         --databases database_name ^
         --master-data=2  ^
         --single-transaction ^
         --order-by-primary ^
         -r backup.sql ^
         -u local_user ^
         -ppassword
     ```
**nota**  
Faz parte das práticas recomendadas de segurança especificar credenciais diferentes dos prompts mostrados no exemplo.
   + Para produzir uma saída de texto delimitado, use o seguinte comando:

     Para Linux, macOS ou Unix:

     ```
     sudo mysqldump \
         --tab=target_directory \
         --fields-terminated-by ',' \
         --fields-enclosed-by '"' \
         --lines-terminated-by 0x0d0a \
         database_name \
         --master-data=2 \
         --single-transaction \
         --order-by-primary \
         -ppassword
     ```

     Para Windows:

     ```
     mysqldump ^
         --tab=target_directory ^
         --fields-terminated-by "," ^
         --fields-enclosed-by """ ^
         --lines-terminated-by 0x0d0a ^
         database_name ^
         --master-data=2 ^
         --single-transaction ^
         --order-by-primary ^
         -ppassword
     ```
**nota**  
Faz parte das práticas recomendadas de segurança especificar credenciais diferentes dos prompts mostrados no exemplo.  
Certifique-se de criar procedimentos armazenados, acionadores, funções ou eventos manualmente no seu banco de dados Amazon RDS. Se algum desses objetos estiver no banco de dados que você está copiando, exclua-os quando executar `mysqldump`. Para fazer isso, inclua estes argumentos com o comando`mysqldump`:   
`--routines=0`
`--triggers=0`
`--events=0`

     Para o MySQL 8.0.22 e versões anteriores, quando você executa `mysqldump` e especifica o formato de texto delimitado, um comentário `CHANGE MASTER TO` é exibido. Esse comentário contém o nome e a posição do arquivo de log mestre. Para o MySQL 8.0.23 e versões posteriores, quando você executa `mysqldump` usando o formato de texto delimitado, um comentário `CHANGE REPLICATION SOURCE TO` é exibido. Esse comentário contém o nome e a posição do arquivo de log de origem. Se a instância externa for o MySQL 8.0.23 e versões posteriores, observe os valores para `MASTER_LOG_FILE` e `MASTER_LOG_POS`. Esses valores são necessários ao configurar a replicação.

     A seguinte saída é exibida para o MySQL 8.0.22 e versões anteriores:

     ```
     -- Position to start replication or point-in-time recovery from
     --
     -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;
     ```

     A seguinte saída é retornada para o MySQL 8.0.23 e versões posteriores:

     ```
     -- Position to start replication or point-in-time recovery from
     --
     -- CHANGE SOURCE TO SOURCE_LOG_FILE='mysql-bin-changelog.000031', SOURCE_LOG_POS=107;
     ```

     Para o MySQL 8.0.22 e versões anteriores, se você estiver usando o formato SQL, poderá obter o nome e a posição do arquivo de log mestre no comentário `CHANGE MASTER TO` no arquivo de backup. Para o MySQL 8.0.23 e versões posteriores, se você estiver usando o formato SQL, poderá obter o nome e a posição do arquivo de log de origem no comentário `CHANGE REPLICATION SOURCE TO` no arquivo de backup. 

1. Compacte os dados copiados para reduzir a quantidade de recursos de rede necessários para copiar seus dados para o banco de dados do Amazon RDS. Anote o tamanho do arquivo de backup. Você precisará dessas informações ao determinar o tamanho de uma instância do Amazon EC2 a ser criada. Quando terminar, compacte o arquivo de backup usando o GZIP ou seu utilitário de compactação preferido. 
   + Para compactar a saída SQL, use o seguinte comando:

     ```
     gzip backup.sql
     ```
   + Para compactar a saída de texto delimitado, use o seguinte comando:

     ```
     tar -zcvf backup.tar.gz target_directory
     ```

## Tarefa 2: criar uma instância do Amazon EC2 e copiar o banco de dados compactado
<a name="mysql-importing-data-reduced-downtime-create-ec2-copy-database"></a>

Copiar seu arquivo de backup de banco de dados compactado para uma instância do Amazon EC2 requer menos recursos de rede do que fazer uma cópia direta de dados não compactados entre instâncias de bancos de dados. Depois que seus dados estiverem no Amazon EC2, você poderá copiá-los de lá diretamente para o banco de dados MySQL. Para reduzir o custo dos recursos de rede, a instância do Amazon EC2 deve estar na mesma Região da AWS que a instância de banco de dados do Amazon RDS. Ter a instância do Amazon EC2 na mesma Região da AWS que o banco de dados do Amazon RDS também reduz a latência da rede durante a importação.

O diagrama a seguir mostra como copiar o backup do banco de dados para uma instância do Amazon EC2.

![\[Fluxo de trabalho que mostra como copiar o backup do banco de dados para uma instância do EC2.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_3.png)


### Como criar uma instância do Amazon EC2 e copiar seus dados
<a name="mysql-importing-data-reduced-downtime-create-ec2"></a>

1. Na Região da AWS em que você planeja criar o banco de dados do Amazon RDS, crie uma nuvem privada virtual (VPC), um grupo de segurança de VPC e uma sub-rede de VPC. Certifique-se de que as regras de entrada para o grupo de segurança da VPC permitam os endereços IP necessários para a aplicação se conectar ao AWS. Você pode especificar uma variedade de endereços IP (por exemplo, `203.0.113.0/24`) ou outro grupo de segurança de VPC. É possível usar o [console da Amazon VPC](https://console.aws.amazon.com/vpc) para criar e gerenciar VPCs, sub-redes e grupos de segurança. Para ter mais informações, consulte [Conceitos básicos da Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html#getting-started) no *Manual do usuário da Amazon Virtual Private Cloud*.

1. Abra o [console do Amazon EC2](https://console.aws.amazon.com/ec2) e escolha a Região da AWS para conter tanto a instância do Amazon EC2 como o banco de dados do Amazon RDS. Inicie uma instância do Amazon EC2 usando a VPC, a sub-rede e o grupo de segurança que você criou na Etapa 1. Certifique-se de selecionar um tipo de instância com armazenamento suficiente para o arquivo de backup de banco de dados quando ele não estiver compactado. Para ter detalhes sobre instâncias do Amazon EC2, consulte [Comece a usar o Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html) no *Guia do usuário do Amazon Elastic Compute Cloud*.

1. Para se conectar ao banco de dados do Amazon RDS pela sua instância do Amazon EC2, edite seu grupo de segurança da VPC. Adicione uma regra de entrada especificando o endereço IP privado da sua instância do EC2. Você pode encontrar o endereço IP privado na guia **Details (Detalhes)** do painel **Instance (Instância)** na janela do console do EC2. Para editar o grupo de segurança de VPC e adicionar uma regra de entrada, escolha **Security Groups (Grupos de segurança)** no painel de navegação do console do EC2, escolha o grupo de segurança e, em seguida, adicione uma regra de entrada para MySQL ouAurora especificando o endereço IP privado da sua instância do EC2. Para saber como adicionar uma regra de entrada a um grupo de segurança de VPC, consulte [Regras de grupos de segurança](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html) no *Manual do usuário da Amazon Virtual Private Cloud*.

1. Copie o arquivo de backup de banco de dados compactado do seu sistema local para a sua instância do Amazon EC2. Use `chmod`, se necessário, para garantir que você tenha permissão de gravação para o diretório de destino da instância do Amazon EC2. Você pode usar `scp` ou um cliente Secure Shell (SSH) para copiar o arquivo. O seguinte comando é um exemplo de comando `scp`:

   ```
   scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
   ```
**Importante**  
Ao copiar dados sensíveis, use um protocolo de transferência de rede segura.

1. Conecte-se à sua instância do Amazon EC2 e instale as atualizações e as ferramentas do cliente MySQL mais recentes usando os seguintes comandos:

   ```
   sudo yum update -y
   sudo yum install mysql -y
   ```

   Para ter mais informações, consulte [Conectar-se à instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux) no *Guia do usuário do Amazon Elastic Compute Cloud para Linux*.
**Importante**  
Este exemplo instala o cliente MySQL em uma distribuição de imagem de máquina da Amazon (AMI) do Amazon Linux. Este exemplo não instala o cliente MySQL em uma distribuição diferente, como Ubuntu ou Red Hat Enterprise Linux. Para ter informações sobre como instalar o MySQL, consulte [Installing MySQL](https://dev.mysql.com/doc/refman/8.4/en/installing.html) na documentação do MySQL.

1. Enquanto estiver conectado à sua instância do Amazon EC2, descompacte o arquivo de backup do banco de dados. Os comandos a seguir são exemplos.
   + Para descompactar a saída SQL, use o seguinte comando:

     ```
     gzip backup.sql.gz -d
     ```
   + Para descomprimir a saída de texto delimitada, use o seguinte comando:

     ```
     tar xzvf backup.tar.gz
     ```

## Tarefa 3: criar um banco de dados MySQL e importar os dados da instância do Amazon EC2
<a name="mysql-importing-data-reduced-downtime-create-database-import-data"></a>

Ao criar uma instância de banco de dados ou um cluster de banco de dados multi-AZ do RDS para MySQL na mesma Região da AWS que a instância do Amazon EC2, você pode importar o arquivo de backup do banco de dados do Amazon EC2 mais rapidamente do que pela internet.

O diagrama a seguir mostra como importar o backup de uma instância do Amazon EC2 para um banco de dados MySQL.

![\[Fluxo de trabalho que mostra como importar o backup da instância do EC2 para o banco de dados MySQL.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_4.png)


### Como criar um banco de dados MySQL e importar seus dados
<a name="mysql-importing-data-reduced-downtime-create-database"></a>

1. Determine qual classe de instância de banco de dados e que quantidade de espaço de armazenamento são necessários para atender à workload esperada para esse banco de dados do Amazon RDS. Como parte desse processo, decida sobre o espaço suficiente e a capacidade de processamento para os seus procedimentos de carregamento de dados. Além disso, decida o que é necessário para lidar com a workload de produção. Você pode estimar isso com base no tamanho e nos recursos do banco de dados MySQL de origem. Para obter mais informações, consulte [Classes de instâncias de banco de dados do ](Concepts.DBInstanceClass.md).

1. Crie uma instância de banco de dados ou um cluster de banco de dados multi-AZ na Região da AWS que contém a instância do Amazon EC2.

   Para criar um cluster de banco de dados multi-AZ do RDS para MySQL, siga as instruções em [Criar um cluster de banco de dados multi-AZ para o Amazon RDS](create-multi-az-db-cluster.md).

   Para criar uma instância de banco de dados do RDS para MySQL, siga as instruções em [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md) e use as seguintes diretrizes:
   + Especifique uma versão do mecanismo de banco de dados que seja compatível com a sua instância de banco de dados de origem.
   + Especifique a mesma nuvem privada virtual (VPC) e o grupo de segurança da VPC para sua instância do Amazon EC2. Essa abordagem garante que sua instância do Amazon EC2 e sua instância do Amazon RDS sejam visíveis uma para a outra na rede. Verifique se sua instância de banco de dados pode ser acessada publicamente. Para configurar a replicação com o banco de dados de origem, conforme descrito em uma seção mais adiante, a instância de banco de dados deve ser acessível ao público.
   + Não configure várias zonas de disponibilidade, retenção de backup nem réplicas de leitura até depois de ter importado o backup do banco de dados. Quando a importação estiver concluída, você poderá configurar o recurso multi-AZ e a retenção de backup para a instância de produção.

1. Reveja as opções de configuração padrão para o banco de dados do Amazon RDS. Se o grupo de parâmetros padrão para o banco de dados não tiver as opções de configuração desejadas, encontre outro que as inclua ou crie um grupo de parâmetros. Para ter mais informações sobre como criar um grupo de parâmetros, consulte [Grupos de parâmetros para Amazon RDS](USER_WorkingWithParamGroups.md). 

1. Conecte-se ao novo banco de dados do Amazon RDS como usuário principal. Crie os usuários necessários para dar suporte aos administradores, aplicações e serviços que precisam acessar a instância de banco de dados. O nome do host para o banco de dados do Amazon RDS é o valor do **endpoint** dessa instância, de banco de dados sem o número da porta; por exemplo, `mysampledb.123456789012.us-west-2.rds.amazonaws.com`. Você pode encontrar o valor do endpoint nos detalhes do banco de dados no console do Amazon RDS.

1. Conecte-se à sua instância Amazon EC2. Para ter mais informações, consulte [Conectar-se à instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-connect-to-instance-linux) no *Guia do usuário do Amazon Elastic Compute Cloud para Linux*. 

1. Conecte-se ao seu banco de dados do Amazon RDS como um host remoto pela sua instância do Amazon EC2 usando o comando `mysql`. O seguinte comando é um exemplo:

   ```
   mysql -h host_name -P 3306 -u db_master_user -p
   ```

   O *host\$1name* é o endpoint do banco de dados do Amazon RDS.

1. No prompt `mysql`, execute o comando `source` e passe a ele o nome do arquivo de despejo do banco de dados. Esse comando carrega os dados na instância de banco de dados do Amazon RDS.
   + Para o formato SQL, use o seguinte comando:

     ```
     mysql> source backup.sql;
     ```
   + Para o formato de texto delimitado, primeiro crie o banco de dados, se ele não for o banco de dados padrão que você criou ao configurar o banco de dados do Amazon RDS.

     ```
     mysql> create database database_name;
     mysql> use database_name;
     ```

     Em seguida, crie as tabelas.

     ```
     mysql> source table1.sql
     mysql> source table2.sql
     etc...
     ```

     Em seguida, importe os dados.

     ```
     mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a';
     mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a';
     etc...
     ```

     Para melhorar a performance, você pode realizar essas operações em paralelo de várias conexões, para que todas as tabelas sejam criadas e carregadas ao mesmo tempo.
**nota**  
Se você usou qualquer opção de formatação de dados com `mysqldump` quando despejou inicialmente a tabela, use as mesmas opções com `LOAD DATA LOCAL INFILE` para assegurar uma interpretação adequada do conteúdo do arquivo de dados.

1. Execute uma consulta `SELECT` simples em uma ou duas das tabelas no banco de dados importado para verificar se a importação foi bem-sucedida.

Se você não precisa mais da instância do Amazon EC2 usada neste procedimento, encerre-a para reduzir o uso de recursos de uso da AWS. Para encerrar uma instância do EC2, consulte [Como encerrar uma instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html#terminating-instances-console) no *Guia do usuário do Amazon Elastic Compute Cloud*.

## Tarefa 4: replicar dados do banco de dados externo para o novo banco de dados do Amazon RDS
<a name="mysql-importing-data-reduced-downtime-replicate-data"></a>

Seu banco de dados de origem provavelmente foi atualizado durante o tempo decorrido entre a cópia e a transferência dos dados para o banco de dados MySQL. Assim, você pode usar a replicação para atualizar o banco de dados copiado com o banco de dados de origem.

![\[Fluxo de trabalho que mostra como replicar dados do banco de dados MySQL externo para o banco de dados no Amazon RDS.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_5.png)


As permissões necessárias para iniciar a replicação em um banco de dados do Amazon RDS são restritas e não estão disponíveis ao seu usuário principal do Amazon RDS. Por esse motivo, use o procedimento armazenado apropriado do Amazon RDS para a versão principal do mecanismo: 
+ [mysql\$1rds\$1set\$1external\$1master (versões principais do RDS para MySQL 8.0 ou anterior)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master) 
+ [mysql.rds\$1set\$1external\$1source (RDS para MySQL versões principais 8.4 e posteriores)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source)
+ [mysql.rds\$1set\$1external\$1master\$1gtid](mysql_rds_set_external_master_gtid.md) para configurar a replicação e [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication) para iniciar a replicação

### Como iniciar a replicação
<a name="mysql-importing-data-reduced-downtime-start-replication"></a>

Na Tarefa 1, [ao definir as opções de replicação](#mysql-importing-data-reduced-downtime-set-replication-options), você ativou o registro em log binário e definiu um ID de servidor exclusivo para o banco de dados de origem. Agora, é possível configurar seu banco de dados Amazon RDS como uma réplica com seu banco de dados dinâmico como a instância de replicação de origem.

1. No console do Amazon RDS, adicione o endereço IP do servidor que hospeda o banco de dados de origem ao grupo de segurança da VPC para o banco de dados do Amazon RDS. Para ter mais informações sobre grupos de segurança da VPC, consulte [Configurar regras de grupo de segurança](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) no *Manual do usuário da Amazon Virtual Private Cloud*. 

   Você também pode precisar configurar a rede local para permitir conexões com o endereço IP do banco de dados do Amazon RDS, para que ele possa se comunicar com a instância de origem. Para localizar o endereço IP do banco de dados do Amazon RDS, use o comando `host`:

   ```
   host host_name
   ```

   O *host\$1name* é o nome DNS do endpoint do banco de dados do Amazon RDS; por exemplo, `myinstance.123456789012.us-east-1.rds.amazonaws.com`. Você pode encontrar o valor do endpoint nos detalhes da instância do banco de dados no console do Amazon RDS.

1. Usando o cliente de sua preferência, conecte-se à instância de origem e crie um usuário a ser usado para a replicação. Esta conta é usada unicamente para replicação e deve estar restrita ao seu domínio para melhorar a segurança. O seguinte comando é um exemplo:

   ```
   CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
   ```
**nota**  
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.

1. Para a instância de origem, conceda os privilégios `REPLICATION CLIENT` e `REPLICATION SLAVE` para seu usuário de replicação. Por exemplo, para conceder os privilégios de `REPLICATION CLIENT` e `REPLICATION SLAVE` em todos os bancos de dados para o usuário '`repl_user`' de seu domínio, emita o seguinte comando:

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
   ```

1. Torne o banco de dados do Amazon RDS a réplica. Conecte-se ao banco de dados Amazon RDS como usuário principal e identifique o banco de dados de origem como a instância de replicação de origem usando o comando o procedimento armazenado apropriado do Amazon RDS. 
   + [mysql\$1rds\$1set\$1external\$1master (versões principais do RDS para MySQL 8.0 ou anterior)](mysql-stored-proc-replicating.md#mysql_rds_set_external_master)
   + [mysql.rds\$1set\$1external\$1source (RDS para MySQL versões principais 8.4 e posteriores)](mysql-stored-proc-replicating.md#mysql_rds_set_external_source)

   Se você tiver um arquivo de backup no formato SQL, use o nome do arquivo de log mestre e a posição do log mestre que você determinou na Etapa 4. Se você usou o formato de texto delimitado, use o nome e a posição que você determinou ao criar os arquivos de backup. Os seguintes comandos são exemplos:

   **MySQL 8.4 e versões posteriores**

   ```
   CALL mysql.rds_set_external_source ('myserver.mydomain.com', 3306,
       'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```

   **MySQL 8.0 e versões anteriores**

   ```
   CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306,
       'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
   ```
**nota**  
Especifique credenciais diferentes dos prompts mostrados aqui como prática recomendada de segurança.

1. No banco de dados Amazon RDS, para iniciar a replicação, execute o seguinte comando que usa o procedimento armazenado [mysql.rds\$1start\$1replication](mysql-stored-proc-replicating.md#mysql_rds_start_replication):

   ```
   CALL mysql.rds_start_replication;
   ```

1. No banco de dados do Amazon RDS, para determinar quando a réplica está atualizada com a instância de replicação de origem, execute o comando [SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html). Os resultados do comando `SHOW REPLICA STATUS` incluem o campo `Seconds_Behind_Master`. Quando o campo `Seconds_Behind_Master` retorna 0, a réplica é atualizada com a instância de replicação de origem.
**nota**  
As versões anteriores do MySQL usavam `SHOW SLAVE STATUS` em vez de `SHOW REPLICA STATUS`. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use `SHOW SLAVE STATUS`. 

1. Depois que o banco de dados do Amazon RDS estiver atualizado, ative backups automatizados para poder restaurar esse banco de dados, se necessário. Você pode ativar ou modificar backups automatizados para um banco de dados do Amazon RDS usando o [console do Amazon RDS](https://console.aws.amazon.com/rds/). Para obter mais informações, consulte [Introdução aos backups](USER_WorkingWithAutomatedBackups.md).

## Tarefa 5: redirecionar a aplicação ativa para a instância do Amazon RDS
<a name="mysql-importing-data-reduced-downtime-redirect-app"></a>

Depois que o banco de dados MySQL estiver atualizado com a instância de replicação de origem, será possível atualizar a aplicação dinâmica para usar a instância do Amazon RDS. 

![\[Fluxo de trabalho que mostra como interromper a replicação e direcionar a aplicação ativa para o banco de dados no Amazon RDS.\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/MigrateMySQLToRDS_6.png)


### Como redirecionar a aplicação dinâmica para o banco de dados MySQL e interromper a replicação
<a name="mysql-importing-data-reduced-downtime-redirect-app-stop-app"></a>

1. Para adicionar o grupo de segurança de VPC para o banco de dados do Amazon RDS, adicione o endereço IP do servidor que hospeda a aplicação. Para ter mais informações sobre como modificar um grupo de segurança de VPC, consulte [Configurar regras de grupo de segurança](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) no *Manual do usuário da Amazon Virtual Private Cloud*. 

1. Verifique se o campo `Seconds_Behind_Master` nos resultados do comando [SHOW REPLICA STATUS](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html) é 0, o que indica que a réplica está atualizada com a instância de replicação de origem.

   ```
   SHOW REPLICA STATUS;
   ```
**nota**  
As versões anteriores do MySQL usavam `SHOW SLAVE STATUS` em vez de `SHOW REPLICA STATUS`. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use `SHOW SLAVE STATUS`. 

1. Feche todas as conexões com a origem quando suas transações terminarem.

1. Atualize sua aplicação para usar o banco de dados do Amazon RDS. Normalmente, essa atualização envolve a alteração das configurações de conexão para identificar o nome do host e a porta do banco de dados do Amazon RDS, a conta de usuário e a senha para conexão e o banco de dados para uso.

1. Conecte-se à instância de banco de dados.

   No caso de um cluster de banco de dados multi-AZ, conecte-se a uma instância de banco de dados gravadora.

1. Interrompa a replicação da instância do Amazon RDS usando o seguinte comando que usa o procedimento armazenado [mysql.rds\$1stop\$1replication](mysql-stored-proc-replicating.md#mysql_rds_stop_replication):

   ```
   CALL mysql.rds_stop_replication;
   ```

1. Redefina a configuração de replicação de maneira que essa instância não seja mais identificada como uma réplica, usando o procedimento armazenado apropriado do Amazon RDS no banco de dados do Amazon RDS.
   +  [mysql\$1rds\$1reset\$1external\$1master (versões principais do RDS para MySQL 8.0 e anteriores)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_master) 
   + [mysql.rds\$1reset\$1external\$1source (RDS para MySQL versões principais 8.4 e posteriores)](mysql-stored-proc-replicating.md#mysql_rds_reset_external_source)

   **MySQL 8.4 e versões posteriores**

   ```
   CALL mysql.rds_reset_external_source;
   ```

   **MySQL 8.0 e versões anteriores**

   ```
   CALL mysql.rds_reset_external_master;
   ```

1. Ative recursos adicionais do Amazon RDS, como o suporte a multi-AZ e réplicas de leitura. Para obter mais informações, consulte [Configurar e gerenciar uma implantação multi-AZ para o Amazon RDS](Concepts.MultiAZ.md) e [Trabalhar com réplicas de leitura de instância de banco de dados](USER_ReadRepl.md).

# Importar dados de qualquer fonte para uma instância de banco de dados do Amazon RDS para MySQL
<a name="mysql-importing-data-any-source"></a>

Com o Amazon RDS, você pode migrar dados existentes do MySQL de qualquer origem para uma instância de banco de dados do RDS para MySQL. Você pode transferir dados de bancos de dados on-premises, outros provedores de nuvem ou instâncias de banco de dados do RDS para MySQL DB existentes para sua instância de banco de dados do RDS para MySQL de destino. Com essa funcionalidade, você pode consolidar bancos de dados, implementar soluções de recuperação de desastres ou fazer a transição de bancos de dados autogerenciados. São cenários comuns migrar de servidores do MySQL auto-hospedados para instâncias de banco de dados do Amazon RDS totalmente gerenciadas, consolidar vários bancos de dados MySQL em uma única instância de banco de dados ou criar ambientes de teste com dados de produção. As seções a seguir apresentam instruções detalhadas sobre como importar dados do MySQL usando métodos, como `mysqldump`, arquivos de backup ou replicação.

## Etapa 1: Criar arquivos simples contendo os dados a serem carregados
<a name="mysql-importing-data-any-source-create-flat-files"></a>

Use um formato comum, como valores separados por vírgula (CSV), para armazenar os dados a serem carregados. Cada tabela deve ter um arquivo próprio. Não é possível combinar os dados de várias tabelas no mesmo arquivo. Dê a cada arquivo o mesmo nome que a tabela correspondente. A extensão do arquivo pode ser qualquer opção desejada. Por exemplo, se o nome da tabela for `sales`, o nome do arquivo poderá ser `sales.csv` ou `sales.txt`.

Se possível, ordene os dados pela chave primária da tabela que está sendo carregada. Fazer isso melhora drasticamente os tempos de carregamento e minimiza os requisitos de armazenamento em disco. 

A velocidade e a eficiência desse procedimento dependem de manter o tamanho dos arquivos pequenos. Se o tamanho descompactado de qualquer arquivo individual for maior que 1 GiB, divida-o em vários arquivos e carregue cada um separadamente.

Em sistemas semelhantes ao Unix (incluindo o Linux), use o comando `split`. Por exemplo, o seguinte comando divide o arquivo `sales.csv` em vários arquivos com menos de 1 GiB, dividindo apenas em intervalos de linha (-C 1024m). Os nomes dos novos arquivos incluem sufixos numéricos ascendentes. O comando a seguir produz arquivos com nomes, como `sales.part_00` e `sales.part_01`. 

```
split -C 1024m -d sales.csv sales.part_ 
```

Utilitários semelhantes estão disponíveis para outros sistemas operacionais.

Você pode armazenar os arquivos simples em qualquer lugar. No entanto, ao carregar os dados na [Etapa 5](#mysql-importing-data-any-source-load-data), você deve invocar o shell `mysql` do mesmo local em que os arquivos estão ou usar o caminho absoluto para os arquivos ao executar `LOAD DATA LOCAL INFILE`.

## Etapa 2: impedir que quaisquer aplicações acessem a instância de banco de dados de destino
<a name="mysql-importing-data-any-source-stop-apps"></a>

Antes de iniciar um grande carregamento, impeça que qualquer atividade da aplicação acesse a instância de banco de dados de destino para a qual planeja fazer o carregamento. Recomendamos isso especialmente se outras sessões modificarem as tabelas que estão sendo carregadas ou as tabelas às quais elas fazem referência. Isso reduz o risco de violações de restrição durante o carregamento e melhora a performance do carregamento. Também possibilita restaurar a instância de banco de dados até o ponto antes do carregamento, sem perder as alterações feitas pelos processos não envolvidos no carregamento. 

É que isso pode não ser possível ou prático. Se você não conseguir impedir que as aplicações acessem a instância de banco de dados antes do carregamento, tome medidas para garantir a disponibilidade e a integridade dos seus dados. As etapas específicas necessárias variam muito dependendo dos casos específicos de uso e dos requisitos do site. 

## Etapa 3: Criar um snapshot de banco de dados
<a name="mysql-importing-data-any-source-create-snapshot"></a>

Se você planeja carregar dados em uma nova instância de banco de dados que não contém dados, pode ignorar essa etapa. Do contrário, recomendamos criar snapshots de banco de dados da instância de banco de dados de destino do Amazon RDS antes e depois do carregamento dos dados. Os snapshots de banco de dados do Amazon RDS são backups completos da instância de banco de dados que podem ser usados para restaurá-la em um estado conhecido. Quando você inicia um snapshot de banco de dados, as operações de E/S na sua instância de banco de dados são momentaneamente suspensas enquanto é feito o backup do banco de dados. 

Criar um snapshot de banco de dados imediatamente antes do carregamento possibilita a restauração do banco de dados para o estado anterior ao carregamento, se necessário. Um snapshot de banco de dados feito imediatamente após a carga evita que você tenha que carregar os dados novamente caso ocorra um problema. Você também pode usar snapshots de banco de dados após o carregamento para importar dados para novas instâncias de banco de dados. 

O exemplo a seguir executa o comando [create-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-snapshot.html) da AWS CLI para criar um snapshot de banco de dados da instância `AcmeRDS` e fornece ao snapshot do banco de dados o identificador `"preload"`.

Para Linux, macOS ou Unix:

```
aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload
```

Para Windows:

```
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload
```

Você também pode usar a restauração da funcionalidade de snapshot do banco de dados para criar instâncias de banco de dados de teste para execuções simuladas ou para desfazer alterações feitas durante o carregamento. 

Tenha em mente que restaurar um banco de dados de um snapshot de banco de dados cria uma nova instância de banco de dados que, como todas as instâncias de banco de dados, possui um identificador exclusivo e um endpoint. Para restaurar a instância de banco de dados sem alterar o endpoint, primeiro exclua a instância de banco de dados para poder reutilizar o endpoint. 

Por exemplo, para criar uma instância de banco de dados para execuções simuladas ou outros testes, forneça à instância de banco de dados um identificador próprio. Na exemplo, o identificador é `AcmeRDS-2`. O exemplo se conecta à instância de banco de dados usando o endpoint associado ao `AcmeRDS-2`. Para ter mais informações, consulte [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html).

Para Linux, macOS ou Unix:

```
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload
```

Para Windows:

```
aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS-2 ^
    --db-snapshot-identifier preload
```

Para reutilizar o endpoint existente, primeiro exclua a instância de banco de dados e forneça ao banco de dados restaurado o mesmo identificador. Para ter mais informações, consulte [delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html). 

O exemplo a seguir também cria um snapshot de banco de dados final da instância de banco de dados antes de excluí-la. Isso é opcional, porém é recomendado. 

Para Linux, macOS ou Unix:

```
aws rds delete-db-instance \
    --db-instance-identifier AcmeRDS \
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload
```

Para Windows:

```
aws rds delete-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload
```

## Etapa 4 (opcional): desativar os backups automatizados do Amazon RDS
<a name="mysql-importing-data-any-source-turn-off-automated-backups"></a>

**Atenção**  
Não desative os backups automatizados se você precisa realizar uma recuperação para um ponto no tempo.

A desativação de backups automatizados ajuda a otimizar a performance e não é necessária para carregamentos de dados. Ao desativar os backups automatizados, todos os backups existentes são apagados. Consequentemente, após a desativação dos backups automatizados, não é possível realizar uma recuperação para um ponto no tempo. Os snapshots do banco de dados manuais não são afetados com a desativação dos backups automatizados. Todos os snapshots de banco de dados manuais existentes ainda estão disponíveis para restauração.

Desativar os backups automatizados reduz o tempo de carregamento em cerca de 25% e reduz a quantidade de espaço de armazenamento necessária durante o carregamento. Se você planeja carregar dados em uma nova instância de banco de dados que não contém dados, desativar os backups é uma maneira fácil de acelerar o carregamento e evitar o uso do armazenamento adicional necessário para backups. No entanto, em alguns casos, você pode planejar fazer o carregamento em uma instância de banco de dados que já contenha dados. Se for o caso, avalie os benefícios da desativação de backups em relação ao impacto da perda da capacidade de realizar a recuperação em um ponto anterior no tempo. 

As instâncias de bancos de dados têm backups automatizados desativados por padrão (com um período de retenção de um dia). Para desatiar os backups automáticos, defina o período de retenção de backup para zero. Após o carregamento, você pode reativar os backups definindo o período de retenção de backup como um valor diferente de zero. Para ativar ou desativar os backups, o Amazon RDS desliga a instância de banco de dados e a reinicia para ativar ou desativar o registro em log do MySQL. 

Execute o comando AWS CLI da `modify-db-instance` para definir a retenção do backup como zero e aplicar a alteração imediatamente. Definir o período de retenção como zero exige uma reinicialização da instância de banco de dados. Por isso, aguarde até que a reinicialização tenha sido concluída antes de prosseguir. Para obter mais informações, consulte [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html).

Para Linux, macOS ou Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --apply-immediately \
    --backup-retention-period 0
```

Para Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --apply-immediately ^
    --backup-retention-period 0
```

Você pode conferir o status sua instância de banco de dados com o comando [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html). O seguinte exemplo mostra o status da instância de banco de dados `AcmeRDS`:

```
aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"
```

Quando o status da instância de banco de dados for `available`, você poderá prosseguir para a próxima etapa. 

## Etapa 5: Carregar os dados
<a name="mysql-importing-data-any-source-load-data"></a>

Para ler as linhas dos arquivos simples nas tabelas do banco de dados, use a instrução MySQL `LOAD DATA LOCAL INFILE`.

**nota**  
Você deve invocar o shell `mysql` do mesmo local em que seus arquivos simples estão ou usar o caminho absoluto para os arquivos ao executar `LOAD DATA LOCAL INFILE`.

O seguinte exemplo mostra como carregar dados de um arquivo chamado `sales.txt` em uma tabela denominada `Sales` no banco de dados:

```
mysql> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\';
Query OK, 1 row affected (0.01 sec)
Records: 1  Deleted: 0  Skipped: 0  Warnings: 0
```

Para ter mais informações sobre a instrução `LOAD DATA`, consulte [LOAD DATA Statement](https://dev.mysql.com/doc/refman/8.4/en/load-data.html) na documentação do MySQL.

## Etapa 6: reativar os backups automatizados do Amazon RDS
<a name="mysql-importing-data-any-source-turn-on-automated-backups"></a>

Se você desativou os backups automatizados do Amazon RDS na [Etapa 4](#mysql-importing-data-any-source-turn-off-automated-backups), depois que o carregamento for concluído, ative os backups automatizados definindo o período de retenção de backup de volta como o valor anterior ao carregamento. Conforme mencionado na Etapa 4, como o Amazon RDS reinicia a instância de banco de dados, prepare-se para uma breve interrupção. 

O seguinte exemplo executa o comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) da AWS CLI para ativar os backups automatizados da instância de banco de dados `AcmeRDS` e define o período de retenção para um dia:

Para Linux, macOS ou Unix:

```
aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --backup-retention-period 1 \
    --apply-immediately
```

Para Windows:

```
aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --backup-retention-period 1 ^
    --apply-immediately
```