我已经研究了一点。我意识到 Stack Overflow 上也有类似的问题,亚马逊自己也有一份有用的文档,在这里提供建议:
http://aws.amazon.com/articles/2933
我的担忧如下:
亚马逊建议mysqldump
仅用于“少量数据”,他们将其定义为小于 1GB。我打算迁移的数据库超过 20GB。
mysqldump
然而,关于 的--single-transaction
一个好处是它具有标志,这使我能够确保与单个时间点一致的数据库状态。
对于大量数据,Amazon 的建议是将数据库导出为平面(例如 CSV)文件,然后用于mysqlimport
将这些文件导入 RDS。然而,我知道如何做到这一点的最好方法是通过SELECT ... INTO OUTFILE
命令,它一次只操作一张表。当然,这样做的缺点是它不提供--single-transaction
.
我想我可以通过暂时关闭整个数据库来确保一致性;但如果可能的话,我想避免这种情况。
mysqlimport
?SELECT ... INTO OUTFILE
命令,我如何导出数据库中的所有表(最好不必一次执行一个)?这个问题几乎说明了一切。我们在这里谈论 MySQL,版本 5.1。
我想知道的是这是否严格意味着行已被删除,或者是否有其他可能的情况可能导致这种情况:奇怪的锁定或竞争条件等,迫使表的ID
计数器为一次插入多次递增。