|
一、原理
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个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上配置数据持久化。
下面介绍下主从复制的过程
1、当设置好slave服务器后,slave会建立和master的连接,然后发送sync命令。
2、无论是第一次同步建立的连接还是连接断开后的重新连接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存起来。
3、后台进程完成写文件 后,master就发送文件给slave,slave将文件保存到磁盘上,然后加载到内存恢复数据库快照到slave上。
4、接着master就会把缓存的命令转发给slave。而且后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从client发送的命令使用相同的协议格式。、
5、当master和slave的连接断开时slave可以自动重新建立连接。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。
二、配置(主从之读写分离)
1、下面我演示下怎样在多台服务器上进行Redis数据主从复制。
IP:172.16.171.100,master服务器
IP:172.16.171.110,slave服务器
IP:172.16.171.120,slave服务器
master服务关闭rdb,开启aof,保证服务异常重启后数据最新。可读写;
slave服务全关闭,只可读。
当master服务异常时,影响整个redis。
2、单台redis会遇到单点故障的问题,为了解决redis的高可用,一个master带一个slave,而slave又带了一个slave,这样的好处是,当master故障后,直接把slaver1改为master,其他的配置不需要修改,服务又可以正常使用。
此时我们想实现的目标已经实现,但是发现在两个slave上无法插入数据,当master故障后,需要在slave1上首先执行slaveof no one命令,再次执行info Replication时,它已经转为master了,此时slave12不受影响。
|
|
|
|
|
|
|