千家信息网

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

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,redis主从同步原理在主从数据同步过程中,master只在第一次同步时创建了RDB文件,用此做基础进行同步。之后的同步,都是通过增量传输命令的方式(AOF)进行同步。环境描述:master:192.
千家信息网最后更新 2024年09月22日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文件,

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


0