使用 innodb 表导出/导入 mysql 数据库的最快方法是什么?
我有一个生产数据库,我需要定期将其下载到我的开发机器上以调试客户问题。我们目前这样做的方式是下载我们的常规数据库备份,这些备份是使用“mysql -B dbname”生成的,然后被 gzip 压缩。然后我们使用“gunzip -c backup.gz | mysql -u root”导入它们。
从阅读“mysqldump --help”中我可以看出,mysqldump 默认使用 --opt 运行,看起来它打开了一堆我能想到的可以加快导入速度的东西,例如关闭索引并将表作为一个庞大的导入语句导入。
有没有更好的方法来做到这一点,或者我们应该做进一步的优化?
注意:我主要想优化将数据库加载到我的开发机器(一个相对较新的 macbook pro,有很多内存)所花费的时间。备份时间和网络传输时间目前不是大问题。
更新:
要回答答案中提出的一些问题:
生产数据库架构每周最多更改几次。我们正在运行 rails,因此在陈旧的生产数据上运行迁移脚本相对容易。
我们需要每天或每小时将生产数据放入开发环境中。这完全取决于开发人员正在做什么。我们经常遇到特定的客户问题,这些问题是某些数据分布在数据库中的多个表中的结果,需要在开发环境中进行调试。
老实说,我不知道 mysqldump 需要多长时间。不到 2 小时,因为我们目前每 2 小时运行一次。然而,这不是我们想要优化的,我们想要优化到开发人员工作站的导入。
我们不需要完整的生产数据库,但将我们需要和不需要的东西分开并不是一件容易的事(有很多表具有外键关系)。这可能是我们最终必须去的地方,但如果可以的话,我们想避免它更长一点。