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.conf

2)在db01上启动新节点
bash redis_shell.sh start 6390
bash redis_shell.sh start 6391

3)使用工具发现节点并重新分配槽位
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:6380

4)输入需要迁移多少个槽位
4096
yes
########输入db01的6390的ID#########
all
yes

5)重新做主从关系
先做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-node  IP:端口  ID

1)从库可以直接删除
2)主库槽位必须是空的并且没有数据才能删除

2.2、删除节点出错问题分析


[root@db01 /opt/redis_cluster/redis/src]# ./redis-trib.rb  del-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 REPLICATE  ID号
                redis-cli -h 10.0.0.52 -p 6381 CLUSTER REPLICATE  ID号
                redis-cli -h 10.0.0.53 -p 6381 CLUSTER REPLICATE  ID号
                redis-cli -h 10.0.0.51 -p 6391 CLUSTER REPLICATE  ID号


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


你可能感兴趣的:(day17(redis 扩容))