数据库运维
记录DBA学习成长历程

Redis(Master-Replicaset)主从复制

原理

1. 副本库通过slaveof 10.0.0.51 6379命令,连接主库,并发送SYNC给主库 
2. 主库收到SYNC,会立即触发BGSAVE,后台保存RDB,发送给副本库
3. 副本库接收后会应用RDB快照
4. 主库会陆续将中间产生的新的操作,保存并发送给副本库
5. 到此,我们主复制集就正常工作了
6. 再此以后,主库只要发生新的操作,都会以命令传播的形式自动发送给副本库.
7. 所有复制相关信息,从info信息中都可以查到.即使重启任何节点,他的主从关系依然都在.
8. 如果发生主从关系断开时,从库数据没有任何损坏,在下次重连之后,从库发送PSYNC给主库
9. 主库只会将从库缺失部分的数据同步给从库应用,达到快速恢复主从的目的

主从数据一致性保证

min-slaves-to-write 1
至少保证一台从库和主库数据一致
min-slaves-max-lag 3
从库延时超过3秒也表示此次复制为失败

主库是否要开启持久化?

如果不开有可能主库重启操作,造成所有主从数据丢失!

主从复制实现

1、环境

准备两个或两个以上redis实例,主节点:6380,从节点:6381、6382
mkdir /data/638{0..2}
配置文件示例:
cat >> /data/6380/redis.conf <> /data/6381/redis.conf <> /data/6382/redis.conf <<EOF
port 6382
daemonize yes
pidfile /data/6382/redis.pid
loglevel notice
logfile "/data/6382/redis.log"
dbfilename dump.rdb
[root@db01 ~]# ps -ef |grep redis
root 11648 1 0 01:20 ? 00:00:00 redis-server *:6380
root 11652 1 0 01:20 ? 00:00:00 redis-server *:6381
root 11656 1 0 01:20 ? 00:00:00 redis-server *:6382
dir /data/6382
requirepass 123
masterauth 123
EOF
启动:
redis-server /data/6380/redis.conf
redis-server /data/6381/redis.conf
redis-server /data/6382/redis.conf

2、开启主从

6381/6382命令行:
redis-cli -p 6381 -a 123 SLAVEOF 127.0.0.1 6380
redis-cli -p 6382 -a 123 SLAVEOF 127.0.0.1 6380

3、查询主从状态

redis-cli -p 6380 -a 123 info replication
redis-cli -p 6381 -a 123 info replication
redis-cli -p 6382 -a 123 info replication
赞(1)
MySQL学习笔记 » Redis(Master-Replicaset)主从复制