Domanda

Come posso importare esistente database MySQL in Amazon RDS?

È stato utile?

Soluzione

Ci sono due modi per importare i dati:

  1. mysqldump:. Se la dimensione dei dati è inferiore a 1 GB, si può fare direttamente uso di comando mysqldump e importare i dati RDS
  2. 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 .

entrare descrizione dell'immagine qui

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

  1. Abilita binlogging se non l'hai già
  2. 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
  3. 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)
  4. Nel frattempo, l'istanza attuale produzione sta ancora scontando le query - questo è dove il master-data=2 e binlogging è disponibile in
  5. Nel file backup.sql, avrete una linea in alto che sembra CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000003′, MASTER_LOG_POS=350789121;
  6. Prendi il diff dal backup.sql come file SQL mysqlbinlog /var/log/mysql/mysql-bin.000003 --start-position=350789121 --base64-output=NEVER > output.sql
  7. Esegui le query sull'istanza RDS per aggiornarlo cat output.sql | mysql -h RDS_endpoint -u username -p DB_name
  8. Scarica la nuova posizione di registro trovando end_log_pos alla fine del file più recente output.sql.
  9. Prendi il diff dall'ultimo output.sql (come il passaggio 6) e ripetere i passaggi 7 + 8.

L'attuale migrazione

  1. Avere tutte le tue applicazioni pronti a distribuire rapidamente con la nuova istanza RDS
  2. Ricevi le ultime end_log_pos da output.sql
  3. Esegui FLUSH TABLES WITH READ LOCK; sulla vecchia istanza di fermare tutte le scritture
  4. Avvia distribuzione delle applicazioni con la nuova istanza RDS
  5. 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 /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top