Redis主从同步原理解析

redis主从同步原理

        在主从数据同步过程中,

        master只在第一次同步时创建了RDB文件,用此做基础进行同步。

        之后的同步,都是通过增量传输命令的方式(AOF)进行同步。


环境描述:

    master:192.168.2.100    不开启RDB和AOF

    slave:192.168.2.200    开启RDB和AOF


配置信息:

  master:

      # vim etc/redis.conf

       #save 600 5           //禁用RDB

       appendonly no       //禁用AOF

       requirepass 123456        //指定验证密码

 slave:

      # vim etc/redis.conf

        save 600 5           //禁用RDB

        appendonly yes      //禁用AOF

        appendfilename "appendonly.aof"        //指定AOF文件

        appendfsync everysec                //每秒强制写入磁盘一次

        no-appendfsync-on-rewrite no        //在日志重写时,不进行命令追加操作

        auto-aof-rewrite-percentage 100            //当前AOF超过上一次AOF大小100%时重写

        auto-aof-rewrite-min-size 64mb           //日志重写最小值

        slaveof 192.168.2.100 6379          //指定主库IP和端口

        masterauth 123456          //指定主库登录密码


启动redis:

    master:# redis-server etc/redis.conf

    slave:# redis-server etc/redis.conf


观察同步过程

    master:

      # redis-cli -a 123456

        127.0.0.1:6379> info replication         //查看主从关系是否正确

        127.0.0.1:6379> keys *               //此时,master安装目录下是没有RDB文件的

        (empty list or set)

        127.0.0.1:6379> set name zhagnsan       //创建key

        OK

      # ll /usr/local/redis-3.0.6-6379           //目录下生成一个RDB文件,用作和slave同步的基础

        -rw-r--r--  1 root root    35 5月  20 21:59 dump_6379.rdb

    slave:

      # redis-cli 

        127.0.0.1:6379> info replication         //查看主从关系是否正确

        127.0.0.1:6379> keys *            //数据已同步

        1) "name"

        127.0.0.1:6379> get name

        "zhagnsan"

      # ll /usr/local/redis-3.0.6-6379         //目录下生成RDB文件和AOF文件

        -rw-r--r--  1 root root    60 5月  20 21:59 appendonly.aof

        -rw-r--r--  1 root root    18 5月  20 21:58 dump.rdb


    master:

      # redis-cli -a 123456

        127.0.0.1:6379> set age 26               //新增2个key

        OK

        127.0.0.1:6379> set home beijing

        OK

      # ll /usr/local/redis-3.0.6-6379           //RDB文件大小没变化

        -rw-r--r--  1 root root    35 5月  20 21:59 dump_6379.rdb

    slave:

      # redis-cli

        127.0.0.1:6379> keys *            //数据已同步

        1) "age"

        2) "name"

        3) "home"

      # ll /usr/local/redis-3.0.6-6379         //发现:RDB文件大小不变,变化的只是AOF

        -rw-r--r--  1 root root   126 5月  20 22:00 appendonly.aof

        -rw-r--r--  1 root root    18 5月  20 21:58 dump.rdb

            

总结:在数据同步过程中,master只在第一次同步时创建了RDB文件,

      之后的同步,都是通过增量传输命令的方式进行同步。


猜你喜欢

转载自blog.51cto.com/13690439/2118890