【发布时间】:2012-08-28 09:18:31
【问题描述】:
我们有一个非常大的数据库,我们需要偶尔在我们的 dev+staging 机器上复制它。
目前我们使用mysqldump,然后使用“mysql -u xx -p dbname 如果不需要 2 天就可以完成! 是否可以简单地将整个数据库作为文件从一台服务器复制到另一台服务器并跳过整个导出/导入废话? 干杯
【问题讨论】:
我们有一个非常大的数据库,我们需要偶尔在我们的 dev+staging 机器上复制它。
目前我们使用mysqldump,然后使用“mysql -u xx -p dbname 如果不需要 2 天就可以完成! 是否可以简单地将整个数据库作为文件从一台服务器复制到另一台服务器并跳过整个导出/导入废话? 干杯
【问题讨论】:
有两种解决方案:
【讨论】:
我在可以运行脚本、访问源和目标以及有足够空间为任务准备数据方面有很多限制。
我从托管服务提供商处获得了我的压缩数据库转储。
我拆分了解压缩的命令,所以INSERT INTO 行被放入一个文件中,而所有其他行进入第二个文件。
然后我从第二个创建数据库结构。
我将 INSERT INTO 语句转换为与表相关的 CSV 文件。
最后,我并行上传 csv 文件(最多同时上传 50 个表),这样在 3 小时内克隆了 130GB 的文本文件转储,而不是使用逐语句方法时需要 17 小时。
在 3 小时内,我包括:
远程压缩文件大小在 7GB 到 13GB 之间,通过 40MBps 的线路传输。
通过 40MBps 线路上传到远程服务器。
如果你的mysql服务器在本地,上传速度会更快。
如果可用,我会使用 scp、gzip、zgrep、sed、awk、ps、mysqlimport、mysql 和其他一些实用程序来加速解压缩和过滤(pv、rg、pigz)。
如果我可以直接访问数据库服务器,那么具有文件夹级别快照功能的 LVM 将是首选解决方案,它的速度仅受媒体复制速度的限制。
【讨论】: