翼度科技»论坛 云主机 LINUX 查看内容

Redis安装与使用、redis主从复制、redis集群

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
Redis

文章内容主要参考b站 运维实战课程 的redis视频:
简介

1.Redis是一个缓存数据库,主要是做缓存。什么是缓存?也就是缓冲存储,也可以理解为挡箭牌,对后面的一个保护—般放在mysql/oracle等数据库前面,对数据库进行一个保护。用户请求数据时候,第一次先请求redis,redis里没有,就请求后台mysqal数据库,返回数据时候会存放到redis里一份缓存起来,当下一次请求同样数据时候,就可以直接青求redis拿到数据,防止了对数据库的频繁访问,减轻后台数据库的压力
2.Redis是一种内存型的nosql数据库,一般是用来缓存加速的,并且能够支持数据持久化存储的设置,可以将数据持久化到硬盘里面3.Redis存储数据的方法是以key-value的形式
4.Redis数据类型支持字符串、列表、哈希等多种类型
Redis的源码编译安装

安全前的环境准备:
Centos7 关闭防火墙 关闭selinux 配置好阿里yum仓库
  1. 1.安装编译工具
  2. yum install -y vim lrzsz gcc gcc-c++ make cmake tar openssl openssl-devel
  3. 2.解压提前下载好tar.gz源码包
  4. tar -zxvf redis-6.2.13.tar.gz -C /usr/local/  //解压
  5. mv /usr/local/redis-6.2.13 /usr/local/redis  
  6. cd /usr/local/redis
  7. make && makeinstall
  8. redis-server -v
  9. cp redis.conf /etc/
  10. //如果系统都一样,没必要每台都编译安装,在一台上编译安装后,只需将编译好的二进制文件((/usr/local/ bin/redis-*)拷贝到其他服务器即可
复制代码
配置优化
  1. cp /etc/redis.conf /etc/redis.conf.bak  //备份文件
  2. sed -i '/^#/d;/^$/d' /etc/redis.conf  //删除注释空行
  3. vim /etc/redis.conf  //修改如下参数
  4. bind 0.0.0.0
  5. port 6379
  6. dir /data/redis
  7. requirepass redispwd  //添加
  8. pidfile "redis.pid"
  9. logfile "redis.log"
  10. daemonize yes
复制代码
  1. 1.启动
  2. mkdir -p /data/redis
  3. redis-server /etc/redis.conf
  4. netstat -tunlp | grep 6479
  5. cat /data/redis/redis.log  //查看日志 内存尽量2G以上
  6. 2.修改文件
  7. vim /etc/security/limits.conf
  8. * - nofile 65535  //添加
  9. vim /etc/sysctl.conf
  10. net.core.somaxconn = 10240
  11. vm.overcommit_memory = 1
  12. sysctl -p  //使上述配置生效
  13. 3.配置系统
  14. vim /usr/lib/systemd/system/redis.service
  15. [Unit]
  16. Description=redis-server
  17. After=network.target
  18. [Service]
  19. Type=forking
  20. ExecStart=/usr/local/bin/redis-server /etc/redis.conf
  21. PrivateTmp=true
  22. [Install]
  23. WantedBy=multi-user.target
