远程mysql复制 – 很多tcp / ip重新连接

我们正在远程执行非现场mysql复制和有限的带宽 – 大约200ms和大约70KB / s(最大)的延迟。

复制工作是零星的,转移几十千字节,然后重新连接。

我已经将问题追溯到客户机上的mysqld守护进程的错误tcp / ip行为 – 当单个tcp / ip数据包丢失时,整个ACK /重传序列无法恢复连接,并在某个时刻服务器发出FIN。

值得注意的是,来自同一台服务器的scp可以正常工作(即使偶尔会丢失数据包)。

从客户端机器到服务器的Mysql客户端也能够正常工作,偶尔丢包不会中断连接。

服务器和客户端都有相同版本的mysql服务器:

mysql> SHOW VARIABLES LIKE '%version%'; +-------------------------+---------------------+ | Variable_name | Value | +-------------------------+---------------------+ | protocol_version | 10 | | version | 5.0.67-0ubuntu6-log | | version_comment | (Ubuntu) | | version_compile_machine | x86_64 | | version_compile_os | debian-linux-gnu | +-------------------------+---------------------+ 5rows in set (0.21 sec) 

当TCP / IP试图提升TCP / IP窗口超出连接所允许的范围时,可能会造成数据包丢失?

我结束了使用SSH隧道(并调整复制设置了一下) – 完美的作品:

 ssh -L 3307:localhost:3307 root@the-replication-master-server 

额外的好处是复制stream被encryption。