Redis主备
1、测试环境准备
centos7.6,redis7.0.7,redis编译依赖,
redis下载地址:https://wwrr.lanzoul.com/b031uxy0h 密码:7v2i
2、编译redis
将redis编译依赖包,解压缩,并安装
tar xzf redis_package.tar.gz
cd redis_package
rpm -ivh *.rpm --nodeps --force
解压redis7.0.7压缩包,并编译
tar xzf redis-7.0.7.tar.gz
cd redis-7.0.7
make
执行make编译后可能会遇到以下报错
redis安装zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
解决方案:
make MALLOC=libc
3、编译完的redis程序会在当前src目录下,可以将程序复制到另外的地方
mkdir /redis
cp src/redis* /redis/
cd /redis/
rm -rf *.c
复制redis的配置文件和哨兵的配置文件
###redis配置文件
cp redis.conf /redis/
###哨兵配置文件
cp sentinel.conf /redis/
4、redis启动
###可以直接执行脚本启动,也可在脚本后添加配置文件路径启动
./redis-server redis.conf
5、启动成功后,修改配置文件,搭建主备
###编辑redis配置文件
vim redis.conf
###取消只允许本机IP访问,将此配置注释掉(主备都需要操作)
bind 127.0.0.1 -::1
###主机关闭保护模式,将yes改成no(只主机操作),也可以添加密码保护,就不用关保护模式
protected-mode yes
###备机添加主机IP信息,如实填写(只备机操作)
slaveof 主机ip 端口
6、打开主和备机防火墙redis端口
###临时关闭防火墙
systemctl stop firewalld
###防火墙打开6379端口
firewall-cmd --permanent --add-port=6379/tcp --zone=public
7、启动主机redis,启动成功后启动备机redis。
8、主机连接redis,添加数据测试备机是否同步
###连接主机redis
./redis-cli
###添加数据
127.0.0.1:6379> set b 456
OK
###查看添加数据
127.0.0.1:6379> get b
"456"
###连接备机redis
./redis-cli
###查询刚才主机添加的数据,可以成功查到代表同步成功
127.0.0.1:6379> get b
"456"
9、redis主备添加密码保护(如有需要)
###1、打开主机配置文件
vim redis.conf
###2、找到配置去掉注释,添加自定义密码
requirepass 自定义密码
###3、启动主机redis
###4、打开备机配置文件
vim redis.conf
###5、找到配置去掉注释,添加主机密码
masterauth 主机密码
###6、启动备机
10、redis-cli命令简介
###指定IP,端口,密码登录
redis-cli -h IP -p 端口 -a 密码
###导出rdb文件
redis-cli --rdb filename
###标准输入读取最后一个参数,设置b的值为456。(echo默认有\n换行符,需要加-n参数去掉)
echo -n "456" | redis-cli -x -a 684594ryd set b
###控制台命令
SET key value #给一个键设置值
GET key #获取键的值
DEl key #删除键
DBSIZE #返回当前库的key总数
SAVE #同步保存数据到硬盘
BGSAVE #异步保存数据到硬盘
INFO #提供服务器的信息和统计信息
redis哨兵设置
1、哨兵配置文件详解sentinel.conf
###当前Sentinel服务运行的端口;
port <port>
###日志文件位置
logfile <logfile-full-path>
###添加为后台运行
daemonize yes
###Sentinel服务运行时使用的临时文件夹;
dir <dir>
###指定redis的master节点名称(自定义)、地址、端口、客观认定数量;quorum表示需要几个哨兵节点确认才可将master的状态从“主观不可用”变为“客观不可用”;
sentinel monitor <master-name> <ip> <port> <quorum>
###设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同,如果没有密码可以不设置该配置项;
sentinel auth-pass <master-name> <password>
###Sentinel认为Redis实例已经失效所需的毫秒数;
sentinel down-after-milliseconds <master-name> <time>
###表示如果在该时间(ms)后,master仍没活过来,则启动failover,从剩下的slave中选一个升级为master;
sentinel failover-timeout <master-name> <time>
2、打开主和备机的哨兵服务端口
###防火墙打开26379端口
firewall-cmd --permanent --add-port=26379/tcp --zone=public
3、哨兵启动
redis-sentinel sentinel.conf
注意点:
①哨兵的端口需要防火墙放开,否则会出现哨兵之间无法联系的问题
②redis服务的端口也是需要互相放开
故障维修
哨兵自动选举新的redis的master节点后,之前的master节点要重新加入热备当中,需要在配置文件加入slaveof和masterauth这两段配置信息。