Redis常用命令及故障恢复
cluster failover(主节点CPU100%,进行故障转移)
该命令只能发送到Redis Cluster从节点,它会强制副本启动其主实例的手动故障转移。
手动故障转移是一种特殊的故障转移,通常在没有实际故障时执行,但是我们希望以安全的方式将当前的主节点与其副本之一(这是我们向其发送命令的节点)交换,没有任何丢失数据的窗口。它的工作方式如下:
语法
可以通过两个选项来修改命令行为:FORCE和TAKEOVER。
redis> cluster failover [FORCE|TAKEOVER]
可用版本
>= 3.0.0
返回值
一个状态值:如果配置重写成功则返回 OK ,失败则返回一个错误。
FORCE
副本不会与主服务器进行任何握手,忽略主备同步的状态
takeover
直接执行故障failover,忽略主备同步,忽略集群其他master的投票
Config rewrite命令
Redis Config rewrite 命令对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写。
CONFIG SET 命令可以对服务器的当前配置进行修改, 而修改后的配置可能和 redis.conf 文件中所描述的配置不一样, CONFIG REWRITE 的作用就是通过尽可能少的修改, 将服务器当前所使用的配置记录到 redis.conf 文件中。
语法
redis Config rewrite 命令基本语法如下:
redis 127.0.0.1:6379> CONFIG REWRITE parameter
可用版本
>= 2.8.0
返回值
一个状态值:如果配置重写成功则返回 OK ,失败则返回一个错误。
实例
以下是执行 CONFIG REWRITE 前, 被载入到 Redis 服务器的 redis.conf 文件中关于 appendonly 选项的设置:
# ... 其他选项
appendonly no
# ... 其他选项
在执行以下命令之后:
127.0.0.1:6379> CONFIG GET appendonly # appendonly 处于关闭状态
1) "appendonly"
2) "no"
127.0.0.1:6379> CONFIG SET appendonly yes # 打开 appendonly
OK
127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "yes"
127.0.0.1:6379> CONFIG REWRITE # 将 appendonly 的修改写入到 redis.conf 中
OK
重写后的 redis.conf 文件中的 appendonly 选项将被改写:
# ... 其他选项
appendonly yes
# ... 其他选项
查看客户端连接
client list
redis> client list
id=58757433 addr=192.168.20.190:37576 fd=744 name= age=54 idle=24 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=58757434 addr=192.168.20.190:37578 fd=1533 name= age=54 idle=24 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=58757435 addr=192.168.20.190:37580 fd=1575 name= age=54 idle=24 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
id=58757149 addr=192.168.21.225:19344 fd=1527 name= age=60 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=ping
id=58757150 addr=192.168.21.225:19346 fd=1603 name= age=60 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=ping
id=58758264 addr=192.168.20.186:55012 fd=485 name= age=19 idle=19 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping
对连接的IP按连接数量进行排序
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
查看TCP连接状态
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
查看80端口连接数最多的20个IP
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
查找较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
查看当前并发访问数
netstat -an | grep ESTABLISHED | wc -l
查看访问某一ip的所有外部连接IP(数量从多到少)
netstat -nt | grep 121.41.30.149:80 | awk '{print $5}' | awk -F: '{print ($1>$4?$1:$4)}' | sort | uniq -c | sort -nr | head
查看CPU占用
# ps -ef | grep redis
root 13075 1 4 2019 ? 21:29:47 /usr/local/bin/redis-server 192.168.21.171:6379 [cluster]
root 13093 1 4 2019 ? 23:35:02 /usr/local/bin/redis-server 192.168.21.171:6380 [cluster]
# strace -c -p 13075
strace: Process 13075 attached
^Cstrace: Process 13075 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
36.31 0.344993 12 29716 write
31.51 0.299402 10 29910 74 read
29.91 0.284189 11 24794 epoll_wait
0.65 0.006134 10 608 setsockopt
0.54 0.005089 11 453 epoll_ctl
0.31 0.002930 10 304 fcntl
0.30 0.002810 12 230 close
0.18 0.001724 12 143 29 accept
0.12 0.001097 14 77 open
0.06 0.000592 16 38 38 connect
0.05 0.000502 13 38 socket
0.05 0.000446 12 38 bind
0.02 0.000163 10 17 getpeername
------ ----------- ----------- --------- --------- ----------------
100.00 0.950071 86366 141 total