mysql5.7 增强半同步
发布日期:2021-11-08 09:37:42
浏览次数:1
分类:技术文章
本文共 2114 字,大约阅读时间需要 7 分钟。
mysql5.7.4的文档里有一句话:
http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-4.html
Replication: Implemented separate threads for sending and receiving semisynchronous replication acknowledgement signals, so that event streams and ACK streams can be sent and received simultaneously. This should reduce many common delays and thus improve performance with semisynchronous replication in a number of settings.
这句话不太起眼,实际上威力不小,解释一下: 在5.7.4版本的semi sync 框架中,独立出一个线程叫ack_receive ,专门用于接收slave的反馈信息。 这样master上有两个进程独立工作,一个发送binlog到slave,另一个接收slave的反馈。而之前版本,master只有一个进程binlog dump,既负责发送binlog给slave,又负责接收slave反馈。可以用pstack观察一下mysqld进程:
Thread 52 (Thread 0x7f339d64d700 (LWP 4860)): #0 0x000000382ac0b98e in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x0000000000eead0a in MYSQL_BIN_LOG::wait_for_update_bin_log(THD*, timespec const*) () #2 0x0000000000f0a6fe in Binlog_sender::send_binlog(st_io_cache*, unsigned long long) () #3 0x0000000000f0a987 in Binlog_sender::run() () #4 0x0000000000f04b81 in mysql_binlog_send(THD*, char*, unsigned long long, Gtid_set*, unsigned int) () #5 0x0000000000f076e7 in com_binlog_dump(THD*, char*, unsigned long) () #6 0x0000000000d233d6 in dispatch_command(THD*, COM_DATA const*, enum_server_command) () #7 0x0000000000d24904 in do_command(THD*) () #8 0x0000000000df5b14 in handle_connection () #9 0x0000000000f6ff04 in pfs_spawn_thread () #10 0x000000382ac079d1 in start_thread () from /lib64/libpthread.so.0 #11 0x000000382a8e8b6d in clone () from /lib64/libc.so.6 Thread 55 (Thread 0x7f336b5fe700 (LWP 4298)): #0 0x000000382a8e15e3 in select () from /lib64/libc.so.6 #1 0x00007f339c8859fe in Ack_receiver::run() () from /usr/lib64/mysql/plugin/semisync_master.so #2 0x00007f339c885dc9 in ack_receive_handler () from /usr/lib64/mysql/plugin/semisync_master.so #3 0x0000000000f6ff04 in pfs_spawn_thread () #4 0x000000382ac079d1 in start_thread () from /lib64/libpthread.so.0 #5 0x000000382a8e8b6d in clone () from /lib64/libc.so.6 很明显,我们看到了新的东西:ack_receive,它来自semisync_master.so插件。实际测试了下,有了这个东西后,半同步架构下的整体TPS有了不小的提升。
转载自: http://blog.51cto.com/weikle/1792233
转载地址:https://blog.csdn.net/zhengwei125/article/details/79003431 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月04日 05时50分42秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux mysql 命令 大全
2019-04-27
清除Squid缓存的小工具
2019-04-27
Varnish Cache 3.0.0安装
2019-04-27
2011年6月编程语言关注度排行
2019-04-27
Varnish使用小结
2019-04-27
千万级并发HAproxy均衡负载系统介绍
2019-04-27
什么是A记录、MX记录、CNAME记录
2019-04-27
MongoDB简介
2019-04-27
Varnish purges 缓存清除
2019-04-27
Linux下redis安装部署
2019-04-27
水平切分与垂直切分
2019-04-27
MySQL引擎
2019-04-27
MySQL下的NoSQL解决方案HandlerSocket
2019-04-27
Apache服务器下使用 ab 命令进行压力测试
2019-04-27
查看Firefox中的缓存
2019-04-27
http header头设置反向代理不缓存
2019-04-27
配置MySQL主从复制
2019-04-27
CI框架如何删除地址栏的 index.php
2019-04-27
expires与etag控制页面缓存的优先级
2019-04-27
取消掉Transfer-Encoding:chunked
2019-04-27