首页 > 技术文章 > redis主从复制

zhishifx 2018-07-31 16:44 原文

redis主从复制

这两天一直在研究redis到底是怎么主从配置的,期间出现的问题无非是配置错误,当配置好一切时候,依旧会发现结果还是NO,经过我们可爱的同事帮助,确定结果是因为防火墙的问题。好了,不唠叨了,简单说下redis的主从复制是怎么样的配置过程。

1.首先我们需要在启动三台都安装好redis的linux系统,如

虚拟机主机A   IP: 192.168.136.141

虚拟机主机B   IP: 192.168.136.138

虚拟机主机B   IP: 192.168.136.137。

我们确定好三台机子的IP 地址,输入命令:#ip addr 。

2.选择一台主机作为redis的主数据库,这里选择主机A,则需更改redis.conf配置文件,在bind 127.0.0.1 后面加上主机A的IP(192.168.136.141)如图所示。从数据库主机B,和主机C同样更改该位置。

3.从数据库主机B、主机C,仍旧需要更改redis.conf配置,加上从数据库对应的主数据库和端口,即slaveof  192.168.136.141  6379 。

4.配置好这些后启动redis服务,主机A、B、C在对应的路径下redis.conf 存在的目录,执行命令:#redis-server redis.conf 。

5.执行完毕后查看是否设置成功,输入命令:#redis-cli  或者输入#redis-cli -h 本主机ip -p 端口,输入info ,查看Replication信息,如图所示。

 

主机A ,信息。

 

 主机B

 

 6.这样就成功的实现的redis的主从配置,我们可以测试下 主机A 设置redis的一个值 127.0.0.1:6379>set foo shixz ,get  foo结果是"shixz"。

在从数据库下同样可以获取到,如图主机B获取结果所示。

我遇到的问题是主从如何都连接不到一起,可以ping的通,配置没问题。主要是忘记关闭防火墙了,执行命令:#systemctl status firewalld.service就好了。

 

接下来配置下sentinel节点。具体的原理我没深刻理解,怕说错就不介绍了,仅仅说下配置吧。

1. 主机A(主数据库) 的sentinel.conf ,可以看到配置端口port:26379 ,配置对应的主数据库IP和端口sentinel monitor mymaster 192.168.141  6379 2。而主机B、主机C配置不同的端口port 即可 。如主机B配置成46379 ,主机C配置成56379,sentinel  monitor依旧配置主数据库的信息。

 

2. 当一切配置好之后启动sentinel,输入命令:#redis-sentinel  sentinel.conf 。

得到如图所示结果,当主机B或者C也启动了节点,则会增加日志记录。

 

3.启动连接都OK的情况,中断主机B的执行,主机B(从数据库)sentin.conf最底下会写入日志。

 

以上这些就是目前我所了解的最基本的配置了。

 

推荐阅读