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

      之後的同步,都是通過增量傳輸命令的方式進行同步。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章