Redis 持久化 主从配置 sentinel配置

windows 3.2版本免安装

直接执行redis-server命令的时候,是没有读取目录下的配置文件的,因此不论怎么改配置文件都不生效,目录下的redis.windows.conf和redis.windows-service.conf是两个相同的配置文件,在启动redis的时候需要指定配置文件才会使redis配置文件生效,命令如下

redis-server redis.windows.conf

即可使用此配置文件中的信息。

默认情况redis是不允许其他IP访问的,需要修改配置文件:

bind 127.0.0.1注释掉

requirepass 123456配置密码

然后启动即可

注意redis启动时黑窗口最上面是否有warning,一般就是没有指定配置文件导致的。

redis-cli.exe -h 127.0.0.1 -p 6379

连接上去后,执行命令auth 123456即可连接上服务端

取消RDB模式持久化:将save ""取消注释

踩坑:当你程序所在服务器和redis不在一台服务器时,服务器时间相差非常大,也会报错!!!

 

相关命令参考:http://doc.redisfans.com/index.html

该链接有命令详细信息,以及算法复杂度

 

主从配置命令:

搞两个redis实例配置好,然后在从库的配置文件中配置主库的密码配置,即添加一行配置

masterauth 123456

然后启动从库,执行命令

slaveof 192.168.1.1 6379

让从库的黑窗口会有success的字样,表示主从成功了。

 

持久化方式见解:

rdb持久化就不解释了,AOF持久化,每秒持久化性能还行,但是开启always模式,性能急剧下降,还不如存数据库的性能。所以不要抱什么希望让redis的持久化来保证绝对的数据高可用性了。

 

主从切换实践(sentinel):

我用的是windows版本下的redis 3.2,下载下来后,复制一份,命名为redis-sentinel,这里解释下,一个sentinel实例和redis实例是一样的,只是启动命令不一样而已,然后需要在这个文件夹下添加一个sentinel.conf文件,如下图

104202_d1eH_3031369.png

文件内容就是sentinel的配置信息,网上都有,但是我也拷贝一份吧,

port 26379
#master
sentinel monitor master 127.0.0.1 6379 1
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 180000
sentinel parallel-syncs master 1

sentinel auth-pass master 123456

protected-mode no

参数相关解释

1. port :当前Sentinel服务运行的端口  

2.sentinel monitor mymaster 127.0.0.1 6379 2:Sentinel去监视一个名为mymaster的主redis实例,这个主实例的IP地址为本机地址127.0.0.1,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行  

3.sentinel down-after-milliseconds mymaster 5000:指定了Sentinel认为Redis实例已经失效所需的毫秒数。当 实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行  

4.sentinel failover-timeout mymaster 18000:如果在该时间(ms)内未能完成failover操作,则认为该failover失败

5.sentinel parallel-syncs mymaster 1:指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长  

6.reids配置账号密码,在做哨兵的时候,这个黑窗口会出现 i will not start a failover before.....说不能启动故障转移,需要在sentinel.conf中添加密码配置,注意这个master名字和sentinel monitor后面名字相同

7.然后远程连接哨兵,你会发现各种报错,比如远程主机强迫关闭一个连接或者一堆英文什么的,还要加个配置:protected-mode no,保护模式,加上就可以。

再给两个参考地址:

https://segmentfault.com/a/1190000002680804

http://blog.csdn.net/captain_harlock/article/details/51519379

然后就可以愉快的启动sentinel实例了,切换至刚才实例文件夹下,启动命令:

redis-server sentinel.conf --sentinel
104729_Dcqm_3031369.png

这样就成功启动监控实例了。我先去试验一把。

  • SENTINEL masters :列出所有被监视的主服务器,以及这些主服务器的当前状态。
  • SENTINEL slaves :列出给定主服务器的所有从服务器,以及这些从服务器的当前状态。
  • SENTINEL get-master-addr-by-name : 返回给定名字的主服务器的 IP 地址和端口号。 如果这个主服务器正在执行故障转移操作, 或者针对这个主服务器的故障转移操作已经完成, 那么这个命令返回新的主服务器的 IP 地址和端口号。
  • SENTINEL reset : 重置所有名字和给定模式 pattern 相匹配的主服务器。 pattern 参数是一个 Glob 风格的模式。 重置操作清楚主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel 。
  • SENTINEL failover : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移 (不过发起故障转移的 Sentinel 会向其他 Sentinel 发送一个新的配置,其他 Sentinel 会根据这个配置进行相应的更新)。

打完收工...

redis配置成服务形式:

redis-server.exe --service-install redis.windows.conf --loglevel verbose

 

补充C#连接redis的相关东西。使用StackExchange.Redis连接多个库可以自动识别主库,不用担心。参考官方文档

https://stackexchange.github.io/StackExchange.Redis/

 

如有错误,或者意见欢迎来电:awith@qq.com

 

转载于:https://my.oschina.net/uwith/blog/1548049

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值