复制代码
基本操作
  1. 1.redis-cli使用和认证登录
  2. redis-cli -h ip  //无密码
  3. redis-cli -a password  //登录+认证
  4. 2.redis常用数据类型
  5. 字符串
  6. 列表、集合
  7. hash、发布和订阅
  8. 3.redis字符串操作
  9. set name xux           //增加key并赋值
  10. keys *                    //显示所有的key
  11. get name                   //获取key的值
  12. set name xuxu           //重新给key赋值
  13. del name                   //删除key
  14. //大小写问题
  15. 命令不区分大小写
  16. key区分大小写
  17. set name ccc
  18. set Name xxx
  19. //非交互式操作redis
  20. redis-cli -a password set name xuxuxu
  21. redis-cli -a password get name
  22. //使用shell批量写入数据并获取
  23. for i in $(seq -w 10);do redis-cli -a 123456 set name${i} test${i};done
  24. 4.redis列表和集合的基本操作
  25. 4.1 redis列表
  26. 特点:列表是有顺序的 可写入重复的数据
  27. 如:['s1','s2','s3'...]
  28. rpush names s1  //依次在列表右侧逐步添加数据
  29. rpush names s2
  30. rpush names s3
  31. ['s3','s2','s1'...]
  32. lpushu names2 s1  //左侧逐步添加数据
  33. lpushu names2 s2
  34. lpushu names2 s3
  35. lrange names 0 2  //读取第1到第3个列表值
  36. lrange names 0 -2 //读取第1到倒数第2个列表值
  37. LLEN names  //列出列表的长度
  38. LREM names 1 s1  //删除列表names中一个s1
  39. LREM names 0 s2  //删除列表names中所有的s2
  40. lpop names  //左弹出
  41. rpop names  //右弹出
  42. 4.2 redis集合
  43. 特点:无顺序的、不重复的
  44. sadd a a1  //创建集合a并添加元素
  45. sadd a a2
  46. sadd a a3
  47. SMEMBERS a  //列出集合中的所有元素
  48. srem a a1  //删除集合中元素a
  49. spop a  //集合随机弹出一个元素
  50. SISMEMBER a a1  //判断元素是否在集合里 0代表不在,1代表在
  51. 5.redis哈希和订阅类型基本操作
  52. 5.1.hash类型数据操作
  53. Hash 写入
  54. hset haxi name ha  //创建一个hash名字haxi
  55. hset haxi laocation beijing
  56. hset haxi age 18
  57. hset haxi sex man
  58. hash获取
  59. HGETALL haxi  //获取hash名字里的所有key value对
  60. HGET haxi name  //获取hash名字里的单个key的值
  61. Hash删除
  62. HDEL haxi age  //删除hash名字的单个key
  63. DEL haxi  //删除整个hash
  64. hash批量删除
  65. hmset haxi name hx666 age 20 location beijing sex boy
  66. 5.2.redis的发布订阅
  67. subscribe fabu  //订阅fabu频道
  68. public fabu "name shi,age 20,sex boy"  //往频道发布数据,订阅可以收到发布的消息
复制代码
不同数据库切换和运维监控命令
  1. 1.数据库切换
  2. //查看redis默认库
  3. grep databases /etc/redis.conf
  4. //redis数据库的切换
  5. select 0
  6. select 1
  7. //不同的数据库是独立的
  8. select 0  //默认是0库
  9. 2.redis运维监控命令
  10. //查看key
  11. RANDOMKEY    //随机获取一个key
  12. KEYS *          //查看所有key,注意阻塞,如果key量特别大的时候,容易卡死阻塞
  13. SCAN 0          //建议使用,每次获取11个key,可以循环获取 每次获取都会提示下次获取的编号 直到0是获取完了
  14. //监控命令
  15. redis-cli -a password --stat   //监控redis状态
  16. redis-cli -a password monitor  //监控数据操作
  17. redis-cli -a password info     //监控系统可通过info获取数据
  18. redis-cli -a password info Server  //单个模块的info信息
  19. ...
复制代码
redis配置动态更新和写入
  1. 1.redis更新配置的两种方式
  2. a.重启更新,需要修改配置文件,然后重启
  3. b.实时更新,不需要重启
  4. 重启更新密码
  5. vim /etc/redis.conf
  6. requirepass 12345678
  7. 动态更新密码
  8. config set requirepass
  9. config set requirepass 123456  //临时修改并有没有写入配置文件
  10. config rewrite  //写入配置文件
  11. 2.查看redis的相关链接数
  12. info clients  //查看当前的redis连接数
  13. config get maxclients  //查看redis允许的最大连接数
  14. 3.大部分配置都能通过config命令进行修改,然后写入配置文件
  15. config set maxclients 20000 //默认10000
