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 ... :)Réponses:
Récemment, j'ai passé beaucoup de temps à essayer de comprendre une transition de 15 Go vers RDS. J'ai fini par trouver un script sur l'un des forums d'Amazon que j'ai modifié à mes propres fins et qui semble bien fonctionner. Je ne sais pas si vous pouvez effectuer une seule transaction, mais le vidage lui-même est très rapide par rapport au transfert réel. Je pense que 15 Go ne m'ont pris que 12 minutes pour vider, donc même s'il n'a pas d'option de transaction unique, je ne pense pas que vous auriez un très long laps de temps pour que des incohérences se produisent. Je ne sais pas si c'est assez bon pour vous, mais j'ai trouvé la solution beaucoup plus gracieuse que la méthode du fichier plat.
la source