这里说的是一主多从,只能解决单点故障问题,无法解决容量和访问压力问题
主从复制的原理
主节点将同步文件(rdb)以某种方式(落盘然后发送或直接网络)发送到从节点,从节点如果有老数据就直接flush掉,再通过接收的文件同步
1、运行时配置
比如有三台redis实例:6379、6380、6381。以6379端口为master
在6380和6381上执行:
replicaof ip 6379
这样6380和6381就成为了6379的从节点
如果master挂了
通过replicaof none使某个从节点变为master
主节点是知道有哪些从节点的
2、配置文件配置
配置文件有很丰富的关于主从的配置
replicaof <masterip> <masterport>
设置master端的IP与端口信息
replica-read-only yes
从节点是否只读(默认yes)
replica-serve-stale-data yes
主从复制是通过发送同步文件到从节点,从节点接收到文件后flush老数据再同步新数据,那么在接收同步文件的过程中是否提供老数据的访问
repl-backlog-size 1mb
当一个slave要重连时,不需要完全同步的,执行局部同步就足够。设置的越大,失连的时间越长
min-slaves-to-write 3
min-slaves-max-lag 10
当一个master端的可用slave少于3个,延迟时间大于10秒时,不接收写操作
repl-diskless-sync no
是否使用落盘再发送到从节点同步
3、哨兵sentinel
前面如果master挂了,要通过人工重新选一个master。哨兵可以解决这一问题,哨兵也是一个redis进程
启动方式
1、redis-server 哨兵配置文件 --sentinel
2、redis-sentinel 哨兵配置文件
配置文件
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
sentinel monitor mymaster 127.0.0.1 6379 2
哨兵监控的redis实例 2是指如果有三台哨兵监控这一个redis示例,必须要有2台哨兵以上判定为失效才会自动故障迁移
down-after-milliseconds
选项指定了 Sentinel 认为服务器已经断线所需的毫秒数
重新选举master
当当前mster被判定为失效,sentinel会从从节点中选出一个作为master
sentinel如何知道master有哪些从节点
master是知道有哪些从节点的
选举mster时如何知道其他的sentinel
发布订阅(sentinel:hello)