复制代码
redis的多用户管理
  1. //老版本没有用户名,只有密码
  2. redis6已经又用户名,默认用户名default
  3. 1.列出所有用户,默认只有default超级用户,并查看default用户相关信息
  4. ACL LIST  //列出所有用户,默认用户是default
  5. ACL getuser default  //查看default用户的相关信息,default对所有的key,所有命令均有权限,最高权限,是默认用户。
  6. 2.创建用户并给用户授权
  7. ACL CAT  //查看所有权限
  8. 例如:创建test用户只有一个get命令权限,读权限,并且只能get是name开头的key:name*
  9. ACL SETUSER test on >testpwd ~name* +get   //~正则
  10. ACL SETUSER test on >testpwd ~name* +@read  //+@read 只增加test用户所在组的读权限。
  11. redis-cli --user test --pass testpwd  //登录test用户进行get v1验证
  12. 3.常用权限案例:
  13. ACL SETUSER test1 on >test1pwd ~* +@all  //创建用户赋给所有权限
  14. 4.删除用户
  15. ACL DELUSER test1
  16. 5.写入配置文件
  17. config rewrite
复制代码
redis的慢日志与key的有效期
  1. 问:有人反馈redis慢,如何进行排查
  2. 系统资源情况
  3. 查看慢日志情况
  4. 1.redis慢日志
  5. //查看慢日志的默认配置
  6. CONFIG GET slow*  //查看慢日志的配置
  7. //查询慢日志
  8. SLOWLOG get   //默认获取仅10条
  9. SLOWLOG get5  //获取5条
  10. SLOWLOG len   //慢日志量,查看慢日志的条数
  11. SLOWLOG reset  //情况慢日志
  12. 2.key的有效期
  13. //给redis的key设置有效期,-1表示永久,-2表示redis回收了(key已经自动删除)
  14. TTL name  //查看key值的有效期
  15. expire name 20  //给key设置有效期,单位:秒,设置有效期是20s
  16. set name2 test2 EX 20  //在创建key的时候直接给key设置有效期20s
复制代码
慢日志字段解释

redis禁用危险命令和压测工具
  1. 1.redis禁用危险命令
  2. FLUSHALL  //会清空redis所有数据
  3. FLUSHDB   //会清除当前DB所有数据
  4. KEYS *    //数据阻塞
  5. //禁用需要修改redis的配置文件,然后重启redis
  6. vim /etc/redis.conf
  7. rename-command FLUSHALL ""
  8. rename-command FLUSHDB ""
  9. rename-command KEY ""
  10. 2.redis压测工具
  11. redis-benchmark --help
  12. redis-benchmark -a password | tee /tmp/a.log  //将测试结果输出到一个log文件
  13. //相当于会将每个命令都测一遍,返回测试结果,默认并发50 10万次请求
  14. redis-benchmark -a 123456 -n 10000   //用默认并发数50 1000次请求进行压测  
