主从配置 redis哨兵模式"/>
redis主从配置 redis哨兵模式
redis主从复制(两台从一台主) 在同一台linux虚拟机下
配置dhub位置 设置的位置为根目录下的 myredis 配置生成aof文件和rdb文件的位置
配置后台启动
配置密码
开启aof
aof和rdb同时开启 系统默认取aof的数据
如果aop文件损坏 通过/usr/local/bin/redis-check-aof--fix appendonly.aof进行恢复
备份被写坏的aof文件
恢复:重启redis 然后重新加载
- AOF文件是一个只进行追加的日志文件
- Redis可以在AOF文件体积变的过大的时候自动在后台对AOF进行重写
- AOF文件有序地保存了对数据库执行的所有写的操作,这些写入操作以Redis协议的格式保存,因此AOF文件的内容非常容易被人读懂,对文件进行分析也很轻松。
- 对于相同的数据集来说,AOF文件的体积通常要大于RDB文件的体积
- 根据所使用的fsync策略,AOF的速度可能会慢于RDB
- 官方推荐两个都启用。
- 如果对数据不敏感,可以选单独用RDB。
- 不建议单独用 AOF,因为可能会出现Bug。
- 如果只是做纯内存缓存,可以都不用。
Redis6 主从复制(6380为主 6379和6381为从)
master以写为主 slave以读为主
新建redis6379.conf,填写以下内容
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
新建redis6380.conf,填写以下内容
include /myredis/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
新建redis6381.conf,填写以下内容
include /myredis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
启动三台redis
[root@iZ2ze2rikqlh3ql1n2cw61Z bin]# kill -9 57468
[root@iZ2ze2rikqlh3ql1n2cw61Z bin]# ./redis-server /myredis/redis6379.conf
[root@iZ2ze2rikqlh3ql1n2cw61Z bin]# ./redis-server /myredis/redis6380.conf
[root@iZ2ze2rikqlh3ql1n2cw61Z bin]# ./redis-server /myredis/redis6381.conf
查看是否启动成功
查看三台主机的运行情况
如果有密码需要配置在客户端运行 (如果配置哨兵模式的话 需要在三台个端口运行)
config set masterauth 123456(密码为123456)
如果在Redis配置文件中设置了masterauth密码,但没有设置requirepass密码,那么连接到Redis服务器上的客户端需要提供masterauth密码才能进行主从复制操作。然而,对于其他操作(如读取或写入数据)来说,客户端不需要提供密码。这意味着,即使没有设置requirepass密码,客户端仍然可以直接执行非复制操作。因此,建议同时设置requirepass和masterauth密码,以确保对Redis服务器的整体安全进行综合保护。
config rewrite
发现三台主机均为master
在要改为从节点的两台上运行
slaveof 127.0.0.1 6379
slaveof 127.0.0.1 6380
rdb
优势
适合大规模的数据恢复
对数据完整性和一致性要求不高更适合使用
节省磁盘空间
恢复速度快
劣势
fork的时候内存中的数据被克隆了一份 大致有两倍的膨胀值需要考虑
虽然redis在fork时使用了写时拷贝技术 但是如果数据庞大的话还是比较消耗性能
save
383 save 3600 1 # an hour至少有1个key发生变化做持久化
384 save 300 100 # 5 minutes至少有100个key发生变化做持久化
385 save 60 10000 #或60秒内10000key发生了变化做持久化操作。
redis集群反客为主(主节点挂掉后 手动把从节点变为主节点)
主节点为6379
在6380上运行
slaveof 127.0.0.1 6379
在6381上运行
slaveof 127.0.0.1 6380
然后使主服务器挂掉
发现6380 和6381为从节点
在6380上运行
127.0.0.1:6380> slaveof no one
查看6380状态 发现6380变成了主节点
Redis 高可用(哨兵模式 反客为主自动版)
vi sentinel.conf
sentinel monitor mymaster 127.0.0.1 6380 1
# 如果master有密码需要配置在该文件中配置密码
sentinel auth-pass mymaster 123456
查看三个节点的运行情况 (为一主二从 主节点为6380)
运行sentinel.conf
[root@localhost myredis]# /usr/local/bin/redis-sentinel ./sentinel.conf
此时关闭6380
可以发现6381变成了主节点
同时查看sentinel.conf 文件6381变成了主节点
启动6380 查看6380状态
故障恢复
- 从旧的master的slave中选取新的master:从所有的从服务挑选一个作为主服务,将其变为主服务,选择的条件依次是:
- 选择优先级靠前的(replica-priority 100,值越小优先级越高)
- 选择偏移量最大的(看所有从服务器中谁同步主服务器的数据量最接近就选谁)
- 选择runid最小的从服务(如果所有从服务器同步的值的数量一样多,那么就用这个方式选择)
- 其他的slave认新的master为主节点:挑选出新的主服务之后sentinel向原主服务的从服务发送slaveof新主服务的命令,复制新的master
- 当旧的master启动时 成为新的master的slave:当已下线的服务重新上线的时候,sentinel会向其发送slaveof命令,让其称为新主的从
- 优先级在redis.conf中默认:
replica-priority 100(R670),值越小优先级越高
更多推荐
redis主从配置 redis哨兵模式
发布评论