Redis主从复制和哨兵机制

Redis主从复制原理:

同步过程步骤如下:
从服务器向主服务器发送SYNC命令。
收到SYNC命令的主服务器执行BGSAVE命令,在后台生成一个RDB文件,并使用一个缓冲区记录从现在开始执行的所有写命令。
当主服务器的BGSAVE命令执行完毕,主服务器将生成的RDB文件发送给从服务器,从服务器接收并加载这个RDB文件,将自己的数据库状态更新至主服务器执行BGSAVE命令是的数据库状态。
主服务器将记录在缓冲区里面的所有写命令发送给从服务器,从服务器执行这些写命令,将自己的数据库状态更新至主服务器当前所处的状态。

部分重同步的实现
主服务器和从服务器都会维护一个复制偏移量,主要是用户对比复制的执行结果。例如主从服务器的复制偏移量均为1000,当主服务器完成了3个写命令后,主服务器偏移量为1003,这时候将3个命令给从服务器执行,从服务器执行完毕,复制偏移量也为1003。

如果主从服务器的数据是一致的,那么他们的偏移量也是一致的。

配置主从复制:

安装redis

[root@server1 ~]# ls
4.0  anaconda-ks.cfg  redis-5.0.3.tar.gz
[root@server1 ~]# tar zxf redis-5.0.3.tar.gz 
[root@server1 ~]# cd redis-5.0.3
[root@server1 redis-5.0.3]# ls
00-RELEASENOTES  deps       README.md        runtest-sentinel  utils
BUGS             INSTALL    redis.conf       sentinel.conf
CONTRIBUTING     Makefile   runtest          src
COPYING          MANIFESTO  runtest-cluster  tests
[root@server1 redis-5.0.3]# yum install gcc -y
[root@server1 redis-5.0.3]# make && make install
[root@server1 redis-5.0.3]# cd utils/
[root@server1 utils]# ls
build-static-symbols.tcl  hashtable          redis_init_script.tpl
cluster_fail_time.tcl     hyperloglog        redis-sha1.rb
corrupt_rdb.c             install_server.sh  releasetools
create-cluster            lru                speed-regression.tcl
generate-command-help.rb  redis-copy.rb      whatisdoing.sh
graphs                    redis_init_script
[root@server1 utils]# ./install_server.sh 

配置redis:
server1

[root@server1 utils]# vim /etc/redis/6379.conf
70 bind 0.0.0.0

server2

[root@server2 utils]# cd /etc/redis/
[root@server2 redis]# vim 6379.conf
70 bind 0.0.0.0
 288 slaveof 172.25.76.1 6379

server3

[root@server3 utils]# vim /etc/redis/6379.conf
70 bind 0.0.0.0
288 slaveof 172.25.76.1 6379

重启redis服务

[root@server1 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...
[root@server2 redis]# /etc/init.d/redis_6379 restart
[root@server3 utils]# /etc/init.d/redis_6379 restart

在server1中建立一个字符串

[root@server1 utils]# redis-cli 
127.0.0.1:6379> set name chen
OK

在server2中查看

[root@server2 redis]# redis-cli 
127.0.0.1:6379> get name
"chen"

哨兵机制

Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

配置哨兵机制

[root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis/

[root@server1 redis]# vim sentinel.conf
 17 protected-mode no     ##关闭保护模式
 84 sentinel monitor mymaster 172.25.76.1 6379 2   ##指定要监控的master 设定需要的sentinel票数
113 sentinel down-after-milliseconds mymaster 10000   ##设定主服务器连接不上多久后认为其宕机 
[root@server1 redis]# scp sentinel.conf root@172.25.76.2:/etc/redis/
[root@server1 redis]# scp sentinel.conf root@172.25.76.3:/etc/redis/
[root@server1 redis]# redis-cli 
127.0.0.1:6379> info

在这里插入图片描述

[root@server2 redis]# redis-cli 
127.0.0.1:6379> info

在这里插入图片描述

在server1 到3 都开启哨兵

[root@server1 redis-5.0.3]# redis-server  /etc/redis/sentinel.conf  --sentinel 

在这里插入图片描述
在这里插入图片描述

关闭server1 redis

[root@server1 redis]# redis-cli 
127.0.0.1:6379> shutdown

在监控主机查看
在这里插入图片描述

在server2上查看
info
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值