1.什么是Redis主从复制?
将一台Redis主服务器的数据定期同步复制到从Redis从服务器中来保证数据的一致性。
2.为什么要主从复制?
单机的Redis存在的问题,容量瓶颈,机器故障,QPS瓶颈。(QPS:Redis:读11万次/秒,写8万次/秒)
一台服务器已经满足不了大型网站的需求的。
我们对读写能力进行扩展,采用读写分离的方式解决性能的瓶颈,运行从服务器接收主服务器的数据,通过网络准实时更新。主服务器负责写功能,从服务负责读功能。
3.怎么去实现主从复制?
主从复制实现方式:
命令方式
slaveof ip port #实现
slaveof no one #取消
配置方式:
slaveof ip port
slave-read-only yes
配置主节点文件
端口号:6380
rdb文件名:dump-6380.rdb
rdb文件存储目录: ./data
配置从节点文件
端口:6381
rdb文件名:dump-6381.rdb
rdb文件存储目录:./data
配置所属主节点: slaveof 127.0.0.1 6380
主从复制常见问题和优化:
1.读写分离:读流量分摊到从节点。
可能问题:
复制数据延迟,读到过期数据,从节点故障。
2.主从配置不一致
可能问题:
maxmemory不一致,丢失数据
数据结构优化参数(hash-max-ziplist-entries),内存不一致
3.规避全量复制
第一次全量复制
节点运行id不匹配
复制积压缓冲区不足
4.规避复制风暴
复制风暴:主节点重启后,多个从节点会从主节点复制数据。
复制拓扑:
定义服务器和数据的复本之间的关系,并阐明决定数据在服务器之间的流动方式的逻辑。
单主节点复制风暴
问题:主节点重启,多从节点复制
解决:更换复制拓扑
单机器复制风暴
问题:机器宕机后,大量全量复制
解决:主节点分散多机器