一、redis主从复制的过程
当设置好slave服务器后,slave会创建和master的链接,而后发送sync命令。不管是第一次同步创建的链接仍是链接断开后的从新链接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。后台进程完成写文件后,master就发送文件给slave,slave将文件保存到磁盘上,而后加载到内存恢复数据库快照到slave上。接着master就会把缓存的命令转发给slave。并且后续master收到的写命令都会经过开始创建的链接发送给slave。从master到slave的同步数据的命令和从client发送的命令使用相同的协议格式。当master和slave的链接断开时slave能够自动从新创建链接。若是master同时收到多个slave发来的同步链接命令,只会使用启动一个进程来写数据库镜像,而后发送给全部slave。 二、redis主从复制的特色
1.master能够有多个slave
2.除了多个slave连到相同的master外,slave也能够链接其余slave造成图状结构
3.主从复制不会阻塞master。也就是说当一个或多个slave与master进行初次同步数据时,master能够继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求。
4.主从复制能够用来提升系统的可伸缩性,咱们能够用多个slave 专门用于client的读请求,好比sort操做可使用slave来处理。也能够用来作简单的数据冗余
5.能够在master禁用数据持久化,只须要注释掉master 配置文件中的全部save配置,而后只在slave上配置数据持久化。web
在master/slave上分别安装redis,配置slave服务器很简单,复制master上的配置文件redis.conf到slave目录(/usr/local/webserver/redis-2.4.4/etc/)。
以后在配置文件中添加以下配置便可
slaveof 192.168.52.199 6379 #指定master的ip和端口
#masterauth redis redis
测试:
一、Master端操做:
[root@lx_web_s1 etc]# /usr/local/webserver/redis-2.4.4/bin/redis-cli -a test
redis 127.0.0.1:6379> set k_m master
OK
redis 127.0.0.1:6379>二、slave端操做:
[root@study_web_t2 redis-2.4.4]# /usr/local/webserver/redis-2.4.4bin/redis-cli -a test
redis 127.0.0.1:6379> get k_m
"master"数据库