写点什么

Redis 高可用之主从复制实践

  • 2022 年 4 月 15 日
  • 本文字数:966 字

    阅读完需:约 3 分钟

如果 master 有密码

masterauth 2021


  • 启动从服务器时开启


redis-server 启动命令后加入参数 --slaveof <masterip> <masterport>,如果 master 有密码,则需要加入密码参数。 --requirepass <password> 最终的启动命令如下:


redis-server.exe ./redis.conf --slaveof 127.0.0.1 6379 --masterauth 2021


  • 客户端处执行命令开启 在 Redis 客户端如 redis-cli 中执行命令 slaveof <masterip> <masterport>来指定主服务器,如果 master 有密码则需要紧接着执行下面的命令: config set masterauth 2021 复制代码


上述 3 种方式最终的效果都是一样的的,大家可以自己试一试。这里以第二种方式为例,看一下当执行了 slaveof 后,Redis 主节点和从节点的变化。


观察效果


====


在 master 的客户端上执行命令 info replication 和 client list 可以看到下图所示的信息:



在端口号为 6381 的 slave 上执行 info replication 命令可以看到下面的信息:



由两张图的信息可以看出,端口号为 6379 的服务器角色是 master,端口号 6380 和 6381 的服务器角色是 slave,那么接下来我们试试到底他们之间能不能同步数据。


从下图可以看出 master 和 slave 都是没有数据的(6380 的机器也是一样我就没有放上来)




那么我们 Java 开源项目【ali1024.coding.net/public/P7/Java/git】 接下来就开始测试:


  1. 在 master 上执行命令:


set test 123



  1. 到对应的 slave 去查询这个 key



从节点已经有了数据,读取出来数据也是正确的。


  1. 接下来我们在 master 上删除这个 key。

  2. 再到对应的 slave 上读取这个 key,可以发现数据已经没有了。

  3. 我们在 master 在增加一些数 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 据,然后将 slave6381 和 master 断开主从关系,看看有什么现象。


在确保 slave6381 已经有了上述数据之后,我们执行下面的命令断开主从关系。


slaveof no one


记住我们在前文说到过“Redis 主从复制的开启,完全是在从节点发起的;不需要我们在主节点做任何事情”,所以这个命令是在 slave6381 上执行的,大家千万别搞错了!


slave6381 执行命令之后信息如图所示,我们发现断开了关系,但是 slave6381 上从 master 上同步过来的数据仍然存在。因为从节点断开复制后,不会删除已有的数据,只是不再同步主节点新的数据变化。



主节点打印的日志如下图所示,显示 slave6381 已经下线。


读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴





更多笔记分享



用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Redis高可用之主从复制实践_Java_爱好编程进阶_InfoQ写作平台