Lucent's Blog

华发寻春喜见梅,一株临路雪倍堆。



代码在写我

Bug在De我

螃蟹在剥我的壳

漫天的我落在雪花上

而你在想我...

6LCi5Y2O5qKF

Redis学习笔记(四)主从复制及启动哨兵模式

Redis主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主,优点是读写分离,容灾恢复。

启动三台redis

首先准备三个配置文件并分别配置三个不同端口,例如6379,6380,6381

1.png

2.png

Pid文件名字,Log文件名字,Dump.rdb名字请根据需要自行设置

然后分别启动三台redis

3.png

下图可见三台redis均启动成功

4.png

下面分别连接三台redis并查看当前redis的状态

5.png

6.png

7.png

可见,所有redis默认均为主库,并且没有从库连接

配置主从复制

主从服务器的配置原则是:配从(库)不配主(库),即在从库进行配置,主库不用配置

注:无这里使用端口为6379的库作为主库,6380,6381库作为从库

配置代码:

SLAVEOF 127.0.0.1 6379 #需要在两个从库中分别执行

再次查看三个库的状态:

Info replication
主库

8.png

从库

9.png

10.png

注:每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件

测试数据同步,在主库中执行:

set k1 v1 #从库是只读的,不能执行写操作

在两个从库中取出k1数据:

get k1

可见主从复制已经配置成功

知识点

1.上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力

2.中途变更转向:会清除之前的数据,重新建立拷贝最新的

  1. 主机shutdown或者挂掉后,从机不会自动上位成为主机,而是保持不变等待主机

11.png

当主机再次上线时会自动连接

12.png

4.反客为主,可以使用命令:SLAVEOF no one 使当前数据库停止与其他数据库的同步,转成主数据库,这种方式并不方便,因为需要手动操作

启动哨兵模式

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

1.在你的配置文件目录下新建sentinel.conf文件,名字绝不能错,并填入如下内容

sentinel monitor 被监控库的名字(自定) 主库ip 端口 1  #示例,1 表示当票数大于1时即可成为主库
sentinel monitor host6379 127.0.0.1 6379 1  #我的
#一组sentinel能同时监控多个Master

2.开启哨兵

redis-sentinel /myredis/config/sentinel.conf  #配置文件路径请自行修改,启动成功如下图

13.png

3.当主库发生故障

14.png

哨兵发现问题,开始进行投票,选出新主库

15.png

最终端口为6381的库成为主库,查看此时库的状态

16.png

img

4.如果此时库6379恢复上线,不会发生主库冲突,哨兵会将6379连接至新的主库

17.png

18.png

5.如果需要让哨兵后台运行,可以使用screen命令

主从复制的缺点

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

最近的文章

Dayz独立版 服务器物资管理系统使用教程

打开dayz.lucent.blog将types.xml文件(文件位于服务器目录/mpmissions/dayzOffline.chernarusplus/db中)拖入到浏览器中名词解释最大数量:服务器同时刷新出该物品的最大数量最小数量:服务器同时刷新出该物品的最小数量生成优先级:服务器刷新该物品的…

继续阅读
更早的文章

Redis学习笔记(三)Redis字符串(String)

String(字符串)string是redis最基本的类型,可以理解成与Memcached一模一样的类型,一个key对应一个value。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。string类型是Redis最基本的数据类型,一个r…

继续阅读