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

    推荐阅读