Ho già esaminato un po 'questo. Mi rendo conto che ci sono domande simili su Stack Overflow e Amazon stesso ha un documento utile che fornisce consigli qui:
http://aws.amazon.com/articles/2933
Le mie preoccupazioni sono le seguenti:
Amazon consiglia di utilizzare mysqldumpsolo per "piccole quantità di dati", che definiscono meno di 1 GB. Il database che intendo migrare è di oltre 20 GB.
Una cosa interessante mysqldump, tuttavia, è che ha il --single-transactionflag, che mi consente di garantire uno stato DB coerente con un singolo punto nel tempo.
Per grandi quantità di dati, la raccomandazione di Amazon è di esportare il database in file flat (ad es. CSV) e quindi utilizzarli mysqlimportper importarli in RDS. Il modo migliore che conosco come fare questo , però, è attraverso il SELECT ... INTO OUTFILEcomando, che opera solo una tabella alla volta. L'aspetto negativo di questo, ovviamente, è che non fornisce la garanzia di coerenza di --single-transaction.
Suppongo di poter garantire la coerenza eliminando temporaneamente l'intero DB; ma vorrei evitarlo, se possibile.
- Qual è il modo migliore per ottenere il mio database di grandi dimensioni (> 20 GB) in file flat in modo da poterlo utilizzare
mysqlimport? - Se è davvero il
SELECT ... INTO OUTFILEcomando, come posso esportare tutte le tabelle nel database (preferibilmente senza doverne fare una alla volta)? - Esiste un buon modo per garantire coerenza in tutto ciò?
--optè l'impostazione predefinita, che accelera le cose. Penso che abbiamo impiegato 6 ore per ricaricare su un server potente, ma le transizioni sono transizioni ... :)