文章很长,建议收藏起来慢慢读!疯狂创客圈总目录 语雀版 | 总目录 码云版| 总目录 博客园版 为您奉上珍贵的学习资源 :
-
免费赠送 :《尼恩Java面试宝典》持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备
-
免费赠送 经典图书:《Java高并发核心编程(卷1)》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
-
免费赠送 经典图书:《Java高并发核心编程(卷2)》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
-
免费赠送 经典图书:《Netty Zookeeper Redis 高并发实战》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
-
免费赠送 经典图书:《SpringCloud Nginx高并发核心编程》 面试必备 + 大厂必备 +涨薪必备 加尼恩免费领
-
免费赠送 资源宝库: Java 必备 百度网盘资源大合集 价值>10000元 加尼恩领取
推荐:入大厂 、做架构、大力提升Java 内功 的 精彩博文
入大厂 、做架构、大力提升Java 内功 必备的精彩博文 | 秋招涨薪1W + 必备的精彩博文 |
---|---|
1:Redis 分布式锁 (图解-秒懂-史上最全) | 2:Zookeeper 分布式锁 (图解-秒懂-史上最全) |
3: Redis与MySQL双写一致性如何保证? (面试必备) | 4: 面试必备:秒杀超卖 解决方案 (史上最全) |
5:面试必备之:Reactor模式 | 6: 10分钟看懂, Java NIO 底层原理 |
7:TCP/IP(图解+秒懂+史上最全) | 8:Feign原理 (图解) |
9:DNS图解(秒懂 + 史上最全 + 高薪必备) | 10:CDN图解(秒懂 + 史上最全 + 高薪必备) |
11: 分布式事务( 图解 + 史上最全 + 吐血推荐 ) | 12:限流:计数器、漏桶、令牌桶 三大算法的原理与实战(图解+史上最全) |
13:架构必看:12306抢票系统亿级流量架构 (图解+秒懂+史上最全) |
14:seata AT模式实战(图解+秒懂+史上最全) |
15:seata 源码解读(图解+秒懂+史上最全) | 16:seata TCC模式实战(图解+秒懂+史上最全) |
SpringCloud 微服务 精彩博文 | |
---|---|
nacos 实战(史上最全) | sentinel (史上最全+入门教程) |
SpringCloud gateway (史上最全) | 分库分表sharding-jdbc底层原理与实操(史上最全,5W字长文,吐血推荐) |
推荐:尼恩Java面试宝典(持续更新 + 史上最全 + 面试必备)具体详情,请点击此链接
尼恩Java面试宝典,32个最新pdf,含2000多页,不断更新、持续迭代 具体详情,请点击此链接
MySQL 异步复制、半同步复制、增强半同步复制(史上最全)
背景:来自于小伙伴问题
小伙伴的难题:
mysql主从同步的时候,半同步和增强半同步是怎样的一个概念,我看网上说的有点不明不白的,也没找到合适的解释
目前MySQL主要有三种复制方式
1)异步复制
2)半同步复制
3)增强半同步复制
推荐使用:对性能要求较高的推荐使用异步复制 ,如果运行的金融类业务推荐使用增强半同步复制,并使用ROW+GTID+5.7以上
异步复制
MySQL复制的默认方式
说明:
如果对这个不好理解,这个就是rocketmq的 异步刷盘+异步复制
具体请参见尼恩的rocketmq 高可用视频,第17章视频
半同步复制
rpl_semi_sync_master_wait_point=after_commit
说明:
如果对这个不好理解,这个就是rocketmq的 同步刷盘+异步复制
具体请参见尼恩的rocketmq 高可用视频,第17章视频
半同步复制的优缺点
缺点1: 幻读
当用户发起一个事务,该事务已经写入redo日志和binlog日志,但该事务还没写入从库,此时处在waiting slave dump处,此时另一个用户可以读取到这条数据,而他自己却不能;
缺点2:数据丢失
一个事务在waiting slave dump处crash后,主库将比从库多一条数据
疑问:此时如果主从复制恢复后,该数据时候可以正常同步到从服务器?(未测试!!)
增强半同步复制
rpl_semi_rsync_master_wait_point=after_sync
改善1:解决幻读
当用户发起一个事务,该事务写入二进制后,便向从库进行同步,此时其他用户无法读取到该数据,解决了幻读
改善2:解决数据丢失
一个事务在waiting slave dump处crash掉后,可以通过观察从库上是否存在主库的last gtid值,如果存在,这条数据正常恢复,如果不存在则删除主库的那条多余的GTID值,然后恢复,保证了数据的完整性;
说明:
如果对这个不好理解,这个就是rocketmq的 同步刷盘+同步复制
具体请参见尼恩的rocketmq 高可用视频,第17章视频
部署测试
异步复制环境:一主一从
主IP:192.168.20.206
从IP:192.168.20.212
需要3个步骤:
1.给主库加载半同步复制插件,并件修改主库的my.cnf参数,;
2.给从库加载半同步复制插,并件修改从库的my.cnf参数,;
3.在从库中执行使用stop salve io_thread 、start slave io_thread命令搞定
1.1)主库加载半同步复制插件
install plugin rpl_semi_sync_master soname 'semisync_master.so';
1.2)主库开启半同步复制模式
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=1000;
2.3)主库修改my.cnf文件
vim /etc/my.cnf
[mysqld]
###:for replcation
rpl_semi_sync_master_enabled=1
rpl_semi_sync_master_timeout=1000
2.1)从库加载半同步复制插件
install plugin rpl_semi_sync_SLAVE soname 'semisync_slave.so';
2.2)从库开启半同步复制模式
set global rpl_semi_sync_slave_enabled=1;
2.3)从库修改my.cnf文件
vim /etc/my.cnf
[mysqld]
###:for replcation
rpl_semi_sync_slave_enabled=1
3.3)在从库中执行使用stop salve io_thread 、start slave io_thread;
stop slave io_thread;
start slave io_thread;
半同步复制监控命令:
show plugins;
show global status like '%semi%';
show global variables like '%semi%';
参考文献
https://blog.csdn.net/weixin_35555531/article/details/113948452