(5)数据复制(待更新)

2020-12-14  本文已影响0人  hedgehog1112

多台机器保存相同副本。使数据在地理位置上更接近用户,降低延迟,提高吞吐量、可用性。

概要:主从(同/异步)、复制滞后、多主、无主,

一、主与从节点

全同步全异步:使用相对广泛,提高吞吐量,但会滞后,用于节点多,分布地域广场景

半同步:一个从节点同步,其他从异步,同步从节点性能下降或不可用,其他从升级为同步模式。ps:主节点 +  同步从节点有最新副本

1、配置新从节点

    1)某时间点对主节点副本产生一致性快照,避免长时间锁db

    2)将快照拷贝到新从节点

    3)从连到主节点,并请求快照点后更改日志(mysql binlog coordinates)

    4)获得日志,追赶,继续处理主节点新变化,重复1-4

2、处理失效节点

从节点失效:崩溃后又重启,追赶主节点

主节点失效:切换节点,切换过程中问题:

    1)如用异步复制,失效前新主 没收到 原主 所有 数据,原主重新上线,写冲突。丢弃原主解决

    2)如其他系统用db内容,丢弃特别危险:从提升为主,新原主没完全同步,db用自增计数器,重新用原主分配的主键,恰好这些主键被redis引用。导致redis mysql不一致?如何解决

    3)脑裂,都认为自己是主,强制关闭一个或都关

    4)   设置何时的超时时间,来检测主节点失效。

3、复制日志

1、预写日志wal:追加写上去,1)对于日志结构存储引擎(sstable、lsm-tree),日志是主要存储方式,日志段在后台压缩 并 支持垃圾回收    2)对于覆盖写磁盘的btree,修改预先写日志,崩溃通过索引更新方式恢复。3)除了写日志,也可发给从节点(如数据格式不一样,从无法运行)

2、行的逻辑日志:binlog,复制与存储逻辑剥离,如一条事务更新多行,多条日志,后面一行记录,该事务已提交

3、触发器复制:不涉及任何代码,写事务,触发器记录到单独表中,开销高,更容易出错,高度灵活时用。

二、复制滞后问题

三、多主节点复制

四、无主节点复制

上一篇下一篇

猜你喜欢

热点阅读