码迷,mamicode.com
首页 > 其他好文 > 详细

Redis主从复制

时间:2016-04-29 00:13:20      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

一、Redis的Replication

    优点:读写分离  

    下面的列表清楚的解释了Redis Replication的特点和优势。
    1). 同一个Master可以同步多个Slaves。
    2). Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。因此我们可以将Redis的Replication架构视为图结构。
    3). Master Server是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。
    4). Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。
    5). 为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成。即便如此,系统的伸缩性还是得到了很大的提高。
    6). Master可以将数据保存操作交给Slaves完成,从而避免了在Master中要有独立的进程来完成此操作。
    
二、Replication的工作原理

    在Slave启动并连接到Master之后,它将主动发送一个SYNC命令。此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。
    如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,一次完全同步将被自动执行。

技术分享

 master保存RDB文件是通过一个子进程进行的,所以master依然可以处理客户端请求而不被阻塞,但这也导致了在保存RDB文件期间,“键空间”可能发生变化(譬如接收到一个客户端请求,执行"set name diaocow"命令),因此为了保证数据同步的一致性,master会在保存RDB文件期间,把接受到的这些可能变更数据库“键空间”的命令保存下来,然后放到每个slave的回复列表中,当RDB文件发送完master会发送这些回复列表中的内容,并且在这之后,如果数据库发生变更,master依然会把变更的命令追加到回复列表发送给slave,这样就可以保证master和slave数据的一致性!

三、如何配置Replication

1、临时

在Slave_B服务器上执行命令:
slaveof 127.0.0.1 6379
上面的方式只是保证了在执行slaveof命令之后,B成为了A的slave,一旦服务(B)重新启动之后,他们之间的复制关系将终止。
2、永久:
修改slave的redis.conf
slaveof ip port   --设置master的ip和端口
 
如果主数据库设置了密码,需要在从数据的配置文件中通过masterauth参数设置主数据库的密码。

四、redis主从复制注意事项

如果你使用主从复制,那么要确保master激活了持久化,或者 确保它不会在宕掉后自动重启。因为slave是master的完整备份,因此如果master通过一个空数据集重启,slave也会被清掉。

参考:http://www.cnblogs.com/stephen-liu74/archive/2012/02/23/2364717.html
其他资料:http://blog.csdn.net/pi9nc/article/details/17735653

Redis主从复制

标签:

原文地址:http://www.cnblogs.com/sysout/p/5444702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!