Eu já olhei para isso um pouco. Percebo que existem perguntas semelhantes sobre o Stack Overflow, e a própria Amazon tem um documento útil, dando conselhos aqui:
http://aws.amazon.com/articles/2933
Minhas preocupações são as seguintes:
A Amazon recomenda usar mysqldump
apenas para "pequenas quantidades de dados", que eles definem como menos de 1 GB. O banco de dados que pretendo migrar tem mais de 20 GB.
Uma coisa interessante mysqldump
, no entanto, é que ele possui a --single-transaction
sinalização, o que me permite garantir um estado de banco de dados consistente com um único ponto no tempo.
Para grandes quantidades de dados, a recomendação da Amazon é exportar o banco de dados para arquivos simples (por exemplo, CSV) e depois usá mysqlimport
-los para importá-los para o RDS. A melhor maneira de saber como fazer isso , porém, é através do SELECT ... INTO OUTFILE
comando, que opera apenas uma tabela por vez. A desvantagem disso, é claro, é que ele não fornece a garantia de consistência --single-transaction
.
Suponho que eu poderia garantir consistência retirando temporariamente todo o banco de dados; mas gostaria de evitar isso, se possível.
- Qual é a melhor maneira de colocar meu banco de dados grande (> 20 GB) em arquivos simples para que eu possa usá-lo
mysqlimport
? - Se é realmente o
SELECT ... INTO OUTFILE
comando, como exportar todas as tabelas no banco de dados (de preferência sem precisar fazer uma de cada vez)? - Existe alguma maneira de garantir consistência ao longo de tudo isso?
--opt
é o padrão, o que acelera as coisas. Acho que levou 6 horas para recarregar em um servidor potente, mas transições são transições ... :)