redis主从复制

一、redis主从复制原理

      在Slave启动并连接到Master后,将主动发送SYNC命令。此后Master将启动后台存盘进程,将数据库快照保存到文件中,同时收集新的写命令 (增、删、改)并缓存起来,在后台进程执行写文件。完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存恢复数据库快照到slave上。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。从master到slave的同步数据的命令和从 client发送的命令使用相同的协议格式。如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。如果master同时收到多个slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。
 
二、redis主从复制的特点
 
1、同一个Master可同步多个Slaves。
2、Slave可接受其它Slaves的连接和同步请求,有效分载Master的同步压力。因此可将Redis的Replication架构视为图结构。
3、Master Server以非阻塞的方式为Slaves提供服务。在Master-Slave同步期间,客户端仍可提交查询或修改请求。
4、Slave Server以非阻塞的方式完成数据同步,在首次同步数据时会阻塞不能处理客户端请求。之后在同步期间,客户端提交查询请求,Slave Server返回同步之前的数据。
5、主从复制可以用来提高系统的可伸缩性, 可将多个Slave服务器专门提供只读请求,如可用来做sort操作或做简单的数据冗余。
6、可禁用Master数据持久化操作,数据持久化操作交给Slaves完成,避免在Master中要有独立的进程来完成此操作。只需要注释掉master 配置文件中的所有save配置,然后只在slave上配置数据持久化。
 
三、配置主从复制
 
示例:
master:10.142.130.81  slave:10.142.130.82
1、在两台服务器分别安装redis并启动,端口使用6379。
2、在10.142.130.82上执行命令:redis-cli slaveof 10.142.130.81 6379
上面的配置是临时生效的,如果slave重启,他们之间的复制关系将终止。如果希望长期保证这两个服务器之间的Replication关系,需要在slave服务器配置:
编辑redis.conf配置文件将
  # slaveof <masterip> <masterport>
      改为
     
slaveof 10.142.130.81 6379

posted on 2015-04-22 11:11  K‘e0llm  阅读(158)  评论(0编辑  收藏  举报

导航