Redis主从复制

| 阅读:673 发表时间:2018-06-11 00:19:25 Redis

Redis复制

本部分只介绍主从同步的简单实现,不介绍集群Cluster无中心的方式,下篇介绍。

Redis主从复制

在Redis中实现主从复制比较简单,只需要修改slave服务器的redis.conf中的slaveof。下面利用一个具体的实例展示主从同步。

主从复制示例

环境如下:

VM虚拟机,

Redis版本4.0.2 

master服务器:127.0.0.1 6379 

slave服务器:127.0.0.1 6399

补充:用到的批量替换命令sed -i "s/old_string/new_string/g" filename

sed -i "s/6379/6399/g" /etc/redis/6399.conf 批量替换配置文件里的端口

配置slave服务器:

vim /etc/redis/6399.conf 

# 设置master服务器IP和端口

slaveof 127.0.0.1 6379 

# slave是否只读,从服务器负责读操作,主服务器负责写操作,从而实现读写分离

slave-read-only yes

分别按照顺序启动mater(redis-server 6379.conf)和slave(redis-server 6399.conf)

在master中添加元素

redis1.png

在slave服务器中可以获得元素

redis2.png

主从复制如何交互

  • Slave服务启动,主动连接Master,并发送SYNC命令,请求初始化同步
  • Master收到SYNC后,执行BGSAVE命令生成RDB文件,并缓存该时间段内的写命令
  • Master完成RDB文件后,将其发送给所有Slave服务器,
  • Slave服务器接收到RDB文件后,删除内存中旧的缓存数据,并装载RDB文件
  • Master在发送完RDB后,即刻向所有Slave服务器发送缓存中的写命令
  • 至此初始化完成,后续进行增量同步

上述主从复制模式链是非常脆弱的,一旦Master服务器发生宕机,会导致无法向redis中读取或者写入数据,高可用性极差。