Redis学习(十一)主从复制,哨兵模式

主从复制

准备工作
复制三分/opt/redis-5.0.8目录下的redis.conf配置文件至/usr/local/bin/dsjconfig下

cp /opt/redis-5.0.8/redis.conf /usr/local/bin/dsjconfig/redis79.conf
cp /opt/redis-5.0.8/redis.conf /usr/local/bin/dsjconfig/redis80.conf
cp /opt/redis-5.0.8/redis.conf /usr/local/bin/dsjconfig/redis81.conf

79作为主机,80,81作为从机。其中,通过80通过修改配置文件成为从机,81通过命令成为从机,看看两者的不同。
要修改的配置信息如下:

  • 79
    port 6379
    pidfile /var/run/redis_6379.pid
    logfile “6379.log”
    daemonize yes
    dbfilename dump6379.rdb
  • 80
    port 6380
    pidfile /var/run/redis_6380.pid
    logfile “680.log”
    replicaof 127.0.0.1 6379
    daemonize yes
    dbfilename dump6380.rdb
  • 81
    port 6381
    pidfile /var/run/redis_6381.pid
    logfile “6381.log”
    daemonize yes
    dbfilename dump6381.rdb

81通过命令slaveof 127.0.0.1 6379成为从机。
查看他们的状态

  • 79
    Redis学习(十一)主从复制,哨兵模式_第1张图片
  • 80
    Redis学习(十一)主从复制,哨兵模式_第2张图片
  • 81
    Redis学习(十一)主从复制,哨兵模式_第3张图片
    主机主要负责写,从机主要负责读,从机不支持写入操作。
    在这里插入图片描述
    Redis学习(十一)主从复制,哨兵模式_第4张图片
    在这里插入图片描述
    在这里插入图片描述
    测试当从机断开连接再接入时,是否有数据丢失。
    在这里插入图片描述
    Redis学习(十一)主从复制,哨兵模式_第5张图片
    Redis学习(十一)主从复制,哨兵模式_第6张图片
    测试发现,80修改配置成为从机,再次连接时,可以读取到断开连接期间写入的数据;81通过命令成为从机,断开连接后,就失去了主机,无法读取主机数据,除非再次通过命令成为从机,就可以读取数据了。

测试主机断开连接,从机是否能读取数据。
Redis学习(十一)主从复制,哨兵模式_第7张图片
Redis学习(十一)主从复制,哨兵模式_第8张图片
Redis学习(十一)主从复制,哨兵模式_第9张图片
测试发现,主机断开时,从机仍然可以读取数据,不可写入数据,查看信息发现主机状态为down。当主机再次连接时,查看信息发现主机状态为up,主机写入数据,从机仍然可以读取。

主从复制原理

  • 全量复制:
    slave启动成功连接到master后会发送一个sync命令,master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  • 增量复制:
    master继续将新的所有收集到的修改命令依次传给slave,完成同步。

你可能感兴趣的:(Redis)