我使用这个命令将一些远程数据库拉到本地数据库:
$ ssh remote.com "mysqldump remotedb | gzip" | gzip -d | mysql localdb
我看到这在数据库上运行了一堆单独的命令。 有更快的方法吗?
我将从本地机器启动命令,并由cron运行。
更新
这种方法导致:在转储表时的查询期间丢失与MySQL服务器的连接
我没有看到这个命令有任何问题。 你是:
这应该是够好的。 显然,这样的命令的执行时间取决于连接速度和数据库大小。
如果遇到很高的执行时间,您可以考虑另一种同步数据库的方法。 例如,您可以尝试仅导出不是整个数据库的更改。
也许。 这取决于你的系统的瓶颈。 如果networking速度很快,瓶颈是转储过程,那么执行LVM快照并跨数据文件进行rsyncing会非常快。 否则,如果networking是瓶颈,那么你可能已经达到了你将能够实现的极限。
如果您确定mysqldump命令是您的瓶颈,则可以尝试使用MyDumper 。
它看起来不像你可以直接输出到目标服务器的输出,但你可以随时使用rsync多次,当转储发生时,当它完成,以便最后的rsync相对较快。
您可以让MyDumper使用-c压缩,使用gzip分别进行压缩或在rsync命令中使用-e "ssh -C"来让SSH处理压缩。