注意: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服务器
端口开放
参考资料
B内网部署A系统:要求能够从内网A环境查看A正式环境系统护林员实时位置和实时轨迹功能。由于A正式环境和B内网之间不能直接进行数据交互,需要前置机作为数据中转以实现B内网A系统的实时轨迹和实时位置查看功能。
目前A正式环境尚未启用Redis缓存版本,所有内存数据存储暂时都采用内存缓存(虽然A系统以实现内存与Redis的切换但尚未系统地对Redis进行测试,故暂未使用Redis缓存方案)。
因为B用户的特殊性,需要对其实时位置采集数据进行过滤处理,通过Redis主从同步机制将实时位置和实时轨迹数据同步到前置机Redis,Redis从库默认是只读不允许写入以保证数据一致性。
注意区分A本身的Redis功能和B服务器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
主从同步流程图:
1、Slave服务启动,主动连接Master,并发送SYNC命令,请求初始化同步;
2、Master收到SYNC后,执行BGSAVE命令生成RDB文件,并缓存该时间段内的写命令;
3、Master完成RDB文件后,将其发送给所有Slave服务器;
4、Slave服务器接收到RDB文件后,删除内存中旧的缓存数据,并装载RDB文件;
5、Master在发送完RDB后,即刻向所有Slave服务器发送缓存中的写命令;
至此初始化完成,后续进行增量同步。
# 查询所有key
keys *
#清空所有key
flushall
#认证auth password
auth dlwy@2019
Windows: https://github.com/MicrosoftArchive/redis/releases
Linux版本:https://redis.io/download
注:dump.rdb和redis.log是redis启动后生成的数据备份和日志文件。
#访问端口
port 6379
# 开启远程访问bind 127.0.0.1改为bind 0.0.0.0
bind 0.0.0.0
# 开启日志功能,默认 logfile ""
logfile "redis.log"
# 设置访问密码,默认没有密码
requirepass dlwy@2019
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
注:运行时跟上配置文件,不跟配置文件为默认配置。
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。
$ 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
#访问端口
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 文件名。
$ cd redis-3.2.1
$ ./src/redis-server ./redis.conf
[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”以使其生效。
前置机是windows故只提供windows的安装,Linux版本类似。
安装步骤如下:
注:dump.rdb和redis.log是redis启动后生成的数据备份和日志文件。
# 访问端口
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。
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
注:运行时跟上配置文件,不跟配置文件为默认配置。
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已经在从库中查询到了。
阿里云Linux服务器目前部署了A后台管理系统、移动端、数据同步等服务,本身具有16G内存,可用不到7G,建议扩大到跟目标机器一致的内存大小32G。
根据Redis同步原理,Master会向Slave发送RDB指令,所以需要开启远程访问6379端口。
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
阿里云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
根据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