最基本的监控运维手段。
接入Prometheus监控,
Prometheus 提供了插件功能来实现对一个系统的监控,我们把插件称为 exporter, 每一个 exporter 实际是一个采集监控数据的组件。
Redis-exporter就是用来监控 Redis 的
慢查询日志的两个参数:
命令:
SLOWLOG GET 1
除了慢查询日志以外,Redis 从 2.8.13 版本开始,还提供了 latency monitor 监控工具, 这个工具可以用来监控 Redis 运行过程中的峰值延迟情况
config set latency-monitor-threshold 1000latency latest
在执行 redis-cli 命令时带上–bigkeys 选项,进而对整个数据库中的键值对大小 情况进行统计分析。比如说,统计每种数据类型的键值对个数以及平均大小。
这个 命令执行后,会输出每种数据类型中最大的 bigkey 的信息
./redis-cli --bigkeys
不过,在使用–bigkeys 选项时,有一个地方需要注意一下。这个工具是通过扫描数据库来 查找 bigkey 的,所以,在执行的过程中,会对 Redis 实例的性能产生影响
如果你在使 用主从集群,我建议你在从节点上执行该命令。因为主节点上执行时,会阻塞主节点。
你两个小建议:
第一个建议是,在 Redis 实例业务压力的低峰 阶段进行扫描查询,以免影响到实例的正常运行;
第二个建议是,可以使用 -i 参数控制扫 描间隔,避免长时间扫描降低 Redis 实例的性能。
./redis-cli --bigkeys -i 0.1
对于集合类型来说,这个方法只统计集合元素个数的多少,而不是实际占用的内存量。 但是,一个集合中的元素个数多,并不一定占用的内存就多。
使用 MEMORY USAGE 命令(需要 Redis 4.0 及以上版本),查询一个键值对占用的内存空间
MEMORY USAGE user:info
Redis 的 INFO replication 命令
master_repl_offset:主库接收写命令的进度信息
slave_repl_offset:从库复制写命令的进度信息
cluster slots
CLUSTER SETSLOT:使用不同的选项进行三种设置,分别是设置 Slot 要迁入的目标实例,Slot 要迁出的源实例,以及 Slot 所属的实例。CLUSTER GETKEYSINSLOT:获取某个 Slot 中一定数量的 key。MIGRATE:把一个 key 从源实例实际迁移到目标实例。
假设我们要把 Slot 300 从源实例(ID 为 3)迁移到目标实例(ID 为 5),那要怎么做 呢? 实际上,我们可以分成 5 步。
第 1 步,我们先在目标实例 5 上执行下面的命令,将 Slot 300 的源实例设置为实例 3,表 示要从实例 3 上迁入 Slot 300。
CLUSTER SETSLOT 300 IMPORTING 3
第 2 步,在源实例 3 上,我们把 Slot 300 的目标实例设置为 5,这表示,Slot 300 要迁 出到实例 5 上,如下所示:
CLUSTER SETSLOT 300 MIGRATING 5
第 3 步,从 Slot 300 中获取 100 个 key。因为 Slot 中的 key 数量可能很多,所以我们需 要在客户端上多次执行下面的这条命令,分批次获得并迁移 key。
CLUSTER GETKEYSINSLOT 300 100
第 4 步,我们把刚才获取的 100 个 key 中的 key1 迁移到目标实例 5 上(IP 为 192.168.10.5),同时把要迁入的数据库设置为 0 号数据库,把迁移的超时时间设置为timeout。我们重复执行 MIGRATE 命令,把 100 个 key 都迁移完。
MIGRATE 192.168.10.5 6379 key1 0 timeout
第5步,我们重复执行第 3 和第 4 步,直到 Slot 中的所有 key 都迁移完成。
从 Redis 3.0.6 开始,你也可以使用 KEYS 选项,一次迁移多个 key(key1、2、3),这 样可以提升迁移效率。
MIGRATE 192.168.10.5 6379 "" 0 timeout KEYS key1 key2 key3
高风险的命令,例如 KEYS、FLUSHDB、FLUSHALL 等
禁用命令,修改服务器的配置文件redis.conf,在SECURITY这一项中,我们新增以下命令:
rename-command FLUSHALL ""rename-command FLUSHDB ""rename-command CONFIG ""rename-command KEYS ""
如果还想保留命令,只是想改名
rename-command FLUSHALL joYAPNXRPmcarcR4ZDgC81TbdkSmLAzRPmcarcRrename-command FLUSHDB qf69aZbLAX3cf3ednHM3SOlbpH71yEXLAX3cf3erename-command CONFIG FRaqbC8wSA1XvpFVjCRGryWtIIZS2TRvpFVjCRGrename-command KEYS eIiGXix4A2DreBBsQwY6YHkidcDjoYA2DreBBsQ
说明:对于FLUSHALL命令,需要设置配置文件中appendonly no,否则服务器无法启动哦~
是阿里云 Redis 和 MongoDB 团队开发的一个用于 Redis 数据同步的 工具。
Redis-shake 的基本运行原理,是先启动 Redis-shake 进程,这个进程模拟了一个 Redis 实例。然后,Redis-shake 进程和数据迁出的源实例进行数据的全量同步。 这个过程和 Redis 主从实例的全量同步是类似的
源实例相当于主库,Redis-shake 相当于从库,源实例先把 RDB 文件传输给 Redis-shake,Redis-shake 会把 RDB 文件发送给目的实例。接着,源实例会再把增量命令发送 给 Redis-shake,Redis-shake 负责把这些增量命令再同步给目的实例。
sohu开源的Redis 运维管理的云平台