命令工具介绍
redis-server:Redis 服务器的daemon启动程序。
redis-cli:Redis 命令行执行工具。当然,你也可以用telnet根据其纯文本协议来操作。
redis-benchmark:Redis 性能检测工具,测试Redis在你的系统及你的配置下的读写性能。
redis-stat:Redis 状态检测工具,可以检测 Redis 当前状态参数及延迟状况(高版本的Redis将没有这个脚本)。
redis-check-dump:Redis dump 数据文件的修复工具。
redis-check-aof:Redis aof 日志文件修复工具。
脚本搭建
哨兵配置
三台机器10.124.6.25、10.124.6.26、10.124.6.27每台搭建redis哨兵 +redis ,并定义从节点
redis主要吃内存,暂且分了3G给它,以下是哨兵配置文件。
more /data/redis/redis-sentinel.conf
port 26379
dir "/data/redis"
logfile "26379.log"
daemonize yes
#允许守护进程启动
bind 0.0.0.0
sentinel myid 2a70ad1ef30f6e1b2048dd602b6b2ca27497c469
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 10.124.6.25 6379 2
#告诉sentinel去监听地址为ip port的一个master
#2代表判断主节点失败至少需要2个Sentinel节点节点同意
sentinel down-after-milliseconds mymaster 10000
#指定了需要多少失效时间
sentinel auth-pass mymaster 92mdm5wLagCKqoOo8NqR
#连接master和slave时的密码,master和slave的密码应该设置相同
sentinel config-epoch mymaster 14
# Generated by CONFIG REWRITE
sentinel leader-epoch mymaster 14
sentinel current-epoch 14
sentinel known-slave mymaster 10.124.6.26 6379
sentinel known-slave mymaster 10.124.6.27 6379
#【两个从节点】
sentinel known-sentinel mymaster 10.124.6.27 26379 df53820af9ff9c6fd7a89c040998864b05981363
sentinel known-sentinel mymaster 10.124.6.26 26379 a6ae2fb95443c3b4dc6660a1f2590f9539d3ec41
#【发送了两个Sentinel节点,这两个节点装了redis和redis哨兵模式后重启后才会出现】
#sentinel parallel-syncs mymaster 1
#当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移>操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,限制每次向新的主
#节点发起复制操作的从节点个数为1
#故障转移超时时间为180000毫秒
#sentinel failover-timeout mymaster 180000
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
redis配置
port 6379
#端口
cluster-enabled no
#开启集群功能
cluster-config-file "nodes-6379.conf"
#集群配置文件
cluster-node-timeout 5000
#集群节点超时时间,单位毫秒
cluster-slave-validity-factor 2
#选主超时,计算方式(node-timeout * slave-validity-factor+ repl-ping-slave-period)
appendonly yes
#开启AOF模式
appendfsync everysec
#everysec:每秒写入一次aof
#always:没一次写入都写一次aof,性能较差
#no:交给操作系统来维护,操作系统默认330s
maxmemory 3000000000
#最大内存
maxmemory-policy volatile-lru
#内存不足时清除策略
#noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错
#allkeys-lru:在主键空间中,优先移除最近未使用的key。
#volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。
#allkeys-random:在主键空间中,随机移除某个key。
#volatile-random:在设置了过期时间的键空间中,随机移除某个key。
#volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。
bind 0.0.0.0
#绑定IP
dir "/data/redis"
#持久化文件路径
appendfilename "appendonly.aof"
#保存数据的aof名称
daemonize yes
#后台运行
pidfile "redis.pid"
#pid文件
auto-aof-rewrite-min-size 1000000000
#做小重写aof大小,小于这个值不触发重写
#requirepass redis
logfile "redis.log"
loglevel notice
#rdb持久化
dbfilename "dump.rdb"
save 900 1
save 300 10
save 60 10000
requirepass "92mdm5wLagCKqoOo8NqR"
masterauth "92mdm5wLagCKqoOo8NqR"
cluster-slave-no-failover yes
# Generated by CONFIG REWRITE
# 主从同步。通过 slaveof 配置来实现Redis实例的备份。
# # 注意,这里是本地从远端复制数据。也就是说,本地可以有不同的数据库文件、绑定不同的IP、监听不同的端口
查看集群信息,是否从节点已经连上
/usr/local/redis/bin/redis-cli -a 92mdm5wLagCKqoOo8NqR
Warning: Using a password with '-a' option on the command line interface may not be safe.
127.0.0.1:6379> info
分配的3G内存给redis,因为redis主要吃内存
表示两个从节点已经连接上
验证主从是否同步信息
[root@gztxy-bcs-prd-fastdfs001 ~]# /usr/local/redis/bin/redis-cli -a 92mdm5wLagCKqoOo8NqR
#进入主机器写入测试
然后到从服务器拉取结果,返回一致即正确。另外可以见从服务器只能读不能写入数据
验证哨兵模式故障转移是否成功
1,停掉redis服务 sh /usr/local/redis/redis_6379.sh stop
2、三台机实时开启哨兵日志 tail -f /data/redis/26379.log
可以看到日志已经投票给了id为df...981363的redis机器
赢得投票的redis机器
redis日志解释连接
https://blog.csdn.net/shenlf_bk/article/details/79095411