Migrazione dei database esistenti per Amazon RDS
-
23-10-2019 - |
Domanda
Come posso importare esistente database MySQL in Amazon RDS?
Soluzione
Ci sono due modi per importare i dati:
-
mysqldump
:. Se la dimensione dei dati è inferiore a 1 GB, si può fare direttamente uso di comando mysqldump e importare i dati RDS -
mysqlimport
:. Se la dimensione dei dati è più di 1 GB o in qualsiasi altro formato, è possibile comprimere i dati in file flat e caricare i dati utilizzando il comando sqlimport
Altri suggerimenti
questa pagina sui documenti AWS che spiega come utilizzare mysqldump e tubo in esempio un RDS.
Ecco il loro codice di esempio (l'uso in riga di comando / shell / ssh):
mysqldump acme | mysql --host=hostname --user=username --password acme
dove acme
è il database che si sta migrando sopra, e hostname
/ username
sono quelle dal vostro esempio RDS.
È possibile connettersi a RDS, come se si trattasse di un normale server MySQL, basta assicurarsi di aggiungere i vostri indirizzi IP EC2 ai vostri gruppi di protezione per questo forum distacco .
ho dovuto includere la password per il mysqldump locale, in modo mio comando ha finito per guardare più simile a questo:
mysqldump --password=local_mysql_pass acme | mysql --host=hostname --user=username --password acme
FWIW, ho appena completato muovere le basi di dati sopra. Ho usato la presente domanda di mysql comandi come la creazione di utenti e concedere le autorizzazioni.
Spero che questo aiuti!
io sono un grande fan del SQLyog strumento. Esso permette di collegare ai database origine e di destinazione e lo schema e / o dati di sincronizzazione. Ho usato anche SQLWave , ma passato a SQLyog. Da tanto che ho fatto il passaggio che non mi ricordo esattamente il motivo per cui sono passato. Comunque, questo è i miei due centesimi. So che alcuni si opporrà alla mia proposta di strumenti di Windows GUI per MySQL. Io in realtà come il prodotto SQLyog così tanto che ho eseguito da vino (funziona perfettamente da Wine su Ubuntu per me). Questo blog potrebbe essere utile .
Un breve riassunto di un post GoSquared Ingegneria:
Configurazione + Avvio
- Seleziona una finestra di manutenzione e la finestra di backup quando l'istanza sarà a carico più basso
- Scegli Multi-AZ oppure no (altamente consigliato per auto-failover e manutenzione)
- Avviare il RDS esempio
- Configura gruppi di protezione in modo che le applicazioni ecc possono accedere alla nuova istanza
Dati migrazione + preparazione
- Abilita binlogging se non l'hai già
- Esegui
mysqldump --single-transaction --master-data=2 -C -q dbname -u username -p > backup.sql
sul vecchio caso di prendere un dump dei dati di corrente - Esegui
mysql -u username -p -h RDS_endpoint DB_name < backup.sql
per importare i dati nel vostro esempio RDS (puo 'prendere un po' a seconda delle dimensioni DB) - Nel frattempo, l'istanza attuale produzione sta ancora scontando le query - questo è dove il
master-data=2
e binlogging è disponibile in - Nel file backup.sql, avrete una linea in alto che sembra
CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=350789121;
- Prendi il diff dal
backup.sql
come file SQLmysqlbinlog /var/log/mysql/mysql-bin.000003 --start-position=350789121 --base64-output=NEVER > output.sql
- Esegui le query sull'istanza RDS per aggiornarlo
cat output.sql | mysql -h RDS_endpoint -u username -p DB_name
- Scarica la nuova posizione di registro trovando
end_log_pos
alla fine del file più recenteoutput.sql
. - Prendi il diff dall'ultimo
output.sql
(come il passaggio 6) e ripetere i passaggi 7 + 8.
L'attuale migrazione
- Avere tutte le tue applicazioni pronti a distribuire rapidamente con la nuova istanza RDS
- Ricevi le ultime
end_log_pos
daoutput.sql
- Esegui
FLUSH TABLES WITH READ LOCK;
sulla vecchia istanza di fermare tutte le scritture - Avvia distribuzione delle applicazioni con la nuova istanza RDS
- Esegui i passaggi da 6-8 dall'alto per aggiornare l'istanza RDS con le ultime query al vecchio server
Conclusione
Utilizzando questo metodo, avrete una piccola quantità di tempo (a seconda di quanto tempo ci vuole per distribuire le applicazioni + quanti scrive l'istanza di MySQL serve - probabilmente solo un minuto o due) con le scritture essere respinto dal vecchio server, ma si avrà una migrazione costante senza tempi di inattività di lettura.
Un post completo e dettagliato che spiega il modo in cui (GoSquared) migrato a RDS con tempi di inattività minimi (tra cui il debug degli errori) è disponibile qui: https://engineering.gosquared.com/migrating-mysql-to-amazon-rds .
Sono completamente d'accordo con @SanketDangi.
Ci sono due modi per farlo in un modo è come suggerito utilizzando mysqldump
o mysqlimport
.
ho visto casi in cui crea problemi durante il ripristino dei dati sulla nube viene corrotto.
Tuttavia l'importazione di applicazioni su nuvola è diventato molto più facile ora un giorno. Si prova a caricare il DB server al cloud pubblico attraverso Ravello.
È possibile importare il server di database stesso su Amazon utilizzando Ravello.
Disclosure:. Io lavoro per Ravello
Guida di acquisto AWS RDS clienti dati per MySQL è disponibile qui: http://aws.amazon.com/ articoli / 2933
- Crea file flat contenente i dati da caricare
- interrompere le applicazioni di accesso a bersaglio DB istanza
- Crea un DB snapshot
- Disattiva Amazon RDS backup automatici
- Caricare il dati utilizzando mysqlimport
- Abilita nuovo backup automatici
Se si utilizza il terminale questo è ciò che ha funzionato per me:
mysqldump -u local_username -plocal_password local_db_name | mysql -h myRDS-at-amazon.rds.amazonaws.com -u rds-username -prds_password_xxxxx remote_db_name
e poi ho usato MySQL Workbench (download gratuito) per verificare che stava lavorando perché la linea di comando era statica dopo aver premuto invio, ho potuto probabilmente messo -v alla fine per vedere il suo output
Nota: non c'è spazio dopo -p
più semplice esempio:
# export local db to sql file:
mysqldump -uroot -p —-databases qwe_db > qwe_db.sql
# Now you can edit qwe_db.sql file and change db name at top if you want
# import sql file to AWS RDS:
mysql --host=proddb.cfrnxxxxxxx.eu-central-1.rds.amazonaws.com --port=3306 --user=someuser -p qwe_db < qwe_db.sql
Questi sono i passi che ho fatto e avuto sucesso.
Prendere la mysqldump del database necessaria.
mysqldump -u nomeutente -p databasename --single-transazione --quick --lock-tavoli = false> DatabaseName-backup - $ (date +% F) sql
(Non dimenticate di sostituire il nome utente come root - la maggior parte delle volte, e databasename -> nome Db di base di dati che si sta per migrare verso RDS)
Una volta richiesto, immettere la password.
Una volta fatto, accesso al RDS istanza dal server MySQL (Assicurarsi che i gruppi di protezione sono configurati per consentire la connessione da EC2 a RDS)
mysql -h hostaddress -P 3306 -u rdsusername -p
(Non dimenticare di sostituire hostaddress con l'indirizzo del vostro RDS grado e rdsusernmae con il nome utente per l'RDS grado, quando richiesto dare la password)
Si scopre che hostaddress sotto - connettività e sicurezza -.> Endpoint & porta sotto RDS database da AWS Console
Una volta effettuato l'accesso, creare il database utilizzando i comandi di MySQL:
creare databasename banca dati; \ Q
Una volta database viene creato in RDS, importare il file SQL creata nel passaggio 1:
mysql -h hostaddress -u rdsusername -p nomedatabase
Questo dovrebbe importare il file SQL per RDS e ripristinare il contenuto nel nuovo database.
Riferimento da: https://k9webops.com/blog/migrate-an-existing-database-on-mysql-mariadb-to-an-already-running-rds-instance-on-the -aws /