Ya he investigado esto un poco. Me doy cuenta de que hay preguntas similares sobre Stack Overflow, y Amazon tiene un documento útil que da consejos aquí:
http://aws.amazon.com/articles/2933
Mis preocupaciones son las siguientes:
Amazon recomienda usar mysqldump
solo para "pequeñas cantidades de datos", que definen como menos de 1 GB. La base de datos que pretendo migrar tiene más de 20 GB.
mysqldump
Sin embargo, una cosa que es agradable es que tiene la --single-transaction
bandera, lo que me permite asegurar un estado de base de datos que sea consistente con un solo punto en el tiempo.
Para grandes cantidades de datos, la recomendación de Amazon es exportar la base de datos a archivos planos (por ejemplo, CSV) y luego usarlos mysqlimport
para importarlos a RDS. La mejor manera que sé cómo hacer esto , sin embargo, es a través del SELECT ... INTO OUTFILE
comando, que sólo opera una tabla a la vez. La desventaja de esto, por supuesto, es que no proporciona la garantía de consistencia --single-transaction
.
Supongo que podría garantizar la coherencia eliminando todo el DB temporalmente; pero me gustaría evitar eso si es posible.
- ¿Cuál es la mejor manera de obtener mi gran base de datos (> 20 GB) en archivos planos para que luego pueda usar
mysqlimport
? - Si es realmente el
SELECT ... INTO OUTFILE
comando, ¿cómo exporto todas las tablas de la base de datos (preferiblemente sin tener que hacer una a la vez)? - ¿Hay alguna buena manera de garantizar la coherencia en todo esto?
--opt
es predeterminado, lo que acelera las cosas. Creo que nos tomó 6 horas volver a cargar en un servidor potente, pero las transiciones son transiciones ... :)