redis集群管理-5.0.14版本
目录
00.节点启动、关闭、登录、查看集群信息、配置文件参数、动态改参数
01.创建主节点
02.添加删除节点
03.哈希槽重新分配
04.升级Redis集群中的节点
05.手动故障转移
06.迁移到redis集群
07.集群扩容
08.集群缩容
09.节点挂掉处理
10.扩展
00.节点启动、关闭、登录、查看集群信息、配置文件参数、动态改参数
/data/redis/bin/redis-server /data/redis/conf/redis6379.conf
ps aux|grep redis
/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 6379 SHUTDOWN
ps -ef | grep redis-server | grep -v grep | awk '{print $2}' | xargs kill
/data/redis/bin/redis-cli -a ...... -h 127.0.0.1 -p 6379
CLUSTER nodes
CLUSTER INFO
config get maxmemory/maxclients
config SET maxmemory 6G
01.创建主节点
/data/redis/bin/redis-cli -a ...... --cluster create --cluster-replicas 0 192.168.134.143:6379 192.168.134.143:6380 192.168.134.143:6381
--获取master-id
/data/redis/bin/redis-cli -c -a ...... -h 127.0.0.1 -p 6379 cluster nodes
ip=`ip ad|grep "10.35.2"|awk '{print $2}'|awk -F\/ '{print $1}'`
/data/redis/bin/redis-cli -a ...... --cluster check $ip:6379 --cluster-search-multiple-owners
[root@localhost data]# /data/redis/bin/redis-cli -c -a ...... -h 127.0.0.1 -p 6379 cluster nodes
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 192.168.134.143:6381@16381 master - 0 1658993413889 3 connected 10923-16383
056ca47dc3945072b9fd28b663f1eb8b569e9cc5 192.168.134.143:6380@16380 master - 0 1658993414897 2 connected 5461-10922
12b09b0ccd152d1267bb94a6ad8d268d9e424cec 192.168.134.143:6379@16379 myself,master - 0 1658993413000 1 connected 0-5460
--为主节点添加从节点
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6382 192.168.134.143:6379 --cluster-slave --cluster-master-id 12b09b0ccd152d1267bb94a6ad8d268d9e424cec
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6383 192.168.134.143:6379 --cluster-slave --cluster-master-id 056ca47dc3945072b9fd28b663f1eb8b569e9cc5
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6384 192.168.134.143:6379 --cluster-slave --cluster-master-id 0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a
--登录
/data/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a ......
--测试集群的运行状况:
CLUSTER nodes
CLUSTER INFO
02.添加删除节点
添加192.168.134.143:6385到现有集群,新节点的数据路径下确保没有.conf、.aof、.rdb文件才能重启(严格时要先停掉节点该服务,清空甚至删除相关文件,再启动)
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6385 192.168.134.143:6379
192.168.134.143:6385 的id
6a8c075d50029d7beb67fc71c44d0eac4aa02440
--删除副本节点
/data/redis/bin/redis-cli -a ...... --cluster del-node 192.168.134.143:6379 6a8c075d50029d7beb67fc71c44d0eac4aa02440
要移除主节点,它必须为空。如果主节点不为空,则需要在之前将数据从主节点重新分配到其他主节点。
03.哈希槽重新分配
/data/redis/bin/redis-cli -a ...... --cluster reshard 192.168.134.143:6379 --cluster-from b2e5432b19243972c9eeafd5cca39d5fd8a42200 --cluster-to 6a8c075d50029d7beb67fc71c44d0eac4aa02440 --cluster-slots 2731
04.升级Redis集群中的节点
升级副本节点很容易,因为您只需要停止节点并使用更新版本的Redis重新启动。如果有客户机使用副本节点缩放读取,如果givenone不可用,它们应该能够重新连接到不同的副本。
升级masters有点复杂,建议的步骤是:
使用CLUSTER FAILOVER触发主服务器到其中一个副本的手动故障转移。(参见手动故障转移本文件中的章节。)
等待主机变成副本
最后,像对副本一样升级节点。
如果希望主节点成为刚升级的节点,请触发新的手动故障转移,以便将升级的节点变回主节点。
按照此过程,您应该依次升级一个节点,直到所有节点都升级为止。
05.手动故障转移
该命令必须在要进行故障转移master的任意slave节点上执行,执行后master和slave身份自动互换
cluster failover
[root@localhost data]# /data/redis/bin/redis-cli -h 127.0.0.1 -p 6382 -a ......
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6382>
127.0.0.1:6382> ping
PONG
127.0.0.1:6382>
127.0.0.1:6382> CLUSTER nodes
d92be4765051dcabe4d9c9a98af7b3614f2c929a 192.168.134.143:6384@16384 slave 0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 0 1658994296073 3 connected
f8d7ab3de2a8316687d417ae1522077f60ed49de 192.168.134.143:6382@16382 myself,slave 12b09b0ccd152d1267bb94a6ad8d268d9e424cec 0 1658994292000 0 connected
0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 192.168.134.143:6381@16381 master - 0 1658994295000 3 connected 10923-16383
6e1075d9556d62e7d73cdf2139b242472ce4bf81 192.168.134.143:6383@16383 slave 056ca47dc3945072b9fd28b663f1eb8b569e9cc5 0 1658994295000 2 connected
056ca47dc3945072b9fd28b663f1eb8b569e9cc5 192.168.134.143:6380@16380 master - 0 1658994295067 2 connected 5461-10922
12b09b0ccd152d1267bb94a6ad8d268d9e424cec 192.168.134.143:6379@16379 master - 0 1658994295000 1 connected 0-5460
127.0.0.1:6382>
127.0.0.1:6382>
127.0.0.1:6382> cluster failover
OK
127.0.0.1:6382>
127.0.0.1:6382> CLUSTER nodes
d92be4765051dcabe4d9c9a98af7b3614f2c929a 192.168.134.143:6384@16384 slave 0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 0 1658994315000 3 connected
f8d7ab3de2a8316687d417ae1522077f60ed49de 192.168.134.143:6382@16382 myself,master - 0 1658994316000 4 connected 0-5460
0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 192.168.134.143:6381@16381 master - 0 1658994313000 3 connected 10923-16383
6e1075d9556d62e7d73cdf2139b242472ce4bf81 192.168.134.143:6383@16383 slave 056ca47dc3945072b9fd28b663f1eb8b569e9cc5 0 1658994314000 2 connected
056ca47dc3945072b9fd28b663f1eb8b569e9cc5 192.168.134.143:6380@16380 master - 0 1658994316225 2 connected 5461-10922
12b09b0ccd152d1267bb94a6ad8d268d9e424cec 192.168.134.143:6379@16379 slave f8d7ab3de2a8316687d417ae1522077f60ed49de 0 1658994315217 4 connected
127.0.0.1:6382>
06.迁移到redis集群
可以将数据从外部实例导入到 Redis 集群,即使用redis-cli --cluster import命令
redis-cli --cluster import 10.35.2.68:6379 --cluster-from 10.35.2.87:6379 --cluster-replace
说明:外部Redis实例(10.35.2.87:6379)导入到集群中的任意一节点,倒入之后,原来集群的key变为空,导入到新集群的key会自动分片到各个mater节点的slot
--cluster-replace 如果集群(10.35.2.68:6379)中存在外部redis实例(10.35.2.87:6379)的key,则会覆盖掉(10.35.2.68:6379)的value
该命令将正在运行的实例的所有键(从源实例中删除键)移动到指定的预先存在的 Redis 集群。但是请注意,如果您使用 Redis 2.8 实例作为源实例,操作可能会很慢,因为 2.8 没有实现迁移连接缓存,因此您可能希望在执行此类操作之前使用 Redis 3.x 版本重新启动源实例(在进行这个操作之前,将redis的版本升级到Redis 3.x版本)。
07.集群扩容
添加2个节点主6385,从6386
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6385 192.168.134.143:6379
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6386 192.168.134.143:6379 --cluster-slave --cluster-master-id 96f15f431b2dff2fde63e94f5b4cabac0aed69ca
--重新分片集群
/data/redis/bin/redis-cli -a ...... --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 192.168.134.143:6379
fa14516c9901a8e8d213bfc2c0c80dffc1ecec5b 192.168.134.143:6386@16386 slave 96f15f431b2dff2fde63e94f5b4cabac0aed69ca 0 1658995781000 6 connected
0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 192.168.134.143:6381@16381 master - 0 1658995781000 3 connected 12288-16383
6e1075d9556d62e7d73cdf2139b242472ce4bf81 192.168.134.143:6383@16383 slave 056ca47dc3945072b9fd28b663f1eb8b569e9cc5 0 1658995780000 2 connected
12b09b0ccd152d1267bb94a6ad8d268d9e424cec 192.168.134.143:6379@16379 myself,master - 0 1658995776000 5 connected 1365-5460
f8d7ab3de2a8316687d417ae1522077f60ed49de 192.168.134.143:6382@16382 slave 12b09b0ccd152d1267bb94a6ad8d268d9e424cec 0 1658995780000 5 connected
96f15f431b2dff2fde63e94f5b4cabac0aed69ca 192.168.134.143:6385@16385 master - 0 1658995783154 6 connected 0-1364 5461-6826 10923-12287
d92be4765051dcabe4d9c9a98af7b3614f2c929a 192.168.134.143:6384@16384 slave 0bc9e58115869b5458a0aaf474b7b9d01ac4dd6a 0 1658995782149 3 connected
056ca47dc3945072b9fd28b663f1eb8b569e9cc5 192.168.134.143:6380@16380 master - 0 1658995781144 2 connected 6827-10922
08.集群缩容
要求:删除master节点A及此slave节点A1
操作步骤:
1)先删除slave A1节点(此操作理论上,应该删除掉A节点所有的slave节点);参考02中的删除节点
2)将A上的slot重新分片到其他的master节点;可参考03哈希槽重新分配,或者07集群扩容中的重新分片集群
操作完成以后可能会有如下报错,没有关系:
Node 127.0.0.1:6381 replied with error:
ERR Please use SETSLOT only with masters.
3)此时查看A节点,A已经变为了接受分片槽节点的master节点
4)删除A节点 ;参考02中的删除节点
09.节点挂掉处理
从节点挂掉:
能重启且数据目录下文件没有丢失就自动加入集群;
若目录下的文件丢失,重启后该节点状态有问题,处理思路:先删除再指定主节点
cluster forget cdc33acca6797723b3fcb3c2386030b0759abe06
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6386 192.168.134.143:6379 --cluster-slave --cluster-master-id 33efb30b242b28509c0b8f85e791aa6af17d9ef0
主节点挂掉:slave会转为新主
能重启且数据目录下文件没有丢失就自动加入集群;
若目录下的文件丢失,重启后该节点状态有问题,处理思路同上。
若同一主从挂掉:能重启且数据目录下文件没有丢失就自动加入集群;
若目录下的文件丢失,重启后该节点状态有问题,处理思路:
cluster forget feba58aa118956ddebc1dd162276c5e4c0c18d7d
cluster forget cdc33acca6797723b3fcb3c2386030b0759abe06
/data/redis/bin/redis-cli -a ...... --cluster fix 192.168.134.143:6379
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6385 192.168.134.143:6379
/data/redis/bin/redis-cli -a ...... --cluster add-node 192.168.134.143:6386 192.168.134.143:6379 --cluster-slave --cluster-master-id 96f15f431b2dff2fde63e94f5b4cabac0aed69ca
/data/redis/bin/redis-cli -a ...... --cluster rebalance --cluster-threshold 1 --cluster-use-empty-masters 192.168.134.143:6379
10.扩展
redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes
--cluster-yes选项指示集群管理器对命令的提示自动回答“是”,允许它以非交互模式运行。请注意,也可以通过设置REDISCLI_CLUSTER_是环境变量
redis集群管理-5.0.14版本相关推荐
- Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理
Redis Desktop Manager – 个人认为是目前最好用的Redis可视化管理工具. redis可视化工具.Redis可视化管理工具.redis图形化管理工具.redis可视化客户端.re ...
- Redis Desktop Manager – Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理工具
Redis Desktop Manager – 个人认为是目前最好用的Redis可视化管理工具. redis可视化工具.Redis可视化管理工具.redis图形化管理工具.redis可视化客户端.re ...
- Redis集群管理方式
Redis的有三种集群方式:主从复制,哨兵模式和集群. 主从复制 从服务器连接主服务器,发送SYNC命令: 主服务器接收到SYNC后执行BGSAVE命令生成RDB文件,并使用缓冲区记录此后执行的所有写 ...
- Redis集群搭建~Redis-x64-3.2.100版本
参考文档: https://www.cnblogs.com/yaopengfei/p/12418227.html https://blog.csdn.net/weixin_42694286/artic ...
- redis 集群环境搭建-redis集群管理
集群架构 (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群中超过半数的节点检测失效时才生效. (3)客户端与redi ...
- Redis集群管理(二)
1.进入集群客户端 任意选一个redis节点,进入redis 所在目录 cd /redis 所在目录/src/ ./redis-cli -h 本地节点的ip -p redis的端口号 -a 密码 [r ...
- Memcache/Redis集群管理探索与实现:美图开源PaaS平台资源网关
https://mp.weixin.qq.com/s/HSuzeS2BBf-pLexZOr8c8A 美图开源内部改造的 Twemproxy(Redis/Memcached 缓存代理) https:// ...
- Redis 集群规范(中文稿)(MOVED错误码及ASK错误码
引言? 这个文档是正在开发中的 Redis 集群功能的规范(specification)文档,文档分为两个部分: 第一部分介绍目前已经在 unstable 分支中实现了的那些功能. 第二部分介绍目前仍 ...
- Redis 集群规范(MOVED错误码及ASK错误码)
引言? 这个文档是正在开发中的 Redis 集群功能的规范(specification)文档,文档分为两个部分: 第一部分介绍目前已经在 unstable 分支中实现了的那些功能. 第二部分介绍目前仍 ...
- Redis集群架构搭建详解
一.简介 这其实是一种分布式数据库,就是通过分片的机制储存数据,cluster中的每个节点仅仅储存数据哭的一部分数据,本质上就是实现数据库分片. 这种集群是一种去中心化的集群,也就是说,集群中的每个节 ...
最新文章
- 夺得WSDM Cup 2020大赛金牌的这份参赛方案,速来get!
- 目标检测--Object Detection via Aspect Ratio and Context Aware
- php--理解PHP的依赖注入和laravel的服务容器
- Java中四种访问修饰符的区别
- 每天学一点Scala之 高阶函数 flatten
- 有没有什么好的C++视频教程?
- 朋友圈、浏览器分享实现
- AIO系列文档(1)----图解ByteBuffer
- nginx中root和alias的区别
- Helm 3 完整教程(一):Helm 3 简介
- 【python】多进程、多线程、序列
- 服务器内存太小,伤不起![异常与应用程序池引发的连锁命案]
- python好玩的代码-Python有哪些有趣的代码呢,这些代码让
- java写颜色识别_Java+Opencv 颜色识别
- float数据十六进制表示法,十六进制读取float数据
- 关于音频采样率,音频帧率,每次采集多少字节的理解
- jQuery轮播图效果+ bxCarousel实现图片滚动切换效果+Mootools Videobox实现视频图片弹出类lightbox效果
- saiku 升级备份恢复
- 模型建模流程及逻辑回归案例
- 【独家解读】谷歌会议app背景模糊和替换技术解析