Amazon RDS - Importazione esportazione DB MySQL
Amazon RDS MySQL offre modi semplici per importare i dati nel DB ed esportare i dati dal DB. Dopo essere stati in grado di connettersi con successo al database MySQL, possiamo utilizzare gli strumenti CLI per eseguire i comandi di importazione ed esportazione per ottenere i dati da altre fonti dentro e fuori dal database RDS. Di seguito sono riportati gli scenari da considerare quando si decide sull'approccio all'importazione dei dati nel database Amazon RDS - MySQL.
Un database MySQL esistente può essere presente in locale o in un'altra istanza EC2. Di seguito viene mostrato schematicamente quello che facciamo.
Creazione di un backup da database locale
Come primo passaggio creiamo un backup del database locale utilizzando il comando seguente.
mysqldump -u user -p[user_password] [database_name] > backupfile.sql
Viene creato un file con nome backupfile.sql che contiene la struttura della tabella insieme ai dati da utilizzare.
Archiviazione del file di backup in S3.
Carica il file di backup creato in precedenza in un bucket Amazon S3 predefinito nella stessa regione in cui è presente il database RDS MySQL DB di destinazione. Puoi seguire questo link per sapere come caricare.
Importa dati da Amazon S3 a database RDS-MySQL
Puoi utilizzare il seguente comando della CLI di Amazon per importare i dati da S3 al database 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
In alcuni casi si desidera che i dati da un database MYSQL RDS esistente vengano importati in un altro DB MYSQL RDS. Ad esempio, per certificare un database di ripristino di emergenza o creare un database solo per report aziendali, ecc. In tale scenario, creiamo repliche di lettura che sono una copia del loro database di origine e quindi promuoviamo tale replica di lettura a una nuova istanza database. Sono utilizzati per impedire una lettura pesante diretta dal DB di origine originale quando si desidera copiare i dati.
creare una replica di lettura
aws rds create-db-instance-read-replica \
--db-instance-identifier myreadreplica \
--source-db-instance-identifier mydbinstance
Promuovi una replica di lettura a istanza database
Ora che abbiamo la replica, possiamo promuoverla a un'istanza database autonoma. Questo servirà alla nostra esigenza finale di importare i dati da o RDS - Mysql DB a uno nuovo. Il comando seguente viene utilizzato per completare la promozione di una replica di lettura in un'istanza db.
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
Per importare dati da qualsiasi altro database in Amazon RDS - MySQL, dobbiamo utilizzare il servizio di migrazione dei dati di amazon chiamato anche Amazon DMS. Utilizza lo strumento di conversione dello schema per tradurre il database esistente in una piattaforma MYSQL. Il diagramma seguente spiega il processo generale. Inoltre funziona secondo il principio di replica simile a quello descritto nella sezione precedente.
L'esportazione di dati da Amazon RDS Mysql DB è un processo diretto in cui funziona secondo lo stesso principio di replica che abbiamo visto sopra. Di seguito sono riportati i passaggi per eseguire il processo di esportazione.
- Avvia l'istanza di MySQL in esecuzione all'esterno di Amazon RDS.
- Designare l'istanza database MySQL come origine della replica.
- Utilizza mysqldump per trasferire il database dall'istanza Amazon RDS all'istanza esterna ad Amazon RDS.
Di seguito è riportato il codice per il 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