day17(redis|day17(redis 扩容)
1、redis扩容
1)在db01上创建新节点
mkdir -p /opt/redis_cluster/redis_{6390,6391}/{conf,logs,pid}
mkdir -p /data/redis_cluster/redis_{6390,6391}
cd /opt/redis_cluster/
cp redis_6380/conf/redis_6380.conf redis_6390/conf/redis_6390.conf
cp redis_6380/conf/redis_6380.conf redis_6391/conf/redis_6391.conf
sed -i 's#6380#6390#g' redis_6390/conf/redis_6390.conf
sed -i 's#6380#6391#g' redis_6391/conf/redis_6391.conf2)在db01上启动新节点
bash redis_shell.sh start 6390
bash redis_shell.sh start 63913)使用工具发现节点并重新分配槽位
cd /opt/redis_cluster/redis/src/
./redis-trib.rb add-node 10.0.0.51:6390 10.0.0.51:6380
./redis-trib.rb add-node 10.0.0.51:6391 10.0.0.51:6380
./redis-trib.rb reshard 10.0.0.51:63804)输入需要迁移多少个槽位
4096
yes
########输入db01的6390的ID#########
all
yes5)重新做主从关系
先做db03的6381复制db01的6390
再做db01的6391复制db01的6380
2、redis收容
收缩节点:
#进入脚本目录
cd /opt/redis_cluster/redis/src/
./redis-trib.rb reshard 10.0.0.51:6391#输入要迁移的槽数
1365#输入接收的节点的ID
xxxxx#输入源节点的ID
1.xxxxx
2.done#输入确认
yes从10.0.0.51:6390收容三次
2.1、删除节点
./redis-trib.rb del-nodeIP:端口ID1)从库可以直接删除
2)主库槽位必须是空的并且没有数据才能删除
2.2、删除节点出错问题分析
[root@db01 /opt/redis_cluster/redis/src]# ./redis-trib.rbdel-node 10.0.0.51:6380 01eab3c9f767c88fdbc94f3a7e39ee65ce30baa1
>>> Removing node 01eab3c9f767c88fdbc94f3a7e39ee65ce30baa1 from cluster 10.0.0.51:6380
[ERR] Node 10.0.0.51:6380 is not empty! Reshard data away and try again.问题:
1)主从关系不对
2)没分配槽位直接做了主从
3)出现问题可以尝试实用工具的fix功能
cd /opt/redis_cluster/redis/src/
./redis-trib.rb fix 10.0.0.51:6380
4)快速重新做个4主4从的集群
1.停掉所有节点
pkill redis
2.删除所有节点数据
rm -rf /data/redis_cluster/redis_6380/*
rm -rf /data/redis_cluster/redis_6381/*
3.所有节点重新启动redis
sh redis_shell.sh start 6380
sh redis_shell.sh start 6380
4.利用工具创建集群
cd /opt/redis_cluster/redis/src/
./redis-trib.rb create --replicas 1 10.0.0.51:6380 10.0.0.51:6390 10.0.0.52:6380 10.0.0.53:6380 10.0.0.51:6381 10.0.0.51:6391 10.0.0.52:6381 10.0.0.53:6381
5.重新分配主从关系
redis-cli -h 10.0.0.51 -p 6381 CLUSTER REPLICATEID号
redis-cli -h 10.0.0.52 -p 6381 CLUSTER REPLICATEID号
redis-cli -h 10.0.0.53 -p 6381 CLUSTER REPLICATEID号
redis-cli -h 10.0.0.51 -p 6391 CLUSTER REPLICATEID号
3、数据导入导出工具
1.安装工具
cd /opt/redis_cluster/
git clone https://github.com/vipshop/redis-migrate-tool.git
cd redis-migrate-tool/
autoreconf -fvi
./configure
make && make install 2.生成配置文件
cat > redis_6379_to_6380.conf<
4、分析占用空间比较大的键
需求背景
redis的内存使用太大键值太多,不知道哪些键值占用的容量比较大,而且在线分析会影响性能.安装工具
yum install python-pip gcc
pip install --upgrade pip
pip install rdbtools使用方法
cd /data/redis_cluster/redis_6379/
rdb -c memory redis_6379.rdb -f 6379_memory.csv分析rdb
awk -F ',' '{print $4,$2,$3,$1}' 6379_memory.csv |sort> 6379.sort
推荐阅读
- springboot使用redis缓存
- (1)redis集群原理及搭建与使用(1)
- springboot结合redis实现搜索栏热搜功能及文字过滤
- Redis——发布订阅/消息队列
- redis|redis 常见问题一
- 实操Redission|实操Redission 分布式服务
- 二、Redis的五种常用数据类型
- 深入理解redis——布隆过滤器BloomFilter
- redis哨兵模式
- 关于分布式锁|关于分布式锁 Redis 与 Zookeeper 的原理,它们如何实现分布式锁()