Я уже немного разбирался в этом. Я понимаю, что есть похожие вопросы о переполнении стека, и у самих 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 часов для перезагрузки на мощный сервер, но переходы - это переходы ... :)