redis学习计划(十三)复制(Replication)

  复制是redis提供的一个功能,可以让一台从服务器成为主服务器的精确复制品。一台从服务器,不光可以是从服务器,还可以在配置出自己的从服务器,最终拓扑出一个树形结构。其实可以拓扑成网状结构,但是从服务器一般都是开启只读功能,如果从服务器也接受写入操作,容易造成数据不同步。我能想到的应用场景,1.主从模式,从服务器开启持久化。提高主机的速度,持久化的操作交给从服务器。2.主从模式,主服务负责写入操作,将读取的操作都放到从服务器上。

  复制功能的运作流程是,当建立一个从服务器的时候,从服务器给主服务器发送一个sync请求同步。主服务器接受到sync以后执行bgsave。在bgsave期间的命令,主服务器会写入缓冲区当中,执行完bgsave将生成的.rdb文件发送给从服务器,从服务器将.rdb加载入内存当中。之后主服务器在将缓冲区内的数据以redis的协议发送给从服务器。  

  复制模式主要分为两种,一种是硬盘模式,一种是非硬盘模式(套接字模式)。

  对于复制的配置redis.conf中大约有10来个配置项,来进行复制的相关配置。涉及到了复制的主机、复制模式、从服务器是否开启只读、当主服务down掉以后,哪个从服务器变成主服务等。

1.slaveof <masterip> <masterport>

配置mater的ip与端口。

2.masterauth <master-password>

如果master有密码保护,有必要在开始复制同步进程之前配置可用密码,否则master会拒绝slave请求。

3.slave-serve-stale-data yes

当salve与mater丢失链接,或者正在同步的时候,有两种选择:

如果 slave-serve-stale-data 设置为yes,slave将会响应client请求。数据可能是过时或者没有数据。

如果 slave-serve-stale-data 设置为no,slave将会回复 error“sync with master in progress”。

4.slave-read-only yes

设置从服务器为只读。只读slaves并不是有意设计成暴露给不受信的互联网客户端的。只是一个保护层用于防止误操作。

只读slaves依旧可以执行默认的管理命令。例如config,debug等。你可以使用rename-conmmad来隐藏管理命令。

5.repl-diskless-sync no

指定复制策略,策略有两种形式,一种是硬盘模式,一种是套接字模式。配置为no为套接字模式。

硬盘形式:master 创建一个新的进行将rdb写到磁盘上,稍后这个文件被父进程传输给slaves。

无硬盘形式:master 创建一个新进程将rdb文件写入到slave套接字。不需要用到硬盘。

6.repl-diskless-sync-delay 5

套接字模式复制策略的等待时长,单位是秒。等待是想汇集更多的slave。

7.repl-ping-slave-period 10

slaves在预定的时间间隔内发送ping给server。可以通过repl_ping_slave_period选项设置。默认是10秒。可以理解为心跳。

8.repl-timeout 60

与repl_ping_slave_period配合使用确认超时。

9.repl-disable-tcp-nodelay no

10.repl-backlog-size 1mb

slave与master断开后数据写入的存储空间大小

11.repl-backlog-ttl 3600

slave 在 3600秒内不与主站恢复链接,则释放空间。

12.slave-priority 100

从站优先级,默认100,当主站宕机以后,哨兵会根据从站的配置,来确定把谁提升为主站。

13.min-slaves-to-write 3

   min-slaves-max-lag 10

主站可以在从站少于3个或者延迟高于10的时候停止写入操作。

posted @ 2017-08-02 16:50  kobe_lzq  阅读(520)  评论(0编辑  收藏  举报