六,redis复制

来源:互联网 发布:程序员电脑桌面壁纸 编辑:程序博客网 时间:2024/06/06 05:05

redis复制

redis复制允许从服务器精确地从主服务器中获得复制的副本,是一种非常简单的使用和配置的主从复制。以下是redis复制的几个重要特点:

  • redis是使用异步的复制
  • 一个主服务器可以拥有多个从服务器
  • 从服务器可以接受其他从服务器的连接
  • redia复制是非阻塞的在主服务器中
  • redis在从服务器中也是非阻塞的
  • 复制适用于高可用,目的是能够能够拥有多个只读查询从服务器或者是减少数据冗余
  • 复制能够避免主服务器向磁盘中写入数据的消耗

当主服务器持久化功能关闭,复制的安全性?

在使用redis的复制功能的时候,强烈建议将主服务器中的持久化功能打开。例如由于延迟问题,应配置实例以避免在重新启动后自动重新启动。

为了更好的理解为什么将持久化功能关闭的主服务器配置成自动重启是危险的,下面就举一个例子:

  1. 我们将节点A当做是一个主服务器,当然它的持久化功能是被关闭的,节点B和节点C复制数据从节点A
  2. 如果节点A发生了故障崩溃,节点A关机重启了,因为节点A的持久化的功能是被关闭的,所以节点A在重启的时候是初始化的是一个空的数据库
  3. 节点B和C都从A复制数据,A节点的数据是空的,B和C复制完后,自己本身的数据遭到破坏。

redis复制是怎么进行工作

如果设置了一个slave,不管是在第一次链接还是重新链接master的时候,slave会发送一个同步命令 然后master开始后台保存,收集所有对修改数据的命令。当后台保存完成,master会将这个数据文件传送到slave,然后保存在磁盘,加载到内存中;master接着发送收集到的所有的修改数据的命令,这好比一个流命令,是redis协议本身来实现的。
你可以自己通过远程登录来进行尝试,当服务器在做一些工作并发送同步命令的时候链接到redis端口,你将会看到大量的数据传输,然后收到的每个命令会会显示在远程登录的会话中。
当master和slave因一些故障当机时,slaves会自动的重连,如果master收到多个slave的同步请求,master会执行一个后台保存,以确保所有的slaves都是正常的。
当master和slave能够维持连接,就会有一个完整的同步进行。

部分再同步

从redis2.8版本开始,当redis复制链路断开后,主从服务器能够继续进行复制不需要一个完整的数据再同步。

这功能得以工作是依靠在主服务器端创建基于内存的复制备份日志。主服务器和多个从服务器依靠复制偏移量和主运行ID协同工作,所以当连接断开,从服务器将会重新连接和请求主服务器继续复制。假设主运行ID依然是相同的,同时复制偏移量也是在备份日志中可以找到,复制便从之前断开的地方继续执行。

无盘复制

通常,完全重新同步需要在磁盘上创建RDB文件,然后从磁盘重新加载相同的RDB,以便向从属设备提供数据。Redis版本2.8.18是支持无盘复制的第一个版本。在此设置中,子进程直接将RDB通过线路发送到从属设备,而不使用磁盘作为中间存储。

配置

配置复制是很简单的,仅仅在slave的配置文件中增加类似下面这行的内容:

slaveof 192.168.1.1 6379

你可以更换master的ip地址或地址,或者,你可以使用slaveof命令,master就会启动和slave的同步。

0 0