当前位置: 首页 > java >正文

redis集群创建时手动指定主从关系的方法

适用场景:

创建主从关系时默认参数 --cluster-replicas 1 会自动分配从节点。
为了能精确控制 Redis Cluster 的主从拓扑结构,我们通过 Redis Cluster 的手动分片功能来实现

一、手动指定主从关系的方法

使用 redis-cli --cluster-replicas 0 先创建纯主节点集群,再通过 CLUSTER REPLICATE 命令手动分配从节点。

步骤 1:创建仅包含主节点的集群
redis-cli --cluster create \172.18.0.2:7001 172.18.0.3:7002 172.18.0.4:7003 \--cluster-replicas 0  # 不自动分配从节点,仅创建3个主节点
步骤 2:获取主节点 ID
redis-cli -c -h 172.18.0.2 -p 7001 cluster nodes

输出示例(截取部分):

a7aa5... 172.18.0.2:7001 myself,master - 0 1684224000000 1 connected 0-5460
b3bb6... 172.18.0.3:7002 master - 0 1684224001000 2 connected 5461-10922
c2cc7... 172.18.0.4:7003 master - 0 1684224002000 3 connected 10923-16383

记录每个主节点的 ID(如 a7aa5...b3bb6...c2cc7...)。

步骤 3:将从节点分配给指定主节点
# 让 172.18.0.5 成为 172.18.0.2 的从节点
redis-cli -c -h 172.18.0.5 -p 7004 cluster replicate a7aa5...# 让 172.18.0.6 成为 172.18.0.3 的从节点
redis-cli -c -h 172.18.0.6 -p 7005 cluster replicate b3bb6...# 让 172.18.0.7 成为 172.18.0.4 的从节点
redis-cli -c -h 172.18.0.7 -p 7006 cluster replicate c2cc7...

二、验证主从关系

# 查看任意节点的集群状态
redis-cli -c -h 172.18.0.2 -p 7001 cluster nodes

输出应显示明确的主从关系,例如:

a7aa5... 172.18.0.2:7001 myself,master - 0 1684224000000 1 connected 0-5460
b3bb6... 172.18.0.3:7002 master - 0 1684224001000 2 connected 5461-10922
c2cc7... 172.18.0.4:7003 master - 0 1684224002000 3 connected 10923-16383
d4dd8... 172.18.0.5:7004 slave a7aa5... 0 1684224003000 4 connected
e5ee9... 172.18.0.6:7005 slave b3bb6... 0 1684224004000 5 connected
f6ff0... 172.18.0.7:7006 slave c2cc7... 0 1684224005000 6 connected

三、完整脚本示例

以下是自动化上述过程的脚本:

#!/bin/bash# 创建主节点集群
redis-cli --cluster create \172.18.0.2:7001 172.18.0.3:7002 172.18.0.4:7003 \--cluster-replicas 0# 获取主节点 ID
MASTER1_ID=$(redis-cli -c -h 172.18.0.2 -p 7001 cluster nodes | grep "172.18.0.2:7001" | awk '{print $1}')
MASTER2_ID=$(redis-cli -c -h 172.18.0.2 -p 7001 cluster nodes | grep "172.18.0.3:7002" | awk '{print $1}')
MASTER3_ID=$(redis-cli -c -h 172.18.0.2 -p 7001 cluster nodes | grep "172.18.0.4:7003" | awk '{print $1}')# 分配从节点
redis-cli -c -h 172.18.0.5 -p 7004 cluster replicate $MASTER1_ID
redis-cli -c -h 172.18.0.6 -p 7005 cluster replicate $MASTER2_ID
redis-cli -c -h 172.18.0.7 -p 7006 cluster replicate $MASTER3_ID# 验证集群状态
echo "集群状态:"
redis-cli -c -h 172.18.0.2 -p 7001 cluster nodes

四、注意事项

  1. 节点启动顺序
    确保所有节点(包括主从)都已启动并运行,否则 CLUSTER REPLICATE 可能失败。
  2. 数据一致性
    手动分配从节点后,从节点会自动同步主节点的数据。同步期间可能影响性能。
  3. 故障转移
    主节点故障时,对应的从节点会自动提升为主节点,与自动分配的效果相同。
  4. 配置持久化
    节点配置会保存在 nodes.conf 文件中(通过 cluster-config-file 指定),重启后仍然有效。
http://www.xdnf.cn/news/8844.html

相关文章:

  • 《技术择时,价值择股》速读笔记
  • 宽带卫星通信中的时分多址技术
  • STM32中的SPI通信协议
  • Vulkan 学习(15)---- Vulkan 完整渲染流程
  • 怎么判断文件是否支持多线程下载
  • 【Day36】
  • Python打卡训练营学习记录Day36
  • pyhton基础【4】判断
  • 使用Cursor生成需求文档+UI设计图
  • 【扫描线 线段树】P1856 [IOI 1998 ] [USACO5.5] 矩形周长Picture|普及+
  • firfox 国外版和国内版本账号不互通问题处理
  • 理论物理:为什么在极低温(接近绝对零度)时,经典理论失效?
  • 5.25 打卡
  • 高级特性实战:死信队列、延迟队列与优先级队列(三)
  • 《1.1_3_2 电路交换、报文交换、分组交换的性能分析|精讲篇》
  • git 把一个分支A的某一个 commit 应用到另一个分支B上
  • 乐观锁与悲观锁
  • Ansible配置文件常用选项详解
  • [c语言实战]C语言多线程编程:从零开发高并发任务调度器(五)
  • 浅谈ggplot2图表美化~
  • 8:OpenCV—仿射变换和坐标映射
  • 每日Prompt:龙虎斗
  • LangChain4j 项目实战——idea快捷键搜索
  • 力扣第157场双周赛
  • NISP和CISP有什么区别,哪个更好
  • 内容中台的核心价值是什么?
  • 决策引擎与规则引擎在交易所业务风控中的建设思路、架构设
  • 【开源项目】成本50元内的开源项目
  • 只能上百度b站打不开其他网页
  • 关于 java: 2. 面向对象编程(OOP)核心概念