Я уже немного разбирался в этом. Я понимаю, что есть похожие вопросы о переполнении стека, и у самих Amazon есть полезный документ, дающий советы здесь:
http://aws.amazon.com/articles/2933
Мои опасения следующие:
Amazon рекомендует использовать mysqldump
только для «небольших объемов данных», которые они определяют как менее 1 ГБ. База данных, которую я собираюсь перенести, превышает 20 ГБ.
Однако хорошо то mysqldump
, что у него есть --single-transaction
флаг, который позволяет мне обеспечить состояние БД, соответствующее одному моменту времени.
Для больших объемов данных Amazon рекомендует экспортировать базу данных в плоские (например, CSV) файлы и затем использовать их mysqlimport
для импорта в RDS. Лучший способ я знаю , как сделать это , однако, через SELECT ... INTO OUTFILE
команду, которая работает только одна таблица , в то время. Недостатком этого, конечно, является то, что он не дает гарантии согласованности --single-transaction
.
Я полагаю, что смог бы обеспечить согласованность, временно отключив всю БД; но я бы хотел этого избежать, если это вообще возможно.
- Какой лучший способ превратить мою большую (> 20 ГБ) базу данных в плоские файлы, чтобы я мог потом использовать
mysqlimport
? - Если это действительно
SELECT ... INTO OUTFILE
команда, как мне экспортировать все таблицы в базе данных (желательно без необходимости делать по одной за раз)? - Есть ли хороший способ обеспечить последовательность всего этого?
--opt
это по умолчанию, что ускоряет процесс. Я думаю, что нам потребовалось 6 часов для перезагрузки на мощный сервер, но переходы - это переходы ... :)Ответы:
Я только недавно потратил много времени, пытаясь выяснить переход 15 ГБ в RDS. Закончилось поиском сценария на одном из форумов Amazon, который я модифицировал для своих собственных нужд и, похоже, работает хорошо. Я не уверен, что вы можете сделать одну транзакцию, но сам дамп очень быстрый по сравнению с фактическим переводом. Я думаю, что 15 ГБ заняло у меня всего 12 минут, чтобы создать дамп, поэтому, даже если у него нет единой опции транзакции, я не думаю, что у вас будет очень длительный промежуток времени для возникновения несоответствий. Я не уверен, достаточно ли это для вас, но я нашел решение более изящным, чем метод плоских файлов.
источник