- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MySQL主从同步延迟的几个场景.docx
千锋教育-中国IT职业教育领先品牌
千锋教育
MySQL主从同步延迟的几个场景
千锋Linux云计算运维培训课程,在教授学员Linux自动化运维,公有云运维,私有云架构及运维,混合云运维的同时,更有Docker,Shell,Python,OpenStacker,KVM,MySQL等技术的学习。今天小编和大家分享一下MySQL数据库主从同步延迟的几个场景。
之所以进行这块内容的研究,主要针对之前遇到的两个未解的疑惑:
a.?线上有个系统,半同步状态经常从半同步变成异步,然后又马上恢复为半同步,具体原因未明,虽然之前也猜得八九不离十,但还是未完全确定。
b.?做跨机房异步复制测试时,当mysql写qps非常高的时候,发现很多日志还没有来得及发送到从库,也就是binlog日志在主库的产生速度大于传送到从库的速度,这个速度差一直存在,因此当主库在持续高压力地产生binlog的时候,越来越多的binlog没有传送到从库,但当时的网络流量也才18M/S左右(一主一从),从常规的知识认为,千兆的网络传送的速度可以达到100M,而当前的主从之间的binlog传送速度只达到了18M左右,原因是什么? 是网络问题? 还是其他原因。
1、主从复制原理
?Dump线程与io线程
当主从复制关系建立之后,主库上有个dump线程,用来传送在主库产生的binlog日志的,而从库上的io线程,则用来接收由dump线程通过网络传送到从库的binlog日志,并负责将其写入relay log 中去。 这就是主从复制的机制, 同时,由于是异步复制,传送过程不需要ack的确认。
疑问也正在此处——因为是异步传输,如果单纯地理解为binlog文件直接网络传送,这个速度应该很快才是,但实际情况:在我们的测试环境中,binlog日志的传送速度才18M/s ,小于日志产生的22M/s左右的速度。为什么只有这个速度,而没有把网络带宽用满?原因是什么?
?日志传送细节
主从复制的结构中,主库上的dump线程跟从库上的io线程各自有一个,所以不存在多线程地并发发送跟接收的情况,只需要了解binlog dump线程的工作机制,就能了解所有的细节。
通过解析binlog文件,我们可以知道,一个事务可以包含多个event, 下面是一个最简单的事物的在binlog中所记录的信息:
# at 33580
#170531 17:22:53 server id 153443358 ?end_log_pos 33645 CRC32 0x4ea17869 ???????GTID ???last_committed=125 ?????sequence_number=126
SET @@SESSION.GTID_NEXT= ‘e1028e43-4123-11e7-a3c2-005056aa17e6:198’/*!*/;
# at 33645
#170531 17:22:53 server id 153443358 ?end_log_pos 33717 CRC32 0x66820e00 ???????Query ??thread_id=4 ????exec_time=0 ????error_code=0
SET TIMESTAMP=1496222573/*!*/;
BEGIN
/*!*/;
# at 33717
#170531 17:22:53 server id 153443358 ?end_log_pos 33770 CRC32 0x22ddf25e ???????Table_map: `test`.`xcytest` mapped to number 222
# at 33770
#170531 17:22:53 server id 153443358 ?end_log_pos 33817 CRC32 0x61051ea0 ???????Write_rows: table id 222 flags: STMT_END_F
BINLOG
bYsuWRMeXCUJNQAAAOqDAAAAAN4AAAAAAAEABHRlc3QAB3hjeXRlc3QAAgMPAlgCAl7y3SI=
bYsuWR4eXCUJLwAAABmEAAAAAN4AAAAAAAEAAgAC//x9AAAABQBzZGZhc6AeBWE=
‘/*!*/;
### INSERT INTO `test`.`xcytest`
### SET
### ??@1=125 /* INT meta=0 nullable=0 is_null=0 */
### ??@2=’sdfas’ /* VARSTRING(600) meta=600 nullable=1 is_null=0 */
# at 33817
#170531 17:22:53 ser
文档评论(0)