【Redis】修改redis-trib.rb使其import支持密码

需求,现在需要将一个单机redis数据迁移至redis-cluster集群中,两遍都是开启了密码模式的,无密码模式直接import就可以了!现在带密码我试了下import工具发现并不支持密码模式,修改下redis-trib.rb脚本即可支持密码认证了

target端如何支持密码上篇博客已经说明


以下修改为支持source端(单节点端)

修改地方为:

def import_cluster_cmd(argv,opt)
    source_addr = opt['from']
    xputs ">>> Importing data from #{source_addr} to cluster #{argv[1]}"
    use_copy = opt['copy']
    use_replace = opt['replace']
    #use_password = opt['password']   这行注释
    # Check the existing cluster.
    load_cluster_info_from_node(argv[0])
    check_cluster
    # Connect to the source node.
    xputs ">>> Connecting to the source Redis instance"
    src_host,src_port,use_password = source_addr.split(":") ##这行修改添加密码
    source = Redis.new(:host =>src_host, :port =>src_port, :password =>use_password) ##这行


使用如下:

[root@ip-172-31-40-224 src]# /usr/local/src/redis-4.0.8/src/redis-trib.rb import --from 172.31.40.224:6381:inH7HkD7iXoxKZCi --copy   172.31.40.224:6379
>>> Importing data from 172.31.40.224:6381:inH7HkD7iXoxKZCi to cluster 
>>> Performing Cluster Check (using node 172.31.40.224:6379)
M: d5a1288c289dc27c014b34a0ec8280d2d4215747 172.31.40.224:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 7475145029eeccdc91b8db415377888130868199 172.31.40.224:6380
   slots: (0 slots) slave
   replicates c78d49f041e386723fd921cea19421e34c0262b6
M: c78d49f041e386723fd921cea19421e34c0262b6 172.31.40.14:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 4164f6a49979952479e98ccde18e463e125dd438 172.31.35.125:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 725078c24574874197707b177375ee8dbf462099 172.31.35.125:6380
   slots: (0 slots) slave
   replicates d5a1288c289dc27c014b34a0ec8280d2d4215747
S: 5a1cbcec8b540dd5d7ce6268942386ce6e48878f 172.31.40.14:6380
   slots: (0 slots) slave
   replicates 4164f6a49979952479e98ccde18e463e125dd438
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Connecting to the source Redis instance
*** Importing 3 keys from DB 0
Migrating chen1 to 172.31.35.125:6379: OK
Migrating chen to 172.31.40.224:6379: OK
Migrating chen2 to 172.31.35.125:6379: OK


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-2214504/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29096438/viewspace-2214504/

### 验证 Redis Cluster 所有 Slot 槽位的分布与正常工作状态 为了验证 Redis Cluster 中所有槽位的分布以及其正常工作的状态,可以按照以下方法操作: #### 1. 使用 `CLUSTER SLOTS` 命令查看槽位分配情况 通过执行 `CLUSTER SLOTS` 命令,可以获得当前集群中每个槽位的具体分配信息。该命令返回的结果是一个数组列表,其中每一项代表一个槽范围及其对应的主节点和从节点地址。 ```bash redis-cli -c -h 127.0.0.1 -p 6379 CLUSTER SLOTS ``` 此命令可以帮助确认所有的 16384 个槽是否都被正确分配到各个节点上[^2]。 --- #### 2. 使用 `CLUSTER INFO` 查看集群的整体状态 运行 `CLUSTER INFO` 可以获取关于整个 Redis Cluster 的基本信息,其中包括集群的状态(cluster_state),它会显示为 `ok` 或者 `fail`。只有当所有槽都成功分配给某个节点时,集群才会进入上线状态(state=ok)。 ```bash redis-cli -c -h 127.0.0.1 -p 6379 CLUSTER INFO ``` 如果输出中的 `cluster_state` 显示为 `ok`,则说明所有槽都已经分配完毕并正在被处理。 --- #### 3. 利用 `redis-trib.rb check` 工具检测一致性 可以通过官方工具 `redis-trib.rb` 来进一步检查集群配置的一致性和槽覆盖情况。以下是具体命令: ```bash ./redis-trib.rb check 127.0.0.1:6380 ``` 上述脚本会对指定 IP 和端口下的 Redis 节点发起一系列查询请求,最终报告是否存在未分配或者重复分配的情况。如果一切正常,则会有 `[OK] All nodes agree about slots configuration.` 提示,并且还会告知是否有任何开放或遗漏的槽[^1]。 --- #### 4. 测试数据迁移过程中的槽重新平衡 假如之前进行了某些手动调整(比如迁移动态负载较高的键值对至其他分片),那么应该再次调用 `rebalance` 功能来确保各成员间资源占用比例接近理想水平。例如: ```bash ./redis-trib.rb rebalance 127.0.0.1:6380 ``` 如果没有必要再做额外改动的话,终端将会打印类似于下面这样的消息:“*** No rebalancing needed!” 表明目前状况良好无需干预。 --- #### 5. 实际写入读取测试 最后一步也是最直观的方式就是实际向不同分区存储一些样本记录然后再尝试检索它们。假设我们已经知道哪些 key 属于哪个特定区间内的 hash tag ,就可以分别连接不同的物理机器去存取关联的数据片段。 例如,在客户端程序里随机生成若干条带标签的消息体发送出去保存起来;稍后再逐一提取出来核验内容一致与否即可完成这项任务。 ```python import redis r = redis.StrictRedis(host='127.0.0.1', port=6379, decode_responses=True) for i in range(100): r.set(f'key:{i}', f'value-{i}') print(r.get('key:5')) # 应该能够顺利取出 value-5 ``` 以上代码展示了如何利用 Python 客户端库批量插入多组键值对并对其中一个进行抽样检验的过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值