美文网首页
redis的主从复制

redis的主从复制

作者: cammsia | 来源:发表于2016-09-21 09:21 被阅读43次

    如何主从复制

    向redis服务器发送下面的命令
    127.0.0.1:12345> slaveof 127.0.0.1:6379
    那么127.0.0.1:12345将成为127.0.0.1:6379的从服务器,也就是说127.0.0.1:6379是127.0.0.1:12345的主服务器。
    redis和mysql一样,也是异步复制。

    redis 2.8之前得复制功能

    1. 复制方式
    • 同步(sync)
      从服务器启动时执行同步操作。
    • 命令传播(command propagate)
      主服务器有操作命令时会广播给从服务器;然后从服务器在本地执行操作命令。
    1. 同步
    1. 主从服务器断开后的恢复


    redis 2.8以后恢复功能

    psync代替了sync命令来执行复制时的同步操作。

    1. sync的同步模式
    • 完整重同步
      用于初次复制情况,跟sync命令执行步骤一样。
    • 部分重同步
      用于断线后重复制情况。
    1. 部分重同步的实现方式
      • 复制偏移量
        主从服务器都会维护一个复制偏移量。主服务器每次向从服务器传播N个字节数据时,就将自己的复制偏移量的值加上N;从服务器每次收到主服务器传播来的N个字节的数据库,就将自己的复制偏移量的值加上N。
    • 复制积压缓冲区
      积压缓存区是主服务器维护的一个固定长度先进先出队列,默认大小为1M。当主服务器进行命令传播时,它不仅会将写命令发送给所有的服务器,还会将命令入队复制到积压缓冲区,复制缓冲区会记录每个字节相应的复制偏移量。
      假如从服务器的offset在积压缓冲区中,就执行部分重同步;假如offset不在积压缓冲区中,则进行完整重同步。
      复制积压缓冲区的大小= 从服务器恢复的秒数 * 每秒钟写的字节数大小

    • 服务器运行ID
      每个redis服务器都有会自己的运行ID,运行ID在服务器启动时自动生成,由40个随机的16进制字符组成。当从服务器对主服务器进行初次复制时,主服务器会把自己的运行ID传送给从服务器,从服务器则会把主服务器ID存储下来。短线重连时,会根据主运行ID来判断主服务器是不是变化了,不变化就继续执行部分重同步;变化了则进行完整重同步。

    相关文章

      网友评论

          本文标题:redis的主从复制

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