redis 主从复制

Scroll Down

第四章:redis 主从复制

01. 环境

主库:10.0.0.51
从库:10.0.0.52
  • 主库配置请参考 redis 安装部署

02. 在从库上操作

1)配置密钥,推送到主库

# 推送公钥到主库
ssh-keygen
ssh-copy-id 10.0.0.51

2)拉取主库配置

# 拉取配置
rsync -avz 10.0.0.51:/opt/redis* /opt/
rsync -avz 10.0.0.51:/usr/local/bin/redis* /usr/local/bin/
rsync -avz 10.0.0.51:/usr/lib/systemd/system/redis.service
/usr/lib/systemd/system/

# 修改ip
sed -i 's#51#52#g' /opt/redis_6379/conf/redis_6379.conf

# 创建数据目录
mkdir -p /data/redis_6379

# 创造运行用户, 并授权
groupadd redis -g 1000 
useradd redis -u 1000 -g 1000 -M -s /sbin/nologin
chown -R redis.redis /opt/redis*
chown -R redis.redis /data/redis*

# 加载配置,并启动redis
systemctl daemon-reload
systemctl restart redis

3) 拉取主库配置时,可能出现的报错

1.在db01上执⾏了命令
2.配置⽂件⾥的密码没删掉
3.配置⽂件⾥的重命名参数没删掉
4.⽤户id和组id冲突
5.没有rsync
6.拷⻉过来的配置⽂件没有修改IP地址

03. 开启主从复制

1)临时生效的方法

redis-cli -h 10.0.0.52 SLAVEOF 10.0.0.51 6379

2) 永久生效的方法

# 在配置文件中添加主从配置
SLAVEOF 10.0.0.51 6379

3)取消主从复制命令

SLAVEOF no one

04. 检查复制进度的命令

INFO replication
ROLE

05. 主从复制流程

1.从节点发送同步请求到主节点
2.主节点接收到从节点的请求之后,做了如下操作
 - ⽴即执⾏bgsave将当前内存⾥的数据持久化到磁盘上
 - 持久化完成之后,将rdb⽂件发送给从节点
3.从节点从主节点接收到rdb⽂件之后,做了如下操作
 - 清空⾃⼰的数据
 - 载⼊从主节点接收的rdb⽂件到⾃⼰的内存⾥
4.后⾯的操作就是和主节点实时的了

07. 主从复制注意点

1.从节点只读不可写
2.从节点不会⾃动故障转移,他会⼀直尝试同步主节点,并且依然不可写
3.主从复制故障转移需要介⼊的地⽅
 - 修改代码指向新主的IP
 - 从节点需要执⾏slaveof no one
4.从库建⽴同步时会清空⾃⼰的数据,如果同步对象写错了,就清空了
5.从库也可以正常的RDB持久化

08. 安全操作 *****

一定做好备份,无论主节点还是从节点,操作起都要做好备份