当前位置: 首页>后端>正文

数据库中间件同步策略

mysqldump 链接 https://blog.csdn.net/Hehuyi_In/article/details/90045274

mysql> flush tables with read lock; #给主库加上读锁
mysql> show master status; #查看Bin-log状态
mysql>unlock tables; #给主库解锁

https://blog.csdn.net/w_124816/article/details/120798765 配置主从博客

show master STATUS 主从同步的时候binlog的文件是pos位置
mysql。默认是异步同步
解决同步sql执行失败的问题
stop slave;
set global sql_slave_skip_counter = 1;
start slave;
mysql同步 记住两个log binlog和relaylog(中继日志) 三个线程master1个binlog dump和slave2个io和sql

mysql主从模式 有主从 多主一从等等
这里在做主从读写分离是用qihoo的atlas。在mysql做故障转移是用mha。对数据库主备节点做故障切换则是用keepalived

异步同步:不保证数据准确极端情况如果主库的bin log丢失会导致数据缺失
半同步复制 :至少有一个slave收到binlog并且更新到relay log中 才会有客户的反馈事务成功
主库和从库都要启用半同步复制才会进行半同步复制功能,否则主库会还原为默
认的异步复制
当主库等待超时时,也会还原为默认的异步复制。当至少有一个从库赶上时,主
会恢复到半同步复制
同步复制:所有从库都ready之后客户端才收到响应
异步复制不需要维持长链接
mysql 高可用模式。
MHA Manager(管理节点)和MHA Node(数据节点)
管理节点可以单独部署也可以不熟到slave上。 Node节点部署到每个mysql服务中
!!最佳实践 mha+半同步复制+读写分离+keepalived

ZooKeeper = 文件系统 + 监听通知机制
zk是基于ZAB协议 设计的一套主从同步的集群模式保证主从数据一致性
他有两个模式 原子广播模式和崩溃恢复模式
他遵循 如果leader事务已经进行提交那么数据就有效 事务没提交就无效

事务提交流程是客服端发送请求leader把数据发送到follower然后落盘在ack给leader然后leader进行提交落盘然后commit到follower进行zxid数据提交 如果失败了 那么就按照如果事务提交了就成功了 leader失败了 在选举的时候肯定可以选到zxid大的事物当从节点保证数据不丢失

znode大小不能超过1M
有4种类型
持久化的、持久化有序的、临时的、临时有序的
Watcher机制:如下
注册 watcher 有 3 种方式,getData、exists、getChildren。
可以给znode添加watch监听,比如可以监听节点数据变更、节点删除、子节点状态变更等事件
Watcher 特性:
当数据发生变化的时候, Zookeeper 会产生一个 Watcher 事件,并且会发送到客户端。但是客户端只会收到一次通知。如果后续这个节点再次发生变化,那么之前设置 Watcher 的客户端不会再次收到消息。(Watcher 是一次性的操作)。可以通过循环监听去达到永久监听效果。
zkclient会在监听的时候创建两个线程一个用来做connect连接把需要监听的内容和ip还有端口传递到zkserver然后zkserver通知到 第二个listen线程

基于Watcher可以实现
发布订阅: 一堆服务创建一个节点数据然后监听 变化就更新自己 可以做到数据同步

分布式锁:两种抢一个节点的会出现羊群效应,可以按照顺序节点拿到这个节点下所有数据比
对。 自己是不是最小的 是最小的就拿到锁 逐级监听所以只会监听上一个节点。 不会有羊群效应 如果中间的节点删除了 下面的就会感知到然后继续监听被删除上面的节点

服务负载均衡
主要存服务的节点然后调用的时候zk只负责提供服务器ip端口数据不负责转发
由客户端自己实现负载均衡 nginx是做转发 zk不做转发

命名
就是利用zk唯一全局路径然后找到对应的节点找到节点下面的数据可以做名字可以指向集群的ip集合或者其他需要统一命名的逻辑规则

分布式协调/通知
可以在某个路径下创建各个服务的节点然后把服务进度存到节点数据中,只要监听这个总节点就知道下面节点数据进行变化然后,都达到百分百就说明子系统实现了全部就绪

集群管理
在某一个节点下面服务器去添加节点这个节点是临时的如果需要master就可以用分布式锁那个原理 创建唯一节点或者是 逐级观察

zk有高低分别都是32位。高位是纪元 交epoch 低位32是zxid事务id都是自增的
zk写会向follower同步数据超过半数 返回才会响应客户端
zookeeper选举策略投票机制先比对 他们年代epoch然后是zxid,然后是myid 为了保证数据是最新的


https://www.xamrdz.com/backend/3cg1933371.html

相关文章: