Redis主从复制的配置以及全量复制和部分复制讲解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/IT_10/article/details/89424422

主配置

  1 daemonize yes
  2 pidfile /var/run/redis-6382.pid
  3 port 6382
  4 logfile "/usr/local/redis/redis-5.0.4/data/6382.log"
  5 dbfilename dump-6382.rdb
  6 dir /usr/local/redis/redis-5.0.4/data/
  7 slave-read-only yes

从配置

  1 daemonize yes
  2 pidfile /var/run/redis-6383.pid
  3 port 6383
  4 logfile "/usr/local/redis/redis-5.0.4/data/6383.log"
  5 dbfilename dump-6383.rdb
  6 dir /usr/local/redis/redis-5.0.4/data/
  7 slaveof 127.0.0.1 6382

开启主从redis

redis-server redis-6382.conf

查看是否开启成功

ps -aux | grep redis

在这里插入图片描述
开启客户端redis

redis-cli -p 6382

查看replication
在这里插入图片描述
在这里插入图片描述
查看run_id(标识作用)

redis-cli -p 6382 info server | grep run

全量复制

对于一个存储了很多信息的master,slave需要同步连接master之前的数据,以及连接当前的数据,就用到全量复制。
1.psyns ? -1 第一个参数表示run_id 第二个参数表示偏移量,第一次不知道两个值,所以传?和-1
2.master收到slave的消息后,把run_id和偏移量传给slave
3.slave报错master的基本信息
4.master生成快照,bgsave是触发redis生成快照的方式之一
5.redis的buffer缓冲区中保存了最新数据
在这里插入图片描述

部分复制

如果slave突然断开连接,为保证这段时间master中的数据不会再slave中丢失,当slave再次连接的时候,使用部分复制实现数据同步(虽然可以使用全量复制,但是全量复制开销大)
下图中的第四步,slave把自己的run_id和偏移量给master,如果master发现偏移量在自己的buffer(队列)内,则返回contiune,把buffer中的数据传给slave,如果超出了buffer,为了保证数据不丢失,则只能使用全量复制。这样,slave和master数据就能达到同步。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/IT_10/article/details/89424422