mysql 远距离复制-许多 tcp/ip 重新连接

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 窗口提高到连接允许的范围之外时发生的数据包丢失造成的吗?

答案1

我最终使用了 ssh 隧道(并稍微调整了复制设置)——效果很好:

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

额外的好处是复制流是加密的。

相关内容