综述:主从复制提高了1 读以及2 读故障恢复能力。带来了1 写以及2 主从不一致风险
主从复制(冗余):
什么是主从复制(冗余):What
把数据存储到多个节点上,
一个节点是主节点:全权负责数据写操作,并提供变更记录供从节点读取
其余节点是从节点:仅提供数据读取能力,并用作主节点挂掉的活备,开启线程监听主节点变更信息并更新本节点数据
为什么使用主从复制(冗余):Why
优势:
1 提升数据读性能,增加更多从节点进行水平扩展
2 提高故障恢复能力,主节点出现故障
读:无影响,从节点依旧可以提供读能力(数据有一定延迟)
写:指派一个从节点升级为主节点,因为从节点与主节点存储相同的数据(中间有一定时间的不可写间隔,比不用主从,需要重新导数据到新节点再把新节点作为主要快很多)
缺点:
1 主节点写压力增加,随着从节点增多,主节点需要向更多的从节点同步数据。主节点单点写成为瓶颈。
栗子:MySQL使用主从架构提升读能力,读写分离,降低主节点写压力,但是从节点超过10个之后写压力变大
2 主从数据不一致(主从延迟)
读:客户端读两次请求不同节点 读到的结果不同。最差情况下无法读取刚刚变更的值,客户感到迷惑
故障转移:主节点还有部分数据未同步到从节点就故障了,从节点上升为主节点后,未同步的数据丢失
如何更好的使用使用主从复制(冗余):How
主节点指派:尽量选择自动指派,1配置简单 2 当主节点出错时,自动指派新的主节点,减少停写时间
1 手动指派
2 自动指派
要保证主节点故障后,不影响其他节点的读能力