redis 主从复制部署
主从复制
1.快速部署第二台Redis服务器
ssh-keygen
ssh-copy-id 10.0.0.51
rsync -avz 10.0.0.51:/opt/redis_6379 /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/
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*
systemctl daemon-reload
systemctl start redis
报错总结:
1.在db01上执行了命令
2.配置文件里的密码没删掉
3.配置文件里的重命名参数没删掉
4.用户id和组id冲突
5.没有rsync
6.拷贝过来的配置文件没有修改IP地址
2.db01插入测试命令
for i in {1..1000};do redis-cli set key_${i} v_${i} && echo "${i} is ok";done
3.配置主从复制
方法1:临时生效
redis-cli -h 10.0.0.52 SLAVEOF 10.0.0.51 6379
方法2:写进配置文件永久生效
SLAVEOF 10.0.0.51 6379
slave-read-only yes // 从库只读
4.检查复制进度
INFO replication
ROLE
4.主从复制流程
1.简单流程
1.从节点发送同步请求到主节点
2.主节点接收到从节点的请求之后,做了如下操作
- 立即执行bgsave将当前内存里的数据持久化到磁盘上
- 持久化完成之后,将rdb文件发送给从节点
3.从节点从主节点接收到rdb文件之后,做了如下操作
- 清空自己的数据
- 载入从主节点接收的rdb文件到自己的内存里
4.后面的操作就是和主节点实时的了
5.取消复制
SLAVEOF no one
6.主从复制注意
1.从节点只读不可写
2.从节点不会自动故障转移,他会一直尝试同步主节点,并且依然不可写
3.主从复制故障转移需要介入的地方
- 修改代码指向新主的IP
- 从节点需要执行slaveof no one
4.从库建立同步时会清空自己的数据,如果同步对象写错了,就清空了
5.从库也可以正常的RDB持久化
7.安全的操作
一定要做好数据备份,无论是主节点还是从节点,操作前最好做下备份
8.主从复制密码
masterauth 123456