您好,登錄后才能下訂單哦!
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文件,
? ? ? 之后的同步,都是通過增量傳輸命令的方式進行同步。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。