1

我们有一个非常大的数据库,我们需要偶尔在我们的 dev+staging 机器上进行复制。

目前我们使用mysqldump,然后使用“mysql -u xx -p dbname < dumpscript.sql”导入数据库脚本

如果不需要 2 天就可以完成!

是否可以简单地将整个数据库作为文件从一台服务器复制到另一台服务器并跳过整个导出/导入废话?

干杯

4

2 回答 2

1

有几个解决方案:

  • 有一个单独的复制从站,您可以随时停止并进行文件级备份
  • 如果您使用 innodb 引擎 - 您可以获取文件系统级快照[例如使用 lvm],然后将文件复制到您的测试环境
  • 如果您有大量表/数据库 - 您可以并行转储和恢复过程以加快速度。
于 2012-08-28T09:21:40.743 回答
0

我在哪里可以运行脚本、访问源和目标以及有足够的空间为任务准备数据有很多限制。

我从托管服务提供商处获得了我的压缩数据库转储。
我将解压缩的命令拆分,以便INSERT INTO将行放入一个文件中,而所有其他行放入第二个文件中。

然后我从第二个创建数据库结构。
我将INSERT INTO语句转换为与表相关的 CSV 文件。
最后,我并行上传 csv 文件(最多同时上传 50 个表),这样可以在 3 小时内克隆一个 130GB 的文本文件转储,而不是使用逐条语句方法时需要 17 小时。

在 3 小时内,我包括:

  • 复制结束(10 分钟),
  • 健全性检查(10 分钟)和
  • 日志过滤(10 分钟),因为日志条目只需要来自最近一学年。

远程压缩文件的大小在 7GB 到 13GB 之间,通过 40MBps 的线路传输。
通过 40MBps 线路上传到远程服务器。

如果你的mysql服务器是本地的,上传速度会更快。

我利用 scp、gzip、zgrep、sed、awk、ps、mysqlimport、mysql 和其他一些实用程序来加速解压缩和过滤(pv、rg、pigz)(如果有)。

如果我可以直接访问数据库服务器,那么具有文件夹级别快照功能的 LVM 将是首选解决方案,它的速度仅受媒体复制速度的限制。

于 2021-03-25T15:03:35.303 回答