Amazon RDS - MySQL DB Export Import
O Amazon RDS MySQL oferece maneiras fáceis de importar dados para o banco de dados e exportar dados do banco de dados. Depois que formos capazes de nos conectar com sucesso ao banco de dados MySQL, podemos usar as ferramentas CLI para executar os comandos de importação e exportação para obter os dados de outras fontes dentro e fora do banco de dados RDS. Abaixo estão os cenários a serem considerados ao decidir sobre a abordagem para importar os dados para o banco de dados Amazon RDS - MySQL.
Um banco de dados MySQL existente pode estar presente no local ou em outra instância EC2. Diagramaticamente, o que fazemos é mostrado abaixo.
Criação de um backup do banco de dados local
Como primeira etapa, criamos um backup do banco de dados local usando o comando abaixo.
mysqldump -u user -p[user_password] [database_name] > backupfile.sql
Um arquivo com o nome backupfile.sql é criado, o qual contém a estrutura da tabela junto com os dados a serem usados.
Armazenando o arquivo de backup em S3.
Faça upload do arquivo de backup criado acima para um bucket do Amazon S3 pré-decidido na mesma região onde o banco de dados RDS MySQL DB de destino está presente. Você pode seguir este link para saber como fazer upload.
Importar dados do Amazon S3 para o banco de dados RDS- MySQL
Você pode usar o seguinte comando Amazon CLI para importar os dados do S3 para o banco de dados MySQL.
aws rds restore-db-instance-from-s3 \
--allocated-storage 125 \
--db-instance-identifier tddbidentifier \
--db-instance-class db.m4.small \
--engine mysql \
--master-user-name masterawsuser \
--master-user-password masteruserpassword \
--s3-bucket-name tpbucket \
--s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \
--s3-prefix bucketprefix \
--source-engine mysql \
--source-engine-version 5.6.27
Pode haver cenários em que você deseja que os dados de um banco de dados RDS MYSQL existente sejam levados para outro banco de dados RDS MYSQL. Por exemplo, para cerate um banco de dados de recuperação de desastre ou criar um banco de dados somente para relatórios de negócios, etc. Nesse cenário, criamos réplicas de leitura que são uma cópia de seu banco de dados de origem e, em seguida, promovemos essa réplica de leitura para uma nova instância de banco de dados. Eles são usados para evitar leituras pesadas diretas do banco de dados de origem original quando desejamos copiar os dados.
criar uma réplica de leitura
aws rds create-db-instance-read-replica \
--db-instance-identifier myreadreplica \
--source-db-instance-identifier mydbinstance
Promova uma réplica de leitura para uma instância de banco de dados
Agora, como temos a réplica, podemos promovê-la a uma instância de banco de dados independente. Isso atenderá a nossa necessidade final de importar dados de o RDS - Mysql DB para um novo. O comando a seguir é usado para concluir a promoção de uma réplica de leitura para uma instância de banco de dados.
aws rds create-db-instance-read-replica \
--db-instance-identifier readreplica_name \
--region target_region_name
--db-subnet-group-name subnet_name
--source-db-instance-identifier arn:aws:rds:region_name:11323467889012:db:mysql_instance1
Para importar dados de qualquer outro banco de dados para o Amazon RDS - MySQL, temos que usar o Amazon Data Migration Service, também chamado de Amazon DMS. Ele usa a ferramenta de conversão de esquema para traduzir a base de dados existente para uma plataforma MYSQL. O diagrama abaixo explica o processo geral. Também funciona com o princípio de replicação semelhante ao descrito na seção anterior.
A exportação de dados do Amazon RDS Mysql DB é um processo direto em que funciona com o mesmo princípio de replicação que vimos acima. Seguem abaixo as etapas para realizar o processo de exportação.
- Inicie a instância do MySQL em execução externa ao Amazon RDS.
- Designe a instância do banco de dados MySQL para ser a fonte de replicação.
- Use mysqldump para transferir o banco de dados da instância do Amazon RDS para a instância externa ao Amazon RDS.
Abaixo está o código para o comando mysqldum
mysqldump -h RDS instance endpoint \
-u user \
-p password \
--port=3306 \
--single-transaction \
--routines \
--triggers \
--databases database database2 \
--compress \
--compact | mysql \
-h MySQL host \
-u master user \
-p password \
--port 3306