redis的主从复制

发布于:2025-02-11 ⋅ 阅读:(79) ⋅ 点赞:(0)

环境准备

  • redis-node1.org172.25.254.10master
  • redis-node2.org172.25.254.20slave
  • redis-node3.org172.25.254.30slave

关闭redis各个节点的安全模式

#master节点上
[root@redis-node1 ~]# vim /etc/redis/6379.conf

在这里插入图片描述

#重启redis
[root@redis-node1 ~]# /etc/init.d/redis_6379 restart
#slave节点上
[root@redis-node2 ~]# vim /etc/redis/6379.conf

在这里插入图片描述

#重启redis
[root@redis-node2 ~]# /etc/init.d/redis_6379 restart
#slave节点上
[root@redis-node3 ~]# vim /etc/redis/6379.conf

在这里插入图片描述

#重启redis
[root@redis-node3 ~]# /etc/init.d/redis_6379 restart

配置slave节点

#添加replicaof字段
[root@redis-node2 ~]# vim /etc/redis/6379.conf
replicaof 172.25.254.10 6379

#重启
[root@redis-node2 ~]# /etc/init.d/redis_6379 restart
#添加replicaof字段
[root@redis-node3 ~]# vim /etc/redis/6379.conf
replicaof 172.25.254.10 6379

#重启
[root@redis-node3 ~]# /etc/init.d/redis_6379 restart

测试

#在master上进入redis中查看
[root@redis-node1 ~]# redis-cli
127.0.0.1:6379> info replication

在这里插入图片描述

  • 我们发现已经成功
  • master写入数据
127.0.0.1:6379> set name huazi
OK
127.0.0.1:6379> get name
"huazi"
  • slave上查看
[root@redis-node2 ~]# redis-cli
127.0.0.1:6379> get name
"huazi"
[root@redis-node3 ~]# redis-cli
127.0.0.1:6379> get name
"huazi"
  • 我们发现已经实现主从复制
  • slave写入数据
#在node2上写
127.0.0.1:6379> set key1 value1
(error) READONLY You can't write against a read only replica.
  • 我们发现slave上是只读的不允许写入

主从同步原理

在这里插入图片描述

  • slave节点发送同步请求master节点
  • slave节点通过master节点认证开始进行同步
  • master节点会开启bgsave进程发送内存快照rbdslave节点,在此过程中是异步操作,也就是说master节点仍然可以进行写入动作
  • slave节点收到内存快照rdb后首先清空自己的所有数据
  • slave节点加载内存快照rdb并进行数据恢复
  • masterslave同步过程中,master还会开启新的bgsave进程没有同步的数据进行缓存
  • 然后通过自有的replactionfeedslave函数未通过内存快照发送到slave的数据一条一条写入slave中

网站公告

今日签到

点亮在社区的每一天
去签到