一、简介
1、应对问题:机器故障,存储容量瓶颈,QPS瓶颈
2、模式:一主一从,一主多从,一个master可以有多个slave,一个slave只能跟从一个maskter,数据单向传输,只能从master传向slave
3、应用场景:读写分离,数据副本,数据拓展,流量分摊等
二、流程
1、从库连接主库:slaveof ip port
2、从库发送sync信号:sync
3、主库收到sync信号,会立即触发bgsave,再讲将RDB文件发送给从库,从库收到RDB文件并加载
4、此后,主库会陆续将产生的新的操作备份并发送给从库,从库收到即加载
5、至此,即完成了主从复制的搭建
6、所有主从相关的信息在info中都可以查找到,无论重启哪个节点,主从关系都会保留
7、若主从关系断开,从库的数据不会受损,重新连接,并发送psync信号:psync
8、主库收到psync信号,会将从库缺失操作记录发送给从库,从库收到即可快速恢复
9、主库应该要开启持久化存储,否则在主库重启的时候,会造成所有数据丢失
10、从库断开主从关系:slaveof no one
11、查看信息:info replication
三、主库配置
1、min-slaves-to-write 1:从库少于1个时,主库拒绝写操作
2、min-slaves-max-lag 3:所有从库的延迟都大于等于3秒时,主库拒绝写操作
四、从库配置
1、slaveof 127.0.0.1 6379:连接的主库地址
2、slave-read-only yes:从库是否只读
五、常见问题
1、复制数据延迟,从库故障:通过配置保障
2、主从库配置不一致可能导致数据丢失:统一配置,比如maxmemory等
3、主从库数据结构优化方案不一致可能导致数据丢失:统一优化方案
4、尽量规避全量复制:首次连接的全量复制不可避免,后续需要全量复制的情况尽量在低峰时段进行
5、重启节点会重置运行id
6、复制挤压缓冲区不足:增大复制缓冲区大小 => rel_backlog_size
7、规避复制风暴