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 mysqldump
que 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-transaction
drapeau, 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 OUTFILE
commande, 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 OUTFILE
commande, 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?
--opt
c'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 ... :)