[ERR] Node 192.168.4.57:6357 is not empty. Either the node already knows other nodes (check with CLU

本文记录了Redis集群维护过程,包括重置节点配置、检查集群状态、添加新节点等操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因主要是原有的添加在redis配置中,没有进行重置之前的配置

[root@host57 ~]# redis-cli -h 192.168.4.57 -p 6357 
192.168.4.57:6357> CLUSTER RESET
OK
192.168.4.57:6357> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:9
cluster_my_epoch:8
cluster_stats_messages_ping_sent:32
cluster_stats_messages_pong_sent:7
cluster_stats_messages_sent:39
cluster_stats_messages_ping_received:7
cluster_stats_messages_pong_received:32
cluster_stats_messages_received:39


管理服务器
[root@51 ~]# redis-trib.rb add-node   192.168.4.57:6357  192.168.4.51:6351
>>> Adding node 192.168.4.57:6357 to cluster 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
S: 2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a
M: 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
S: 0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355
   slots: (0 slots) slave
   replicates b00bfb1d93247f56719582e8b9865ae374e17c33
M: 45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353
   slots:0-1364,5461-6826,10923-16383 (8192 slots) master
   1 additional replica(s)
S: 9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 45f61b35eaf179a4b161008b79c54122617048ee
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.4.57:6357 to make it join the cluster.
[OK] New node added correctly.


[root@51 ~]# redis-trib.rb check 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
M: 6df9172d2b03bf298dc7342acdcf1b385f367aba 192.168.4.57:6357
   slots: (0 slots) master
   0 additional replica(s)
S: 2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a
M: 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
S: 0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355
   slots: (0 slots) slave
   replicates b00bfb1d93247f56719582e8b9865ae374e17c33
M: 45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353
   slots:0-1364,5461-6826,10923-16383 (8192 slots) master
   1 additional replica(s)
S: 9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 45f61b35eaf179a4b161008b79c54122617048ee
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.






[root@host57 ~]# redis-cli -h 192.168.4.57 -p 6357 
192.168.4.57:6357> CLUSTER RESET
OK


192.168.4.57:6357> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:7
cluster_size:3
cluster_current_epoch:9
cluster_my_epoch:8
cluster_stats_messages_ping_sent:1230
cluster_stats_messages_pong_sent:587
cluster_stats_messages_meet_sent:6
cluster_stats_messages_sent:1823
cluster_stats_messages_ping_received:587
cluster_stats_messages_pong_received:1236
cluster_stats_messages_received:1823

把移除的主机在此添加到原有的集群中

[root@host57 ~]# redis-cli -h 192.168.4.57 -p 6357 
192.168.4.57:6357> CLUSTER RESET
OK
192.168.4.57:6357> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:9
cluster_my_epoch:8
cluster_stats_messages_ping_sent:32
cluster_stats_messages_pong_sent:7
cluster_stats_messages_sent:39
cluster_stats_messages_ping_received:7
cluster_stats_messages_pong_received:32
cluster_stats_messages_received:39


管理服务器
[root@51 ~]# redis-trib.rb add-node   192.168.4.57:6357  192.168.4.51:6351
>>> Adding node 192.168.4.57:6357 to cluster 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
S: 2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a
M: 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
S: 0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355
   slots: (0 slots) slave
   replicates b00bfb1d93247f56719582e8b9865ae374e17c33
M: 45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353
   slots:0-1364,5461-6826,10923-16383 (8192 slots) master
   1 additional replica(s)
S: 9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 45f61b35eaf179a4b161008b79c54122617048ee
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.4.57:6357 to make it join the cluster.
[OK] New node added correctly.


[root@51 ~]# redis-trib.rb check 192.168.4.51:6351
>>> Performing Cluster Check (using node 192.168.4.51:6351)
M: b00bfb1d93247f56719582e8b9865ae374e17c33 192.168.4.51:6351
   slots:1365-5460 (4096 slots) master
   1 additional replica(s)
M: 6df9172d2b03bf298dc7342acdcf1b385f367aba 192.168.4.57:6357
   slots: (0 slots) master
   0 additional replica(s)
S: 2f002d4ec870d72d2f966c6051a586c57cff1afa 192.168.4.52:6352
   slots: (0 slots) slave
   replicates 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a
M: 20b20d6ddf38a67e8f81bb7badec220bf2be7b3a 192.168.4.56:6356
   slots:6827-10922 (4096 slots) master
   1 additional replica(s)
S: 0ba5e235aa72f9ea10ed8f7da1a60caefc9b9b6c 192.168.4.55:6355
   slots: (0 slots) slave
   replicates b00bfb1d93247f56719582e8b9865ae374e17c33
M: 45f61b35eaf179a4b161008b79c54122617048ee 192.168.4.53:6353
   slots:0-1364,5461-6826,10923-16383 (8192 slots) master
   1 additional replica(s)
S: 9672778d5a8c6685daa7339df325d93f6c73b6bd 192.168.4.54:6354
   slots: (0 slots) slave
   replicates 45f61b35eaf179a4b161008b79c54122617048ee
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.






[root@host57 ~]# redis-cli -h 192.168.4.57 -p 6357 
192.168.4.57:6357> CLUSTER RESET
OK


192.168.4.57:6357> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:7
cluster_size:3
cluster_current_epoch:9
cluster_my_epoch:8
cluster_stats_messages_ping_sent:1230
cluster_stats_messages_pong_sent:587
cluster_stats_messages_meet_sent:6
cluster_stats_messages_sent:1823
cluster_stats_messages_ping_received:587
cluster_stats_messages_pong_received:1236
cluster_stats_messages_received:1823
<think>首先,用户的问题是:“我想解决Redis集群节点非空导致的集群创建失败问题 请问Redis cluster create error Node is not empty check with CLUSTER NODES or contains keys in database 0”。这基于引用的内容,特别是引用[1]和[^1],其中提到了错误“[ERR] Node 127.0.0.1:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0”。 系统级指令: - 所有行内数学表达式使用$...$格式,但这里涉及Redis,没有数学表达式,所以可能不需要。 - 独立公式使用$$...$$,但同样,没有数学公式。 - LaTeX语法正确:确保任何数学格式正确。 - 使用中文回答:整个响应必须用中文。 - 生成相关问题:在回答结束时添加相关问题。 - 引用标识:在引用段落末尾添加引用标识,如[^1]。用户提供了引用[1]、[^1]、[^2]、[^3],所以我需要在回答中引用它们。 用户可见层: - 回答结构清晰,逐步解决问题。 - 保证回答真实可靠:基于Redis知识。 问题分析: - 错误消息表明节点非空,要么是因为它已经知道其他节点(可能已加入集群),要么是数据库0中有键。 - 用户想创建集群,但节点有数据或已配置。 解决方案步骤: 1. **检查节点状态**:使用CLUSTER NODES命令检查节点是否已加入集群。 2. **检查数据库内容**:使用KEYS *或SCAN命令检查数据库0中是否有键。 3. **清除数据**:如果节点有数据,需要清除它。 4. **重置集群配置**:如果节点已配置,需要重置。 5. **重新创建集群**。 详细步骤: - 对于每个节点,执行: - 连接到节点:使用redis-cli -h host -p port - 检查集群状态:CLUSTER NODES - 如果有输出,表明节点已加入集群,需要重置。 - 检查键:KEYS *(生产环境用SCAN更好) - 如果有键,需要清空数据库:FLUSHDB(清空当前DB)或FLUSHALL(清空所有DB)。 - 重置集群配置:CLUSTER RESET - 然后重新尝试创建集群。 在回答中引用用户提供的引用: - 引用[1]:错误消息。 - 引用[2]:类似错误。 - 引用[3]:目录结构,但可能不直接相关;可以忽略或简要提及。 结构回答: 1. 解释错误原因。 2. 提供解决方案步骤。 3. 给出命令示例。 4. 结束相关问题。 相关问题生成: 基于主题,如: 1. 如何安全地清除Redis集群节点数据? 2. 什么是Redis集群重置的最佳实践? 3. 如何避免在创建集群时节点非空的问题? 确保中文回答。</think>### 解决Redis集群节点非空导致的创建失败问题 当您使用Redis集群创建命令(如`redis-trib.rb create`或`redis-cli --cluster create`)时,遇到错误“Node is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0”,这表明目标节点(如127.0.0.1:7001)存在数据残留或已加入过集群配置。错误原因通常包括: - 节点数据库0中有残留键值数据(例如未清空的测试数据)。 - 节点已配置过集群信息(如通过CLUSTER MEET命令加入过其他节点)[^1][^2]。 以下是逐步解决方案,确保操作前备份重要数据,避免生产环境数据丢失。 #### 步骤1: 检查节点状态和数据库内容 首先,连接到问题节点(以127.0.0.1:7001为例),验证其状态: - **检查集群配置**:运行`CLUSTER NODES`命令。如果输出显示节点已加入集群(如列出其他节点地址),则需重置配置。 ```bash redis-cli -h 127.0.0.1 -p 7001 CLUSTER NODES ``` - **检查数据库内容**:运行`KEYS *`扫描数据库0中的键(生产环境建议用`SCAN 0`分批扫描)。如果输出非空,表明有残留数据。 ```bash redis-cli -h 127.0.0.1 -p 7001 KEYS * ``` #### 步骤2: 清除节点数据和配置 根据检查结果执行清理: - **清空数据库**:如果数据库0中有键,使用`FLUSHDB`清除当前数据库(或`FLUSHALL`清除所有数据库)。 ```bash redis-cli -h 127.0.0.1 -p 7001 FLUSHDB ``` - **重置集群配置**:无论`CLUSTER NODES`是否输出信息,运行`CLUSTER RESET`重置节点状态。 ```bash redis-cli -h 127.0.0.1 -p 7001 CLUSTER RESET ``` - **重启节点**:为确保配置生效,重启Redis服务。 ```bash redis-cli -h 127.0.0.1 -p 7001 SHUTDOWN # 重新启动节点,例如:redis-server /path/to/redis.conf ``` #### 步骤3: 重新创建集群 对所有节点重复步骤1-2,确保所有节点均为“空状态”。然后使用集群创建命令: ```bash redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 ... --cluster-replicas 1 ``` 或(旧版工具): ```bash redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 ... ``` - 如果仍有错误,检查节点日志(如`/home/redisCluster/logs/`下的文件)[^3],确认所有节点服务正常运行。 #### 注意事项 - **预防措施**:在创建集群前,初始化节点时手动清空数据(`FLUSHDB`)和重置配置(`CLUSTER RESET`),避免残留问题。 - **安全操作**:生产环境使用`SCAN`代替`KEYS *`,避免阻塞服务。引用[^1][^2]中的错误均源于未正确处理节点状态。 - **目录结构**:确保节点配置、数据和日志目录(如`/home/redisCluster/conf/`, `/home/redisCluster/data/`)权限正确,避免写入失败[^3]。 通过以上步骤,问题通常能解决。如果仍失败,检查网络配置或Redis版本兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值