复制代码
redis的两种持久化方式存储
  1. 1.redis持久化存储的两种方式
  2. RDB方式 RDB存储是redis实现的一种存储机制(默认开启)
  3. AOF方式 AOF存储方式,直接把操作的命令记录下来,保存到一个文件里,类似mysql的binlog日志(默认关闭)
  4. 2.redis的RDB持久化存储
  5. redis默认是开启了RDB快照方式,提供持久化存储的功能
  6. //redis的RDB存储方式的配置
  7. config get dir  //查看存储设置的路径
  8. config get dbfilename  //查看rdb存储的文件名
  9. ls /data/redis
  10. dump.rdb   //持久化文件
  11. //通过修改配置文件关闭rdb持久化
  12. vim /etc/redis.conf   //注释掉save 添加save "" 重启redis
  13. save ""
  14. #save 3600 1
  15. #save 300 100
  16. #save 60 10000
  17. 3.redis的AOF持久化存储
  18. AOF存储默认是关闭的
  19. AOF存储是把命令直接写入到文件中,文件会不断扩大
  20. //开启AOF前先关闭RDB
  21. //开启AOF存储方式
  22. config get append*  //查看AOF状态,默认是关闭的
  23. config set appendonly yes  //开启AOF存储
  24. config rewrite  //写入配置文件
  25. //写入数据就可以发现 /data/redis/ 有了appendonly.aof文件
  26. //AOF文件的重写
  27. 当AOF文件增大到一定程度,我们可以对他进行重写,重写AOF文件可以减小AOF文件的大小,数据不会减少
  28. //重写的方式有两种,手动重写和自动重写
  29. BGREWRITEAOF  //手动重写
  30. config get *aof*  //查看自动重写文件 默认自动重写的条件是aof文件大小>67m,aof文件增大了一倍
  31. 注意:在业务高峰压力大时采用自动触发重写,可能会影响业务,可选择在压力小的时候脚本运行BGREWRITEAOF
复制代码
redis的RDB工具分析key的大小
  1. 1.什么是redis的大key?
  2. redis存储数据的时候,当某个key的值比较大〈包括字符串、列表等数据类型),key的数据越大,占用的内存和空间就越多。也就是key对应的value很大。
  3. string类型的数据: 长度大于10K,认为是大key
  4. list列表类型的数据:长度大于10240,认为是大key
  5. 2.扫描和分析大key
  6. 2.1方法一
  7. redis-cli -a password --bigkeys
  8. 2.2方法二
  9. 使用rdb工具分析大key
  10. 3.删除大key
  11. DEL k1
复制代码
redis的主从复制
  1. 1.redis单台服务器的缺点
  2. 如果持久化,单台数据有丢失风险
  3. 读写压力都集中在一台上
  4. 2.redis的主从复制概念
  5. redis的主从就是堕胎redis数据一致
  6. 主服务器可以用来写入和读取,从服务器仅用来读取,可以通过读写分离,降低服务器的压力
  7. 3.redis的主从搭建
  8. 主redis的配置
  9. vim /etc/redis.conf
  10. bind 0.0.0.0
  11. port 6379
  12. dir "/data/redis"
  13. requirepass "redispwd"
  14. pidfile "redis.pid"
  15. logfile "redis.log"
  16. daemonize yes
  17. 从redis的配置
  18. vim /etc/redis.conf
  19. bind 0.0.0.0
  20. port 6379
  21. dir "/data/redis"
  22. requirepass "redispwd"
  23. pidfile "redis.pid"
  24. logfile "redis.log"
  25. daemonize yes
  26. slaveof 192.168.70.134 6379  //指定主服务器的redis的ip和端口
  27. masterauth "password"   //指定主redis的密码
  28. //再开一台服务器,把master的文件copy过去
  29. [root@master bin]# scp -r /usr/local/bin/redis-* root@192.168.70.133:/usr/local/bin/  //复制bin下面的redis二进制文件
  30. [root@slave bin]# redis-cli -v  
  31. redis-cli 6.2.13
  32. [root@slave bin]# mkdir -p /data/redis  //创建数据目录
  33. [root@master bin]# scp /etc/redis.conf root@192.168.70.133:/etc/  //复制主的配置文件
  34. [root@slave bin]# vim /etc/redis.conf  //修改配置文件
  35. //删除最后一行user  添加如下
  36. slaveof 192.168.70.134 6379
  37. masterauth "password"
  38. [root@slave bin]# redis-server /etc/redis.conf  //启动
  39. set k1 v1   //主redis创建数据 测试从redis是否同步
