J'ai déjà examiné un peu cela. Je me rends compte qu'il y a des questions similaires sur Stack Overflow, et Amazon eux-mêmes ont un document utile donnant des conseils ici:
http://aws.amazon.com/articles/2933
Mes préoccupations sont les suivantes:
Amazon recommande de n'utiliser mysqldumpque pour "de petites quantités de données", qu'ils définissent comme inférieures à 1 Go. La base de données que j'ai l'intention de migrer fait plus de 20 Go.
Une chose qui est bien au sujet mysqldump, cependant, est qu'il a le --single-transactiondrapeau, ce qui me permet d'assurer un état DB qui est compatible avec un seul point dans le temps.
Pour de plus grandes quantités de données, la recommandation d'Amazon consiste à exporter la base de données dans des fichiers plats (par exemple, CSV), puis mysqlimportà les importer dans RDS. La meilleure façon , je sais comment faire cela , cependant, est à travers la SELECT ... INTO OUTFILEcommande, qui fonctionne une seule table à la fois. L'inconvénient de cela, bien sûr, est qu'il ne fournit pas la garantie de cohérence de --single-transaction.
Je suppose que je pourrais assurer la cohérence en supprimant temporairement la totalité de la base de données; mais j'aimerais éviter cela si possible.
- Quelle est la meilleure façon d'obtenir ma grande base de données (> 20 Go) dans des fichiers plats afin que je puisse ensuite l'utiliser
mysqlimport? - S'il s'agit bien de la
SELECT ... INTO OUTFILEcommande, comment exporter toutes les tables de la base de données (de préférence sans avoir à en faire une à la fois)? - Existe-t-il un bon moyen de garantir la cohérence dans tout cela?
--optc'est par défaut, ce qui accélère les choses. Je pense que nous avons mis 6 heures pour recharger sur un serveur puissant, mais les transitions sont des transitions ... :)