Redis主从同步配置(以从节点的Redis版本为主支持Windows和linux)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boonya/article/details/90040512

注意:Windows3.2.100版本和Linux5.0.4版本同步机制不一样无法做同步。Windows的版本明显跟不上Linux版本更新的速度,如果从库是Windows版本,Linux需要对应使用相近的版本。

目录

Redis需求说明

需求

现状

目标

Redis主从安装配置

Redis环境说明

Redis主从同步原理

Redis查询命令说明

Redis安装包下载

Redis master节点安装

windows安装Redis

Linux安装Redis

Redis slave 节点安装

Windows安装Redis

Redis服务器要求

阿里云Linux服务器

内存扩容

端口开放

阿里云windows服务器

内存扩容

端口开放

B前置机Windows服务器

端口开放

参考资料


Redis需求说明

需求

B内网部署A系统:要求能够从内网A环境查看A正式环境系统护林员实时位置和实时轨迹功能。由于A正式环境和B内网之间不能直接进行数据交互,需要前置机作为数据中转以实现B内网A系统的实时轨迹和实时位置查看功能。

现状

目前A正式环境尚未启用Redis缓存版本,所有内存数据存储暂时都采用内存缓存(虽然A系统以实现内存与Redis的切换但尚未系统地对Redis进行测试,故暂未使用Redis缓存方案)。

目标

因为B用户的特殊性,需要对其实时位置采集数据进行过滤处理,通过Redis主从同步机制将实时位置和实时轨迹数据同步到前置机Redis,Redis从库默认是只读不允许写入以保证数据一致性。

注意区分A本身的Redis功能和B服务器Redis功能无关联关系。

Redis主从安装配置

Redis环境说明

由于前置机是windows Server R2 2008 版本,所以我们的版本也采用Windows Server系列的服务器版本作为Redis主机,需要版本保持基本一致(Linux最新版本5.0.4而Windows版本停滞于在3.2.100)。阿里云Windows服务器需要扩大内存,建议扩大到跟目标机器一致的内存大小32G。

 

Redis-master——阿里云(192.168.1.99) Windows Server 2012

 

Redis-slave——B前置机(192.168.1.100) Windows Server 2008

Redis主从同步原理

主从同步流程图:

1、Slave服务启动,主动连接Master,并发送SYNC命令,请求初始化同步;

2、Master收到SYNC后,执行BGSAVE命令生成RDB文件,并缓存该时间段内的写命令;

3、Master完成RDB文件后,将其发送给所有Slave服务器;

4、Slave服务器接收到RDB文件后,删除内存中旧的缓存数据,并装载RDB文件;

5、Master在发送完RDB后,即刻向所有Slave服务器发送缓存中的写命令;

至此初始化完成,后续进行增量同步。

Redis查询命令说明

# 查询所有key
keys *

#清空所有key
flushall

#认证auth password
auth dlwy@2019

Redis安装包下载

Windows: https://github.com/MicrosoftArchive/redis/releases

Linux版本:https://redis.io/download

Redis master节点安装

windows安装Redis

  1. 解压下载的Redis-x64-3.2.100.zip到Redis-x64-3.2.100文件夹下,并更名为Redis-x64-3.2.100-master。

注:dump.rdb和redis.log是redis启动后生成的数据备份和日志文件。

  1. 修改redis.windows.conf,核对修改如下选项
#访问端口

port 6379

# 开启远程访问bind 127.0.0.1改为bind 0.0.0.0

bind 0.0.0.0

# 开启日志功能,默认 logfile ""

logfile "redis.log"

# 设置访问密码,默认没有密码

requirepass dlwy@2019
  1. 启动Redis主节点

C:\Users\admin>cd C:\Users\admin\Desktop\Redis\Redis-x64-3.2.100-master

C:\Users\admin\Desktop\Redis\Redis-x64-3.2.100-master>redis-server.exe redis.windows.conf

 

注:运行时跟上配置文件,不跟配置文件为默认配置。

  1. Redis命令行操作

C:\Users\admin>cd C:\Users\admin\Desktop\Redis\Redis-x64-3.2.100-master

C:\Users\admin\Desktop\Redis\Redis-x64-3.2.100-master>redis-cli.exe -h 192.168.1.99 -p 6379

192.168.1.99:6379> keys *

(error) NOAUTH Authentication required.

192.168.1.99:6379> set user boonya

(error) NOAUTH Authentication required.

192.168.1.99:6379> auth dlwy@2019

OK

192.168.1.99:6379> set user boonya

OK

192.168.1.99:6379> get user

"boonya"

192.168.1.99:6379>

注:由于前面我们设置了访问密码,必须认证后才能操作;操作阿里云环境对应修改IP。

Linux安装Redis

  1. 下载与Windows目标接近的Redis版本并编译
$ wget http://download.redis.io/releases/redis-3.2.1.tar.gz

$ tar xzf redis-3.2.1.tar.gz

$ cd redis-3.2.1

$ make
  1. 修改redis.conf文件
