美文网首页
Redis 主从同步

Redis 主从同步

作者: Alexander_Zz | 来源:发表于2019-03-28 17:48 被阅读0次

    • 同步过程

    Redis 支持主从复制分为全量同步和增量同步,首次同步是全量同步,主从同步可以让从服务器从 主服务器备份数据,而且从服务器还可与有从服务器,即另外一台 redis 服务器可以从一台从服务器 进行数据同步,redis 的主从同步是非阻塞的,其收到从服务器的 sync(2.8 版本之前是 PSYNC)命令会 fork 一个子进程在后台执行 bgsave 命令,并将新写入的数据写入到一个缓冲区里面,bgsave 执行完成 之后并生成的将 RDB 文件发送给客户端,客户端将收到后的 RDB 文件载入自己的内存,然后主 redis 将缓冲区的内容在全部发送给从 redis,之后的同步从服务器会发送一个 offset 的位置(等同于 MySQL 的 binlog 的位置)给主服务器,主服务器检查后位置没有错误将此位置之后的数据包括写在缓冲区的 积压数据发送给 redis 从服务器,从服务器将主服务器发送的挤压数据写入内存,这样一次完整的数 据同步,再之后再同步的时候从服务器只要发送当前的 offset 位 置给主服务器,然后主服务器根据响 应的位置将之后的数据发送给从服务器保存到其内存即可。 Redis 全量复制一般发生在 Slave 初始化阶段,这时 Slave 需要将 Master 上的所有数据都复制一份。
    具体步骤如下:
    1)从服务器连接主服务器,发送 SYNC 命令;
    2)主服务器接收到 SYNC 命名后,开始执行 BGSAVE 命令生成 RDB 快照文件并使用缓冲区记录此后执 行的所有写命令;
    3)主服务器 BGSAVE 执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命 令;
    4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
    5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
    6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
    7)后期同步会先发送自己 slave_repl_offset 位置,只同步新增加的数据,不再全量同步。

    • Slave 主要配置

    Redis Slave 也要开启持久化并设置和 master 同样的连接密码,因为后期 slave 会有提升为 master 的可 能,Slave 端切换 master 同步后会丢失之前的所有数据。
    一旦某个 Slave 成为一个 master 的 slave,Redis Slave 服务会清空当前 redis 服务器上的所有数据并将 master 的数据导入到自己的内存,但是断开同步关系后不会删除当前已经同步过的数据。

    • 命令行配置
    # redis 4.x 版本中此命令为 SLAVEOF
    192.168.7.104:6379> REPLICAOF 192.168.7.103 6379 
    OK 
    192.168.7.104:6379> CONFIG SET masterauth 123456 
    OK 
    
    • 当前 slave 状态


      image.png
    • 保存配置到 redis.conf
    ~]# vim /usr/local/redis/etc/redis.conf
     replicaof 192.168.7.103 6379 
     masterauth 123456 #master 如果密码需要设置 
    
    • 重启 slave 验证


      image.png

    相关文章

      网友评论

          本文标题:Redis 主从同步

          本文链接:https://www.haomeiwen.com/subject/bulavqtx.html