redis的主从复制

集群的作用:

1 主从备份,防止主机宕机

2 读写分离,分担master的任务

3 任务分离,如从服务器分担备份和计算工作。


主从通信过程:

redis的主从复制_第1张图片


1 slave需要同步的时候,slave会发起sync请求。

2 master得到请求,会dump出rdb文件传给slave,slave拿到rdb文件塞到自己内存里面

3如果在上述过程中,有新的命令过来,会缓冲在aof内存队列里面

4如果slave的rdb文件里面的数据都塞到自己内存里面,则接下来会同步缓冲的aof队列的数据。

   


三台redis的主从复制

同时启动两个Redis服务器,可以考虑在同一台机器上启动两个Redis服务器,分别监听不同的端口,如6379和6380

master 6379端口

salve    6380端口


修改salve的redis的conf文件

1  port 6380   修改端口 

2 pidfile /var/run/redis6380.pid

3 dbfilename dump6380.rdb  rdb导出文件名改为dump6380.rdb,以免跟master重名,因为他们dump的rdb文件在一个目录下面

4 slaveof localhost 6379   设置这个slave的master服务器的ip和端口   

5 slave-read-only yes  从服务器为只读


启动master ,启动slave





1  连接master的客户端,在master 塞入键值对

 

  

2 连接slave客户端,能在slave得到该键值对的值,说明slave同步master的数据啦 





3 如果连接slave客户端,写入键值对,是会报错的,因为slave-read-only yes  从服务器为只读



redis的主从复制就做完了。

总结redis的主从复制有以下几点注意

master配置

1 关闭rdb快照

2 开启aof

3 非必选,配置密码 requirepass foobared  如果客户端连接master需要 输入 auth  foobared  

slave配置

1 声明slaveof

2 某一个slave打开rdb功能

3 配置是否只读

4 非必选,配置密码  masterauth  foobared  


主从复制的缺陷

每次slave断开后,再次连接master,都要master全部dump出来rdb,在aof,就是同步过程要重新执行一遍。所以多台slave不要一下子都启动起来,否则master可能io飙升。








你可能感兴趣的:(redis,主从复制)