复制代码
redis高可以用
  1. //高可用模式搭建
  2. 为了防止哨兵的单节点故障,一般哨兵也做成高可用形式,即多个哨兵同时监控redis的状态,当其中一个哨兵故障时候,其他哨兵也能继续监控。为了方便哨兵的选举,一般哨兵也是设置成奇数个。一般3个哨兵就没问题。
  3. //准备:
  4. 192.168.70.134   主         哨兵1
  5. 192.168.70.133   从1  哨兵2
  6. 192.168.70.136   从2  哨兵3
  7. 1.在前面主从复制的基础上我们在搭建一台从redis  
  8. [root@slave bin]# scp -r /usr/local/bin/redis-* root@192.168.70.136:/usr/local/bin/  //直接复制slave1的文件即可
  9. [root@slave bin]# scp /etc/redis.conf root@192.168.70.136:/etc/
  10. [root@slave2 ~]# mkdir -p /data/redis  //创建数据目录
  11. //修改主配置文件
  12. [root@master ~]# masterauth "123456"  //添加 有可能这台机器以后变成从 所以也要添加
  13. 2.配置3哨兵 3台机器都一样  注意密码设置你自己的密码
  14. vim /etc/sentinel.conf
  15. bind 0.0.0.0
  16. daemonize yes
  17. port 26379
  18. dir "/tmp"
  19. logfile "sentinel.log"
  20. sentinel monitor testmaster 192.168.70.134 6379 2
  21. sentinel auth-pass testmaster password  
  22. sentinel down-after-milliseconds testmaster 5000
  23. sentinel failover-timeout testmaster 18000
  24. 3.启动3哨兵a
  25. /usr/local/bin/redis-sentinel /etc/sentinel.conf
  26. 4.验证哨兵实现的高可用redis
  27. a.停止master redis服务
  28. systemctl stop redis    //kill也行
  29. b.查看其他两个从redis,其中一个已经提升为主
  30. redis-cli -a password info
  31. c.再次启动redis 发现原主redis已经成为了slave
  32. 5.验证一下哨兵的高可用性
  33. a.在原主192.168.70.134那台机器上,杀死一个哨兵,模拟一个哨兵服务挂掉再验证还能不能实现高可用
  34. [root@rabbit01 bin]# ps -ef | grep sen
  35. root       1433      1  0 22:30 ?        00:00:01 /usr/local/bin/redis-sentinel 0.0.0.0:36379 [sentinel]
  36. root       1487   1210  0 22:40 pts/0    00:00:00 grep --color=auto sen
  37. [root@rabbit01 bin]# kill -9 1433
  38. b.再关闭新主redis  
  39. kill -9 1243
  40. c.查看是否生成了新的主redis
  41. redis-cli -a password info
