温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Redis主从同步原理解析(实验)

发布时间:2020-07-23 01:10:48 来源:网络 阅读:2781 作者:张德帅ya 栏目:数据库

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文件,

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI