更快地将 MySQL DB 从远程计算机拉到本地计算机

更快地将 MySQL DB 从远程计算机拉到本地计算机

我使用此命令将一些远程数据库拉到本地数据库:

$ ssh remote.com "mysqldump remotedb | gzip" | gzip -d | mysql localdb

我发现这会在数据库上运行一堆单独的命令。有没有更快的方法?

我将从本地机器启动命令,并由 cron 运行。

更新

此方法会导致:在转储表时查询期间与 MySQL 服务器失去连接

答案1

我觉得这个命令没什么问题。您是:

  1. 导出 mysql 并压缩远程机器上的转储。
  2. 将压缩的转储发送到本地机器并解压缩。
  3. 将转储导入到本地 mysql。

这应该足够好了。显然,此类命令的执行时间取决于连接速度和数据库大小。

如果您遇到执行时间过长的问题,您可以考虑采用其他方法来同步数据库。例如,您可以尝试仅导出更改部分,而不是整个数据库。

答案2

也许吧。这取决于你的系统瓶颈是什么。如果你的网络很快,瓶颈是转储过程,那么执行 LVM 快照并同步数据文件将非常快。否则,如果网络瓶颈,你可能已经到达了你能实现的极限。

答案3

如果您确定该mysqldump命令是您的瓶颈,您可以尝试使用转储器反而。

看起来你不能将输出直接传输到目标服务器,但是你可以rsync在转储过程中随意使用,并在转储完成后再次使用,以便最终的 rsync 相对较快。

您可以让 MyDumper 使用 进行压缩-c,也可以使用 单独压缩,或者在命令中gzip使用让 SSH 处理压缩。-e "ssh -C"rsync

相关内容