#访问端口

port 6379

# 开启远程访问bind 127.0.0.1改为bind 0.0.0.0

bind 0.0.0.0

# 开启日志功能,默认 logfile ""

logfile "redis.log"

# 设置访问密码,默认没有密码

requirepass dlwy@2019

#pid 文件修改--如果存在多个redis实例请修改pid文件名

pidfile /var/run/redis_6379.pid

注意:如果存在多个redis实例请修改pidfile 文件名。

  1. 启动Redis服务

$ cd redis-3.2.1

$ ./src/redis-server ./redis.conf

 

  1. 使用redis命令行测试

[root@localhost redis-3.2.1]# ./src/redis-cli -h 192.168.1.98 -p 6379

192.168.1.98:6379> auth dlwy@2019

OK

192.168.1.98:6379> keys *

1) "user"

192.168.1.98:6379>

 

注意:Redis版本下载保持一致(Linux下没有对应的3.2.100故下载3.2.1),若出现同步失败导致如下错误,请确保6379端口可访问。

Sending command to master in replication handshake: -Writing to master: Unknown error

 

3.2.1启动后警告信息,对应设置即可:

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

 

警告overcommit_memory设置为0! 在低内存条件下,后台保存可能会失败。 要解决此问题,请将“vm.overcommit_memory = 1”添加到/etc/sysctl.conf,然后重新启动或运行命令“sysctl vm.overcommit_memory = 1”以使其生效。

Redis slave 节点安装

前置机是windows故只提供windows的安装,Linux版本类似。

Windows安装Redis

安装步骤如下:

  1. 解压下载的Redis-x64-3.2.100.zip到Redis-x64-3.2.100文件夹下,并更名为Redis-x64-3.2.100-slave。

注:dump.rdb和redis.log是redis启动后生成的数据备份和日志文件。

  1. 修改redis.windows.conf,核对修改如下选项
# 访问端口

port 6379

# 默认绑定bind 127.0.0.1

bind 192.168.1.100

# 开启日志功能,默认 logfile ""

logfile "redis.log"

# 设置访问密码,默认没有密码

requirepass dlwy@2019

# 设置从节点

slaveof 127.0.0.1 6379

# 设置从节点访问主节点的认证凭据

masterauth dlwy@2019

注:bind的地址改为前置机IP地址,不在同一台机器上端口仍然可以使用6379。

  1. 启动Redis主节点

C:\Users\admin>cd C:\Users\admin\Desktop\Redis\Redis-x64-3.2.100-slave

C:\Users\admin\Desktop\Redis\Redis-x64-3.2.100-slave>redis-server.exe redis.windows.conf

 

注:运行时跟上配置文件,不跟配置文件为默认配置。

  1. Redis命令行操作

C:\Users\admin>cd C:\Users\admin\Desktop\Redis\Redis-x64-3.2.100-slave

C:\Users\admin\Desktop\Redis\Redis-x64-3.2.100-slave>redis-cli.exe -h 192.168.1.100 -p 6379

192.168.1.100:6379> keys *

(error) NOAUTH Authentication required.

192.168.1.100:6379> auth dlwy@2019

OK

192.168.1.100:6379> get user

"boonya"

192.168.1.100:6379>

注:由于前面我们设置了访问密码,必须认证后才能操作;操作前置机环境对应修改IP。从上面看到我们在主库中设置的user已经在从库中查询到了。

Redis服务器要求

阿里云Linux服务器

内存扩容

阿里云Linux服务器目前部署了A后台管理系统、移动端、数据同步等服务,本身具有16G内存,可用不到7G,建议扩大到跟目标机器一致的内存大小32G。

端口开放

根据Redis同步原理,Master会向Slave发送RDB指令,所以需要开启远程访问6379端口。

firewall-cmd --zone=public --add-port=6379/tcp --permanent

firewall-cmd --reload

阿里云windows服务器

内存扩容

阿里云Windows服务器需要扩大内存,目前为8G,建议扩大到跟目标机器一致的内存大小32G。

Redis-master——阿里云(192.168.1.99) Windows Server 2012

端口开放

根据Redis同步原理,Master会向Slave发送RDB指令,所以需要开启远程访问6379端口。需要公司阿里云平台账号管理员开放此端口(本地入站出站端口已配置仍不通)。

参考解决:https://blog.csdn.net/qihaoocheng/article/details/80137073

B前置机Windows服务器

端口开放

根据Redis同步原理,Master会向Slave发送RDB指令,所以需要开启远程访问6379端口。B服务器需要在阿里云平台上开放此端口(本地入站出站端口已配置仍不通)。

参考解决:https://blog.csdn.net/qihaoocheng/article/details/80137073

参考资料

redis.conf配置详细解析

Redis核心解读-从Master到Slave的Replicantion

Redis主从之Windows主Linux从

Redis主从无法同步的坑

Redis 主从配置(Windows版)

下载word:https://download.csdn.net/download/boonya/11169128

展开阅读全文

没有更多推荐了,返回首页