Linux 系统安装Redis 5 注意事项:
- 下载Redis 文件包,并上传至linux服务上
- 解压
tar -zxvf redis.tar
- 安装:
编译
make PREFIX=/usr/local/redis install
配置:
redis.conf
daemonize yes
bind 127.0.0.1 192.168.1.221
supervised systemd
logfile "/usr/local/redis/log/redis.log"
dir /usr/local/redis/data/6379 【注意:这个目录没有默认:/var/lib/redis/6379 存放dump.rdb的目录, 由于系统默认没有这个目录,导致使用systemctl start redis.service 报错】
requirepass root@123
4、创建redis.service
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/6379.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
执行命令:
systemctl daemon-reload
systemctl start redis.service
systemctl enable redis.service
systemctl stop redis.service
systemctl status redis.service
systemctl restart redis.service
主从配置:
今天在使用命令slaveof或者是replicaof命令配置redis主从复制时,从机出现master_link_status:down提示,显示主机是down的状态,主机显示没有从机挂载。主要是因为这里的redis配置了密码,可以在slave的配置文件里指定(配从不配主)
主要是因为redis配置了密码导致的,将master和slave的密码配置相同,然后将slave的配置文件中的masterauth属性进行填写,将master的密码写上去即可使用命令slaveof或者是replicaof对master进行指定;
对slave的config配置文件中的两个属性进行配置即可实现开启后自动关联。
全部重启一下:
测试验证一下:
主节点:
127.0.0.1:6379> set aaa aaa
OK
从节点:
127.0.0.1:6379> get aaa
“aaa”
所有从节点都能获取到主节点添加的数据表明主从配置完成!!!
哨兵模式:
vi sentinel.conf
//端口默认为26379。
port:26379
//关闭保护模式,可以外部访问。
protected-mode:no
//设置为后台启动。
daemonize:yes
//日志文件。
logfile:./sentinel.log
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 192.168.231.130 6379 2
//当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster pwdtest@2019
//这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000
//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
snetinel parallel-syncs mymaster 1
//故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
port 26379
daemonize yes
protected-mode no
dir "/tmp"
pidfile "/var/run/redis-sentinel.pid"
logfile "/usr/local/redis/log/sentinel.log"
sentinel monitor mymaster 192.168.1.221 6379 2
sentinel auth-pass mymaster root@123
sentinel down-after-milliseconds mymaster 5000
配置systemctl 启动:
vi /etc/systemd/system/redis-sentinel.service
[Unit]
Description=redis-sentinel
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-sentinel /usr/local/redis/bin/sentinel.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl enable redis-sentinel.service
systemctl start redis-sentinel.service
启动sentinel之后,关闭master。从slave服务器上选出一个master出来
使用命令查看master: ./redis-cli -p 6379 -a root@123 info replication