ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis主从复制、哨兵模式

2019-02-16 16:50:21  阅读:346  来源: 互联网

标签:mymaster 10.0 主从复制 Redis redis 哨兵 0.15 6379 sentinel


1.部署主从

环境:主IP:10.0.0.15,端口6379;从IP:10.0.0.16,端口6379.

原理:基于RDB持久化的功能来实现主从复制的功能.

a.linux-redis1(10.0.0.15)

cd /usr/local/redis/
grep "^[a-Z]" redis.conf  # 列出几个修改过的配置
bind 10.0.0.15
protected-mode no
port 6379
daemonize yes
loglevel notice
logfile /usr/local/redis/logs/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
dir /data/redis

b.linux-redis2(10.0.0.16)

cd /usr/local/redis/
grep "^[a-Z]" redis.conf  # 其余与上面的配置保持一致
bind 10.0.0.16
slaveof  10.0.0.15 6379

# 启动脚本
cat /usr/lib/systemd/system/redis.service

IP=`ifconfig eth0 | awk -F"[ ]+" 'NR==2{print $3}'`
[Unit]
Description=The redis-server Process Manager
After=network.target

[Service]
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf --daemonize no
ExecStop=/usr/local/redis/src/redis-cli -h $IP shutdown

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl enable redis
systemctl start redis

c.测试

主redis上输入数据

从redis上获取数据

 

  此时的从redis只能读取数据,不能写入,主redis宕机之后,也不能写入,手动切换:

主redis上输入shutdown,从redis上输入slaveof no one,就可以写入数据了;

此时如果有其他的从redis,则输入slaveof 10.0.0.16 6379即可更换主redis;

此时如果刚才宕掉的redis又恢复了,则还是输入slaveof 10.0.0.16 6379,由主变成从.

2.利用哨兵模式实现主从自动切换

cat sentinel.conf  # 当启动模式之后,这个配置文件中会自动增加从redis的信息
port 26379
dir "/tmp"
sentinel myid b84f8aea247ad5f7ea48c6a4921d0cca5ffc915f
sentinel monitor mymaster 10.0.0.15 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 18000

./src/redis-sentinel sentinel.conf
# Sentinel ID is b84f8aea247ad5f7ea48c6a4921d0cca5ffc915f
# +monitor master mymaster 10.0.0.15 6379 quorum 1
* +slave slave 10.0.0.16:6379 10.0.0.16 6379 @ mymaster 10.0.0.15 6379
* +slave slave 10.0.0.17:6379 10.0.0.17 6379 @ mymaster 10.0.0.15 6379

# 配置文件中自动生成了这些内容
# Generated by CONFIG REWRITE
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-slave mymaster 10.0.0.16 6379
sentinel known-slave mymaster 10.0.0.17 6379
sentinel current-epoch 0

在10.0.0.15上停掉主redis:redis-cli -h 10.0.0.15 shutdown

主redis宕了,其余redis开始进行选举,在经过选举之后,其中的一个从redis会变为主redis,通过日志或者配置文件都可以看出来,此时谁是master.

cat sentinel.conf 
port 26379
dir "/tmp"
sentinel myid b84f8aea247ad5f7ea48c6a4921d0cca5ffc915f
sentinel monitor mymaster 10.0.0.17 6379 1
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 18000
# Generated by CONFIG REWRITE
sentinel config-epoch mymaster 1
sentinel leader-epoch mymaster 1
sentinel known-slave mymaster 10.0.0.15 6379
sentinel known-slave mymaster 10.0.0.16 6379
sentinel current-epoch 1

# 此时启动10.0.0.15上的redis,它也只能"俯首称臣"
convert-to-slave slave 10.0.0.15:6379 10.0.0.15 6379 @ mymaster 10.0.0.17 6379

# 在配置文件sentinel.conf中加上这三行比较合适
daemonize yes
protected-mode no
logfile "/var/log/sentinel.log"

 

Redis主从利用Keepalived自动切换:http://blog.51cto.com/tryingstuff/2093119

 

标签:mymaster,10.0,主从复制,Redis,redis,哨兵,0.15,6379,sentinel
来源: https://www.cnblogs.com/fawaikuangtu123/p/10388238.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有