复制代码
redis cluster集群搭建和高可用故障切换演示
  1. 1.redis主从模式和cluster分片集群区别
  2. redis主从模式,是所有redis数据一致,但是key过多了会影响性能
  3. cluster分片集群,可以将数据分散到多个redis节点,数据分片存储,能够提高redis的吞吐量
  4. 2.redis cluster集群特点
  5. 数据分片
  6. 多个入口
  7. 故障自动切换
  8. 3.redis cluster集群的搭建构建
  9. redis集群至少需要三主三从
  10. 4.redis自带集群搭建
  11. a.目录和机器规划:
  12. 目录:/data/cluster
  13. 三主:192.168.70.133:7000                  192.168.70.134:7001                    192.168.70.136:7002
  14. 三从:192.168.70.133:8000(7002的从) 192.168.70.134:8001(7000的从)  192.168.70.136:8002(7001的从)
  15. 先把之前的环境清理,结束掉redi 和哨兵胡,再直接删掉/data/redis/*
  16. b.修改redis的配置文件: 只有端口和路径不一样
  17. //第一台机器
  18. mkdir /data/cluster/7000 -p
  19. mkdir /data/cluster/8000 -p
  20. vim /data/cluster/7000/redis.conf
  21. vim /data/cluster/8000/redis.conf
  22. //第二台机器
  23. mkdir /data/cluster/7001 -p
  24. mkdir /data/cluster/8001 -p
  25. vim /data/cluster/7001/redis.conf
  26. vim /data/cluster/8001/redis.conf
  27. //第三台机器
  28. mkdir /data/cluster/7002 -p
  29. mkdir /data/cluster/8002 -p
  30. vim /data/cluster/7003/redis.conf
  31. vim /data/cluster/8003/redis.conf
  32. //六个配置文件都如下 只有端口和路径需要修改对应的
  33. vim /data/cluster/7000/redis.conf
  34. cluster-enabled yes
  35. port 7000
  36. dir "/data/cluster/7000"
  37. logfile "redis.log"
  38. pidfile "redis.pid"
  39. daemonize yes
  40. bind 0.0.0.0
  41. requirepass 123456
  42. masterauth 123456
  43. tcp-backlog 1024
  44. tcp-keepalive 0
  45. loglevel notice
  46. stop-writes-on-bgsave-error yes
  47. rdbcompression yes
  48. rdbchecksum yes
  49. save 900 1
  50. save 300 10
  51. save 60 10000
  52. dbfilename "dump.rdb"
  53. slave-server-stale-data yes
  54. slave-read-only yes
  55. repl-diskless-sync no
  56. repl-diskless-sync-delay 5
  57. repl-disable-tcp-nodelay no
  58. slave-priority 100
  59. appendonly no
  60. appendfilename "appendonly.aof"
  61. appendfsync everysec
  62. no-appendfsync-on-rewrite yes
  63. auto-aof-rewrite-percentage 100
  64. auto-aof-rewrite-min-size 64mb
  65. aof-load-truncated yes
  66. lua-time-limit 5000
  67. slowlog-log-slower-than 10000
  68. slowlog-max-len 128
  69. latency-monitor-threshold 0
  70. notify-keyspace-events ""
  71. hash-max-ziplist-entries 512
  72. hash-max-ziplist-value 64
  73. list-max-ziplist-entries 512
  74. list-max-ziplist-value 64
  75. set-max-intset-entries 512
  76. zset-max-ziplist-entries 128
  77. zset-max-ziplist-value 64
  78. hll-sparse-max-bytes 3000
  79. activerehashing yes
  80. client-output-buffer-limit normal 0 0 0
  81. client-output-buffer-limit slave 256mb 64mb 60
  82. client-output-buffer-limit pubsub 32mb 8mb 60
  83. hz 10
  84. aof-rewrite-incremental-fsync yes
  85. //依次启动
  86. redis-server /data/cluster/7000/redis.conf  7001 7002
  87. c.创建3主机群,在任何一个节点都行
  88. redis-cli -a 123456 --cluster create 192.168.70.133:7000 192.168.70.134:7001 192.168.70.136:7002
  89. redis-cli -a 123456 -p 7000 cluster info  //查看集群信息
  90. redis-cli -a 123456 -p 7000 cluster nodes  //查看节点信息
  91. //数据写入会自动随机分配到各个节点
  92. redis-cli -a 123456 -p 7000 -c   //登录  -c 集群环境下
  93. 127.0.0.1:7000> set k1 v1   //写入数据发现数据被写入 7002节点上了  
  94. -> Redirected to slot [12706] located at 192.168.70.136:7002
  95. OK
  96. d.上述实现了解决高并发问题,下面增加搭建3从集群,实现redis高可用
  97. //先启动3个从redis 192.168.70.133:8000 192.168.70.134:8001 192.168.70.136:8002  
  98. redis-cli -a 123456 -p 7000 cluster nodes  //查看集群的各个节点状态和master-id
  99. //依次添加  注意:ip顺序不能颠倒
  100. redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id 7000master的id 192.168.70.134:8001 192.168.70.133:7000
  101. redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id 7001master的id 192.168.70.136:8002 192.168.70.134:7001
  102. redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id 7002master的id 192.168.70.133:8000 192.168.70.136:7002
  103. 例:
  104. redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id 26533684353ab52ea0a02cb6e87299e1f15dfd50 192.168.70.134:8001 192.168.70.133:7000
  105. //成功后查看node 可以发现已经添加了一个slave
  106. redis-cli -a 123456 -p 7000 cluster nodes
  107. f.验证
  108. //停止133:7000主库的redis
  109. //再查看nodes
  110. redis-cli -a 123456 -p 8000 cluster nodes   //会发现8001已经提升为主redis了 并且8001上的数据跟7000数据一致
  111. //恢复133:7000 自动作为从角色运行
  112. redis-server /data/cluster/7000/redis.conf
  113. //手动提升为主库
  114. redis-cli -a 123456 -p 7000 -c  //先登录
  115. CLUSTER FAILOVER  //执行该命令
  116. info  //查询信息  可以发现成为了master
复制代码
redis cluster集群增加节点和删除节点
  1. //在上述集群基础上做增加节点
  2. 1.搭建新服务器的redis
  3. scp -r /usr/local/bin/redis-* root@192.168.70.132:/usr/local/bin/  //复制
  4. mkdir -p /data/cluster/7003
  5. mkdir -p /data/cluster/8003
  6. scp -r /data/cluster/7000/redis.conf root@192.168.70.132:/data/cluster/8003/
  7. vim /data/cluster/8003/redis.conf  //修改端口和地址
  8. redis-server /data/cluster/7003/redis.conf  //启动
  9. 2.加入集群
  10. //在redis集群中加入一个新的主节点(在任意一台集群的节点操作即可)
  11. redis-cli -a 123456 --cluster add-node 192.168.70.132:7003 192.168.70.133:7000
  12. //加入从节点
  13. redis-server /data/cluster/8003/redis.conf
  14. redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id 9980d04a047fa52918bb50f7a2b7b530c138f8eb 192.168.70.132:8003 192.168.70.132:7003   //加入从节点
  15. //加入完成后但是没有分配卡槽,不能存放数据
  16. 3.给新增的redis分配槽位(在集群的任何一个节点即可)
  17. 方法:将一个主节点的槽位移动到新主节点一部分
  18. redis-cli -a 123456 --cluster reshard 192.168.70.133:7000  
  19. //根据提示依次输入1. 2000 (分配2000,也可自定只要在范围之内) 2.接收者id 也就是7003 node的id 3.源id也就是7000 id 4.done 5.yes
  20. 4.测试
  21. redis-cli -a 123456 -p 7003 -c  //登录
  22. set k4 v4   //创建
  23. //验证高可用
  24. kill 7003的进程
  25. redis-cli -a 123456 -p 8003 cluster nodes  //可以看到8003已经成为master
  26. redis-server /data/cluster/7003/redis.conf  //恢复
  27. 5.删除节点(删除节点操作也可以在任意节点操作)
  28. redis-cli -a 123456 --cluster del-node 对应主库的ip:端口 对应从库的id
  29. //移除从库 8003节点
  30. redis-cli -a 123456 --cluster del-node 192.168.70.132:7003 376c471158d25260e98d7d51764d78cdb7cad935
  31. //移除主库 7003节点 (主节点上如果有数据则不能移除,删除之前需要把主节点的数据进行迁移)
  32. redis-cli -a 123456 --cluster reshard 192.168.70.133:7000  //把数据还给7000 同样根据提示操作 1. 2000 2.7000 ip 3.7003 ip 4.done 5.yes
  33. redis-cli -a 123456 --cluster del-node 指定随便其他的一个主库ip:端口 对应从库的id
  34. redis-cli -a 123456 --cluster del-node 192.168.70.133:7000 9980d04a047fa52918bb50f7a2b7b530c138f8eb  //删除节点 再查看节点会发现已成功删除
复制代码
来源:https://www.cnblogs.com/xuxuxuxuxu/p/17678535.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具