mysql 的主从

版权声明:本站所提供的文章资讯、软件资源、素材源码等内容均为本作者提供、网友推荐、互联网整理而来(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考,如有侵犯您的版权,请联系我,本作者将在三个工作日内改正。 https://blog.csdn.net/weixin_42323802/article/details/85838007

1、主从复制主要通过三个线程完成

1、master 节点 的binlog dump 线程,复制binlog到slave节点
2、slave节点的IO线程,读取master 节点发送的binlog ,写入到中继日志(Relay Log)中;
3、SQL线程,读取中继日志中的内容

3

2、主从读一致性
由于分布式网络等原因,主从数据异步同步存在时间差,要保持正主从读的一致性,怎么做?

两种方式
1、单读slave 。通过user的 ID 由路由到一个slave ,保证user 多次请求在一个slave ,这样就能保证数据的一致性,当slave 宕了以后,可以更换一个slave就ok 了。
2、
业务场景区分,读个人数据读取主库,读取他人的数据读取从库。
监控主从数据同步的速度,N min之前读取主库,读取从库
跨地域,时间区间不一致,在同一主库即可;

3、多主复制问题以及冲突处理
问题主要源于多个主库都可以写入,而多个主库的数据源是一样的,并且跨集群存在不可预估的网络延迟,比如自增主键的冲突、写入数据的冲突、数据库唯一约束的冲突等。

1、同步写
等待所有主库 都同步以后,返回结果;基本还不如一主多从
2、避免冲突
同一个维度的数据只在一个中心写入,但是其他中心无法分担 写的流量削峰;
3、冲突检测-处理
时间戳处理
只检测处理,检测出冲突交给应用处理;

  • 读检测
    写数据的冲突已经存储了。
    数据被读取的时候,不同的数据的版本会一起返回给应用,然后应用可以自己选择或者反馈给用户来选择想提交的数据。
  • 写检测
    通过检测复制日志中的数据冲突,调一个线程来解决

4、拓扑模型

1、环形
2、星型
3、ALL-to-ALL

猜你喜欢

转载自blog.csdn.net/weixin_42323802/article/details/85838007