您的位置:首页 > 数据库 > Redis

快速掌握Redis——第七招:运维必学 主从和监控sentinel(未排版)

2015-03-31 18:16 639 查看

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了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: