MySQL复制是否受高延迟互连的影响?

我们有一个位于不同数据中心的vanilla主站和从站MySQL设置,以及与主站位于同一数据中心的另一个从站.

数据中心之间的带宽相当高(在我们已经完成的网络基准测试中,我们可以达到15MB /秒),但是存在延迟,大约是28ms.它无论如何都不高,但它远远高于同一数据中心的亚秒级延迟.

偶尔,我们会在删除奴隶时经历严重的滞后(2000秒或更长时间),而本地奴隶则保持最新状态.在查看滞后的远程从站时,SQL线程通常会花费时间等待IO线程更新中继日志.大师同时显示“等待网”或类似的东西.

所以它意味着它的网络,但在发生这种情况时我们仍然拥有免费带宽.

我的问题是:数据中心之间的延迟是否会影响复制的性能?
从属io线程是否只是流式传输事件,直到主服务器停止发送它们,或者它是否在事件之间以某种方式汇集主服务器?

解决方法:

您问题的直接答案是肯定的,但这取决于您运行的MySQL版本.在MySQL 5.5之前,复制将按如下方式运行:

> Master执行SQL
> Master在其二进制日志中记录SQL事件
> Slave从主二进制日志中读取SQL事件
> Slave通过I / O线程在其中继日志中存储SQL事件
> Slave通过SQL线程从中继日志读取下一个SQL事件
> Slave执行SQL
> Slave确认SQL事件完全执行的主人

从MySQL 5.5开始,使用Semisynchronous Replication,现在复制将按如下方式运行:

> Master执行SQL
> Master在其二进制日志中记录SQL事件
> Slave从主二进制日志中读取SQL事件
> Slave确认SQL事件收据的主人
> Slave通过I / O线程在其中继日志中存储SQL事件
> Slave通过SQL线程从中继日志读取下一个SQL事件
> Slave执行SQL
> Slave确认SQL事件完全执行的主人

这种新的范例将允许奴隶与其主人更紧密地同步.

尽管如此,网络中的延迟可能会阻碍MySQL Semisync Replication恢复到旧式异步复制的程度.为什么?如果在没有任何从服务器确认事务的情况下发生超时,则主服务器将恢复为异步复制.当至少一个半同步从机赶上时,主机返回半同步复制.

更新2011-08-08 14:22美国东部时间

MySQL 5.5半同步复制的配置很简单

步骤1)将这四(4)行添加到/etc/my.cnf

[mysqld]
plugin-dir=/usr/lib64/mysql/plugin
#rpl_semi_sync_master_enabled
#rpl_semi_sync_master_timeout=5000
#rpl_semi_sync_slave_enabled

步骤2)重启MySQL

service mysql restart

步骤3)在MySQL客户端中运行这些命令

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave  SONAME 'semisync_slave.so';

步骤4)在plugin-dir选项之后取消注释三个rpm_semi_sync选项

[mysqld]
plugin-dir=/usr/lib64/mysql/plugin
rpl_semi_sync_master_enabled
rpl_semi_sync_master_timeout=5000
rpl_semi_sync_slave_enabled

步骤5)重启MySQL

service mysql restart

全部完成 !!!现在只需像往常一样设置MySQL Replication.

上一篇:mysql – 我可以使用InnoDB主站和MyISAM从站使用全文进行搜索吗?


下一篇:使用MYSQL复制来加速架构更改和表格优化