Redis入门——Redis的主从复制

Posted zylhxd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis入门——Redis的主从复制相关的知识,希望对你有一定的参考价值。

Redis入门(八)——Redis的主从复制


目录

  • Redis主从复制简介
  • 如何配置
  • 测试复制
  • 复制原理
  • 哨兵模式

1.Redis主从复制简介

当系统的访问量越来越大,一台redis服务器已经支撑不了如此大的访问量时,为了解决这个问题,通常会采取的一种方式是主从架构Master/Slave,Master 以写为主,Slave 以读为主,Master 主节点更新后根据配置,自动同步到从机Slave 节点。这就是常说的redis的主从复制读写分离。redis的主从架构除了可以实现读写分离,在主机发生故障时还可以实现主从转换,从而保障系统具有一定的容灾能力。

Redis 的复制功能分为同步(sync)和命令传播(command propagate)两个操作:

  • 其中, 同步操作用于将从服务器的数据库状态更新至主服务器当前所处的数据库状态。
  • 而命令传播操作则用于在主服务器的数据库状态被修改, 导致主从服务器的数据库状态出现不一致时, 让主从服务器的数据库重新回到一致状态。

2.如何配置

配置文件修改:

如何开启多个redis服务:首先将redis.conf 配置文件复制三份,通过修改端口分别模拟三台Redis服务器。

开启守护进程:daemonize yes

Pid文件名字:设置pidfile。例如:/var/run/redis_6379.pid,此时当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/redis/run/redis_6379.pid 文件里面

指定端口号:三个端口号分别为6379、6380、6381。

指定log文件:配置logfile。三个文件中分别配置为,6379.log、,6380.log、6381.log。

指定dump文件名字:配置dbfilename

设置主从关系:

redis的主从关系在从机上配置。在从机上使用如下命令配置主从关系和查看主从关系:

配置主从:slaveof 主库IP 主库端口号
查看主从关系:info replicati
使当前数据库停止与其他数据库的同步,转成主数据库:SLAVEOF no one

从机:

技术图片技术图片

主机:

技术图片

注意:每次Slave与Master断开后都需要重新连接,除非配置redis.conf文件。

3.测试主从复制

全量复制:

从机执行 SLAVEOF 命令后,会将主节点所有的数据全部复制过来。每次通过SLAVEOF设置主从都会进行一次全量复制,后面就是增量复制。

增量复制:

主机写入新的数据,从机会复制一份。

技术图片

 读写分离:

下面我们在从机写入新的数据

技术图片

可见,此时从机是只读的。在redis的配置文件中, slave-read-only 的配置可配置从机的猪肚状态。若将该配置项设置为no,从机也可以写入数据。

技术图片

 此时,新写入到从机的数据有复制到主机吗?由图可见,从机的数据并没有复制到主机。

技术图片

主机宕机:

技术图片

 此时从机的主从状态如何:

技术图片

由此可见,主机宕机,从机仍为从机。若主机再次正常工作,此时原主机仍恢复主机的角色。若在主机回复之前我们在6380上执行SLAVEOF no one命令设置新的主机。带主机恢复后,此时主机并不会再次成为主机,而此时的主机还是6380。此时原主机仍然为主机,但是不再和其他两个机器有主从关系。

4.复制原理

slave启动成功连接到master后会发送一个sync命令。

Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。

全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步

但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

5.哨兵模式

在实际应用中若采取一主多从的模式,当主机宕机后,就没有主机的角色发挥作用,此时在主机无法工作的时候,有某个从机转换成主机,承担主机的工作,这就是哨兵模式。哨兵模式就是监控redis是否按照预期良好地运行(至少是保证主节点是存在的),若一台主机出现问题时,哨兵会自动将该主机下的某一个从机设置为新的主机,并让其他从机和新主机建立主从关系。

 如何配置:

在配置文件目录下新建 sentinel.conf 文件,名字绝不能错,然后配置相应内容。

 sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主

技术图片

 启动哨兵模式:

redis-sentinel /myredis/sentinel.conf 
上述目录依照各自的实际情况配置,可能目录不同

此时主机宕机,两个从机会进行投票,选出新的主机,(此时可从redis的日志中看到这些操作)。若主机再次恢复,它会成为新主机下的一个从机继续工作。

 主从复制的缺点

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

以上是关于Redis入门——Redis的主从复制的主要内容,如果未能解决你的问题,请参考以下文章

redis入门到精通系列:redis的高可用--主从复制详解

redis入门到精通系列:redis的高可用--主从复制详解

Redis从入门到深入-主从复制(22)

redis主从复制入门案例

Redis主从复制原理

详解Redis 主从复制及主从复制原理