Windows下 redis 操练-主从配置 说明篇(5)

https://blog.csdn.net/qq_28198181/article/details/86741515

 https://www.jb51.net/article/126689.htm

1. Redis主从同步的过程

配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连接,master都会启动一个后台进程,将数据库快照保存到文件中.同时master主进程会开始收集新的写命令并缓存起来。当后台进程完成写文件后,master就将快照文件发送给slave,slave将文件保存到磁盘上,然后加载到内存将数据库快照恢复到slave上。slave完成快照文件的恢复后,master就会把缓存的命令都转发给slave,slave更新内存数据库。后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从 client到master发送的命令使用相同的协议格式。当master和slave的连接断开时,slave可以自动重新建立连接。如果master同时收到多个slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。

  

2 Redis主从同步的特点

主从同步具有明显的分布式缓存特点,主要包括这些方面:

1)一个master可以有多个slave,一个slave也可以有多个slave;
2)slave不仅可以连接到master,slave也可以连接其他slave形成树状结构;
3)主从同步不会阻塞master,但是会阻塞slave。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求;
4)主从同步可以用来提高系统的可伸缩性,我们可以用多个slave专门处理client的读请求,也可以用来做简单的数据冗余或者只在slave上进行持久化从而提升集群的整体性能。

3. Redis主动同步设置方法

有两种方式可以用来完成进行主从Redis服务器的同步设置。都需要针对slave服务器上进行,指定slave需要连接的Redis服务器(可能是master,也可能是slave)。

4.在配置文件中设置

在作为slave的Redis服务器的配置文件(redis.conf)中设置。

很明显,这种设置方式非常简单,但是需要修改配置文件,并且配置文件是在服务器启动时加载的。所以服务器不启动无法修改,操作不灵活。

这种配置方式适合于作为部署时的初始配置。

5.在Redis客户端中进行设置

这里以Redis官方推荐的Jedis为例来说明,Jedis 是 Redis 官方首选的 Java 客户端开发包

 

 

 

 

 

 

 

 

===================================================================================================================================================================

一·、配置主redis,放到阿里云服务器

0、开启阿里云6379端口号,并设置限制访问IP名单 (点击安全组--点击实例名进入到列表)

 

 

1、配置主redis密码与从密码一致

 

2、配置bing 127.0.0.1 为阿里云本机IP地址,如:bing 187.1.10.1。如果配置为公网IP则redis启动失败

     如果配置(默认)bing 127.0.0.1,外网访问不了

 

 

 

bind 参数是绑定本机的IP地址,本机的网卡对应的IP地址,每一个网卡都有一个IP地址,不是限制哪个IP来源访问,为了安全可用防火墙进行限制

比如本机上有两个网卡,每一个网卡对应一个IP地址,如 192.168.1.1和192.168.2.1

如果绑定 bind 192.168.1.1 ,只能通过  192.168.1.1:6379来访问redis,192.168.2.1:6379就访问不了

如果注释掉 #bind ,则不受限制

 

3、启动redis

 

4、配置从,把master配置好的文件复制一份放到另台机器

 

5、做相应配置(主redis公网IP及密码)

 

 6、bing 参数IP,这里是部署在本机

 

7、配置为只读模式

 

 

 

8、启动

 

 9、主从验证

主节点连接:
redis-cli.exe  -h 192.168.1.1 -p 6379 -a 123456
info replication

 

 

 

 10. 可能发生主从数据不一致问题:

master 配置的 maxmemory 为 5G,而 slave 的 maxmemory 为 3G,当 Redis 中的数据超过 3G 时,slave 就会「提前」开始淘汰数据,此时主从库数据发生不一致。(从配置内存大于等于主)

Redis 5.0 增加了一个配置项:replica-ignore-maxmemory,默认 yes。这个参数表示,尽管 slave 内存超过了 maxmemory,也不会自行淘汰数据了!(Redis 5.0 解决了以上问题)

 

11.slave 必须强制设置为 read-only,不允许写,这样不仅可以保证 master / slave 的数据一致性,还避免了 slave 内存泄露问题(slave 内存泄露问题发生在redis4.0下,4.0已修复)。

 

posted @ 2021-03-31 16:32  南方卖菜  阅读(36)  评论(0编辑  收藏  举报