1. 程式人生 > >Redis主從同步原理解析

Redis主從同步原理解析

redis主從同步原理 redis同步原理 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文件,

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


Redis主從同步原理解析