快速掌握Redis——第七招:运维必学 主从和监控sentinel(未排版)
1 主从同步 Replication
-
过程 slave 配置复制(Replication)策略后,会向master 主动发送一个SYNC命令。Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,又会完全同步数据,不是"增量"的。
-
配置 redis的主从很简单,master 几乎不用配置,主要配置 slave ,1个mater 可以有N个slave(若干个) ,而且当master遇到问题时,可以切换某一个slave 为master ,避免单点故障 ,保证数据完整性。 笔记本虚拟机内存有限,我就在不同的端口开启redis服务,达到不同机器(ip)开启redis的效果。 master port: 6379
slave 1 port: 6380 slave 2 port: 6381[root@localhost redis]# ll total 160 drwxr-xr-x. 2 root root 4096 Mar 26 20:57 bin -rw-r--r--. 1 root root 120602 Mar 29 22:36 dump.rdb -rw-r--r--. 1 root root 36028 Mar 29 22:35 redis.conf [root@localhost redis]# ps -ef |grep redis root 2141 1 0 Mar29 ? 00:00:56 ./bin/redis-server *:6379 root 4986 4959 0 18:40 pts/0 00:00:00 grep redis [root@localhost redis]# kill -9 2141 [root@localhost redis]# cp redis.conf redis6380.conf [root@localhost redis]# vim redis6380.conf ## 将 # slaveof <masterip> <masterport> 改为 slaveof 127.0.0.1 6379 保存退出。 [root@localhost redis]# bin/redis-server ./redis6380.conf [root@localhost redis]# bin/redis-server ./redis.conf [root@localhost redis]# bin/redis-cli 127.0.0.1:6379> keys * 1) "name" 2) "fasdff" 3) "fasdfasf" 4) "counter:__rand_int__" 5) "faffffff" 6) "age" 7) "key:__rand_int__" 8) "faff" 9) "fafffssssdfafff" 10) "mylist"
这是上次的数据,6379有数据了,重开个终端,连接 6380端口。
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 6380 127.0.0.1:6380> keys * 1) "name" 2) "faffffff" 3) "counter:__rand_int__" 4) "fasdfasf" 5) "fasdff" 6) "key:__rand_int__" 7) "age" 8) "mylist" 9) "faff" 10) "fafffssssdfafff"
数据太乱了,我在6379 端口执行flushdb ,在6380端口的数据也没了。
- 主从好处:
- 实际部署时,这么分配,原先的master(s) 主要做数据收集,slave(s)做备份,其他工作,分担主压力。
- 读写分离:为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成。即便如此,系统的伸缩性还是得到了很大的提高。
- Master 是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。
- Slave 同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。
2
人工更改配置文件很 low , 请出哨兵( sentinel ) 复制sentinel.conf
[root@localhost redis]# cp /usr/local/src/redis-2.8.19/sentinel.conf /usr/local/redis/ [root@localhost redis]# ls bin dump.rdb redis6380.conf redis.conf sentinel.conf [root@localhost redis]# vim sentinel.conf [root@localhost redis]# grep -v ^# sentinel.conf | tee sentinel.conf #不显示配置的说明文件,重定向到sentinel.conf port 26379 dir /tmp sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 接下来配置下。
-
6380 和 6381 都是6379的slave:将各自配置文件slaveof设置为 slaveof 127.0.0.1 6379 并且端口改为各自端口。
-
sentinel.conf 我们这里只设置和6379(master)端口对应的哨兵sentinel,每个端口都可以设置哨兵。
[root@localhost redis]# ll total 120 drwxr-xr-x. 2 root root 4096 Mar 26 20:57 bin -rw-r--r--. 1 root root 40 Mar 30 21:37 dump.rdb -rw-r--r--. 1 root root 36085 Mar 30 21:37 redis6380.conf -rw-r--r--. 1 root root 36109 Mar 30 21:37 redis6381.conf -rw-r--r--. 1 root root 36028 Mar 29 22:35 redis.conf -rw-r--r--. 1 root root 824 Mar 30 21:37 sentinel.conf [root@localhost redis]# cat sentinel.conf #sentinel的端口 port 26379
dir "/tmp"
自定义服务器名 mymater
控制的机器ip 端口
最后的”1”为当至少有1个从赞同sentinel的监控结果,判为主失效
sentinel monitor mymaster 127.0.0.1 6380 1
#10000ms后连接不到master就认为断开了 sentinel down-after-milliseconds mymaster 10000 #sentinel can-failover mymaster yes #是否允许sentinel修改slave->master. 如为no,则只能监控,无权修改 #允许一次性有几台slave连接新的master(建议一个) sentinel config-epoch mymaster 1
3.启动各个端口服务。
[root@localhost redis]# bin/redis-server ./redis6380.conf [root@localhost redis]# bin/redis-server ./redis6381.conf [root@localhost redis]# bin/redis-server ./redis.conf
-
启动哨兵
[root@localhost redis]# bin/redis-server ./sentinel.conf --sentinel
5.重新开启个终端,杀死6379端口的服务,或者shutdown,这样等会儿就能切换优先级搞得slave作为master了。
[5780] 31 Mar 00:52:31.266 # +try-failover master mymaster 127.0.0.1 6380 [5780] 31 Mar 00:52:31.269 # +vote-for-leader 86d663c9700709770705bdb758337364eb82a102 3 [5780] 31 Mar 00:52:31.269 # +elected-leader master mymaster 127.0.0.1 6380
6380成为master了。
转载于:https://my.oschina.net/VASKS/blog/394325
- 点赞
- 收藏
- 分享
- 文章举报
- 快速掌握Redis——第七招:运维必学 主从和监控sentinel(未排版)
- redis-高级(事务,频道发布,消息订阅,持久化,主从复制,运维监控....)
- 16 redis之sentinel运维监控
- Sentinel系统监控Redis主从节点
- redis总结3-持久化rdb,aof,运维命令,Sentinel监控
- Redis主从复制,读写分离及sentinel监控的使用
- 【胖鱼头】基于Sentinel的Redis主从分片集群搭建
- redis主从集群搭建及容灾部署(哨兵sentinel)
- Redis-sentinel监控
- Redis监控工具 sentinel
- Sentinel-Redis高可用方案(二):主从切换
- redis主从集群搭建及容灾部署(哨兵sentinel)
- Sentinel-Redis高可用方案(一):主从复制
- redis-3.0.1 sentinel 主从高可用 详细配置
- Redis之主从复制(Sentinel)
- Sentinel-Redis高可用方案(二):主从切换
- Redis Sentinel集群部署 – 运维派
- redis:redis sentinel(哨兵)主从高可用方案
- Redis集群:redis主从自动切换Sentinel操作实例
- redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比