数据同步:主从数据库如何保障数据一致性
redis具有高可靠性:1.数据尽量减少丢失(AOF和RDB来保障) 2.服务尽量减少中断.第二点通过增加冗余副本来保障。
读写分离:
减少保障数据一致性的开销。修改操作只会在主库上进行。
同步过程
1.psync包括了主库runID和复制进度offset。第一次采用全量复制协议(主库bgsave生成RDB文件),后面写操作会记录在repication buffer里面。
主从级联模式分担全量复制时主库的压力。生成RDB和传输RDB的压力分开在从库上
repl_backlog_size 一般设置为(写入- 网络传输) * 2
哨兵机制
哨兵机制-----解决主库发生故障面临的问题:1.主库真的挂了吗2.该选哪个从库作为主库?3.怎么把新主库的信息通知给从库和客户端
哨兵------特殊的Redis进程
1.监控:在运行时。不断给主从库发生ping命名,如果没有在规定时间得到回应,就判断其下线。但是有可能一个哨兵会误判,所以我们采用的是哨兵集群,大多数哨兵都认为主观下线,才判定改库客观下线
如何筛选新的主库
哨兵集群
pub/sub机制
主库上有个__sentinel__:hello的频道
哨兵如何知道从库的iP和端口号--------通过发送info命令,
哪个哨兵执行主从切换,像raft选举的过程一样