Master-Slave
slaveof ip port
- redis复制是异步的,你也能配置当slave数量小于某个值,阻止master写入
- slave断开连接一段时间,slave能再次从master同步部分数据,需要配置缓冲的数据块大小
- 复制是自动的,不需要用户干预,slave会自动连接master并再次同步
masterauth
如果master是要授权访问,master会在开始复制同步进程之前,验证slave的密码,验证不通过拒绝slave请求
slave-serve-stale-data
当slave跟master失去连接,复制进程却还在运行,slave有两种方式运行
* 如果被设置yes slave将回复客户端的请求 但数据可能是过期的,如果是第一次同步 数据是空的
* 如果被设置no slave将对各种命令回复”sync with master”错误,除了info和slaveof
slave-read-only yes
配置slave是否接受写,写slave实例存储短暂数据是有用的,因为写到slave的数据,再同步master之后
会被删除. 2.6版本之后 slave-read-only默认是true
repl-diskless-sync no
复制同步策略: 磁盘(disk)或直接写(socket)
新的slave需要全量同步,rdb文件需要从master传输到slaves.这个传输有两种方式
* 磁盘:master创建新的把rdb文件写到磁盘的进程,之后父进程把rdf文件传送到slave
* socket: master创建直接写rdb文件到slave socket的进程,不需要通过磁盘
磁盘复制,salve会排成队列等待master生成rdb文件之后,直接传输
socket复制,一旦传输开始,新进来slave将排成队列,直到这个传输结束,才开始新的传输
socket复制,master在开始传输之前,会等待一段可以配置的时间,是为了等待多个slave到达,并行传输
repl-diskless-sync-deplay 5
socket复制,可以配置延迟等待时间,是为了等待多个slave到达,并行写,默认5秒
repl-ping-slave-period 10
slave向master发送心跳的时间,默认10秒
repl-timeout 60
超时时间
* slave同步数据时,连接maste超时
* slave连接master超时
* master向slave发送ack ping超时
repl-disable-tcp-nodelay no
设置yes redis将使用更小tcp包和更少宽带向slave发送数据,但是这个会造成延迟
设置no 延迟会减少,但会使用更多的宽带
repl-backlog-size 1mb
设置backlog数据大小, backlog是一个缓冲,当slave失去连接,master把数据写入到backlog
当slave重新连上,全量同步不需要,只需要同步backlog保存的数据
repl-backlog-ttl 3600
master不能连接slave超过配置的时间, backlog数据将会被清掉
slave-priority 100
salve的priority越低,有着越高的保证,当master挂断的时候,越有可能成为master
min-slaves-to-write 3
如果slave个数少于配置的个数,master将不会接受写
min-slaves-max-lag 10
和min-slaves-to-writes结合使用,指定单位时间内
slave-announce-ip 5.5.5.5
指定slave的ip
slave-announce-port 1234
指定slave的端口