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