redis主从复制

主服务器:10.0.0.101

从服务器:10.0.0.102

1快速部署第二台redis服务器

[root@elk102 opt]# ssh-keygen

[root@elk102 opt]# ssh-copy-id 10.0.0.101

[root@elk102 opt]# rsync -avz 10.0.0.101:/opt/redis_6379 /opt/

[root@elk102 opt]# rsync -avz 10.0.0.101:/usr/local/bin/redis* /usr/local/bin/

[root@elk102 opt]# rsync -avz 10.0.0.101:/usr/lib/systemd/system/redis.service /usr/lib/systemd/system/

[root@elk102 opt]# sed -i 's#101#102#g' /opt/redis_6379/conf/redis_6379.conf

[root@elk102 opt]# mkdir -p /data/redis_6379

[root@elk102 opt]# groupadd redis -g 2000
[root@elk102 opt]# useradd redis -u 2000 -g 2000 -M -s /sbin/nologin
[root@elk102 opt]# chown -R redis.redis /opt/redis*
[root@elk102 opt]# chown -R redis.redis /data/redis*
[root@elk102 opt]# systemctl daemon-reload
[root@elk102 opt]# systemctl start redis

 

2主从复制配置

方法1:临时生效

[root@elk102 ~]# redis-cli
127.0.0.1:6379> SLAVEOF 10.0.0.101 6379

方法2:将配置写进配置文件中

[root@elk102 redis_6379]# cat /opt/redis_6379/conf/redis_6379.conf
SLAVEOF 10.0.0.101 6379

 

3检查复制进度

127.0.0.1:6379> ROLE

127.0.0.1:6379> INFO replication

 

4取消主从复制

127.0.0.1:6379> SLAVEOF no one

 

5主从复制流程

1.从节点发送同步请求到主节点

2.主节点接收到从节点的请求之后,做了如下操作 - 立即执行bgsave将当前内存里的数据持久化到磁盘上 - 持久化完成之后,将rdb文件发送给从节点

3.从节点从主节点接收到rdb文件之后,做了如下操作 - 清空自己的数据 - 载入从主节点接收的rdb文件到自己的内存里

4.后面的操作就是和主节点实时的了

 

 

 

6主从复制注意事项

1.从节点只读不可写

2.从节点不会自动故障转移,他会一直尝试同步主节点,并且依然不可写

3.主从复制故障转移需要介入的地方 - 修改代码指向新主的IP - 从节点需要执行slaveof no one

4.从库建立同步时会清空自己的数据,如果同步对象写错了,就清空了

5.从库也可以正常的RDB持久化

 

posted on 2021-07-07 23:47  弓长三寿  阅读(47)  评论(0编辑  收藏  举报