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 ... :)Respostas:
Recentemente, passei muito tempo tentando descobrir uma transição de 15 GB para o RDS. Acabei encontrando um script em um dos fóruns da Amazon que modifiquei para meus próprios usos e parece funcionar bem. Não tenho certeza se você pode fazer uma única transação, mas o despejo em si é muito rápido comparado à transferência real. Acho que 15 GB levaram apenas 12 minutos para despejar, portanto, mesmo se não houver uma opção de transação única, acho que você não terá muito tempo para que ocorram inconsistências. Não tenho certeza se isso é bom o suficiente para você, mas achei a solução muito mais elegante do que o método de arquivo simples.
fonte