redis主从同步
redis主从同步
前言
-
redis主从同步
-
原理
- 从服务端向主服务器发送SYNC命令
- 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。
- 当主服务器执行完BGSAVE命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。
- 主服务器将缓冲区储存的所有写命令发送给从服务器执行。
-
1 在开启主从复制的时候,使用的是RDB方式的,同步主从数据的
2、同步开始之后,通过主库命令传播的方式,主动的复制方式实现
3、2.8以后实现PSYNC的机制,实现断线重连
环境准备
- 前言:
- 这里演示的是一主俩从
- redis数据库支持多实例
-
主redis配置信息
vim redis-6379.conf
port 6379 daemonize yes pidfile /data/6379/redis.pid loglevel notice logfile "/data/6379/redis.log" dir /data/6379 protected-mode yes dbfilename dbmp.rdb save 900 1 save 300 10 save 60 10000
-
俩从配置信息, redis-6380.conf 和redis-6381.conf 信息一样,除了port不一样
vim redis-6380.conf
port 6380 daemonize yes pidfile /data/6380/redis.pid loglevel notice logfile "/data/6380/redis.log" dir /data/6380 protected-mode yes dbfilename dbmp.rdb save 900 1 save 300 10 save 60 10000 slaveof 127.0.0.1 6379
-
启动三个数据库,
redis-server /data/6380/redis.conf redis-server /data/6381/redis.conf redis-server /data/6382/redis.conf
-
启动三个数据库的实例,查看主从同步关系
redis-cli -p 6379 info replication redis-cli -p 6380 info replication redis-cli -p 6381 info replication
-
测试写入数据,主库写入数据,检查从库数据
主 127.0.0.1:6379> set name chaoge 从 127.0.0.1:6381>get name
-
模拟主库宕机,然后手动进行主从复制故障切换
# 查看主库进程 ps -ef |grep redis 杀死主库进程 kill -p 主库进程号
-
检查从库信息
redis-cli -p 6380 info replication redis-cli -p 6381 info replication
-
关闭6380从库身份
127.0.0.1:6380>slaveof no one
-
给6381新的主人身份
127.0.0.1:6381> SLAVEOF no one 127.0.0.1:6381> SLAVEOF 127.0.0.1 6381
-
检查6380和6381的主从信息
-
还得修改配置文件,永久生效还得修改配置文件,永久生效还得修改配置文件,永久生效