简介
早上开发和我说,redis集群宕了,因为测试环境连接不上集群了,报错
Caused by: redis.clients.jedis.exceptions.JedisClusterException: CLUSTERDOWN The cluster is down
我说不可能,因为没有收到监控告警,登陆服务器之后节点进程都是好的,重启测试环境之后还是不能连接,于是开始排查问题
排查问题
这个集群是单机多进程的cluster集群,就是所有redis起在不同的端口上的伪集群,首先看下集群的监控状态
./redis-cli --cluster check 10.10.10.27:6379
有报错,报错忘记记录了,类似下面这样
CLUSTER cluster is down
Not all 16384 slots are covered by nodes.
于是备份dump.rdb
cp dump.rdb dump.rdb.bak
查看配置文件,发现所有的配置文件都指向了一个dump.rdb文件,这个明显是有问题的,所以修改redis的dir参数,把dump.rdb分开来
之后的操作
重启所有的配置,然后重新创建集群
./redis-cli --cluster create 10.10.10.27:4379 10.10.10.27:5379 10.10.10.27:6379 10.10.10.27:7379 10.10.10.27:8379 10.10.10.27:9379 --cluster-replicas 1
然后复制dump.rdb启动一个单机redis来读取这个文件
./redis-server --port 777
输入 keys *
发现数据都还在,于是开始导出数据
安装redis-dump导出数据
首先安装rvm
\curl -sSL https://get.rvm.io | bash -s stable
安装完成之后安装ruby
修改源
echo "ruby_url=https://cache.ruby-china.org/pub/ruby" >> /usr/local/rvm/user/db
安装ruby
rvm install 2.4.0 --disable-binary
修改gem源
vim ~/.gemrc
---
:backtrace: false
:bulk_threshold: 1000
:sources: []
:update_sources: true
:verbose: true
:sources:
- https://gems.ruby-china.com
:ssl_verify_mode: 0
安装redis-dump
gem install redis-dump –V
导出数据
redis-dump -u 127.0.0.1:777 > redis_6378.json
导入数据
cat 6379.json | redis-load -u 10.10.10.27:6379
报错
MOVED 13596 10.10.10.27:5379
说明之前的数据都是往5379节点写入的,所以重新导入
cat 6379.json | redis-load -u 10.10.10.27:5379
登陆查看数据都在,之后查看集群的健康状态
./redis-cli --cluster check 10.10.10.27:6379
问题解决,最后,这个redis不是我搭建的
欢迎关注我的博客www.bboy.app
Have Fun