Redis主从配置

简介:

一:原理


主要是通过master server持久化的rdb文件实现的。master server 先dump出内存快照文件,然后将rdb文件传给slave server,slave server 根据rdb文件重建内存表。


redis复制过程如下:
1)slave server启动连接到master server之后,salve server主动发送SYNC命令给master server
2)master server接受SYNC命令之后,判断,是否有正在进行内存快照的子进程,如果有,则等待其结束,否则,fork一个子进程,子进程把内存数据保存为文件,并发送给slave server
3)master server子进程进程做数据快照时,父进程可以继续接收client端请求写数据,此时,父进程把新写入的数据放到待发送缓存队列中
4)slave server 接收内存快照文件之后,清空内存数据,根据接收的快照文件,重建内存表数据结构
5)master server把快照文件发送完毕之后,发送缓存队列中保存的子进程快照期间改变的数据给slave server,slave server做相同处理,保存数据一致性
6)master server 后续接收的数据,都会通过步骤1建立的连接,把数据发送到slave server


注意:slave server如果因为网络或其他原因断与master server的连接,当slave server重新连接时,需要重新获取master server的内存快照文件,slave server的数据会自动全部清空,然后再重新建立内存表,这样会让slave server 启动恢复服务比较慢,同时也给master server带来较大压力,可以看出redis的复制没有增量复制的概念,这是redis主从复制的一个主要弊端,在实际环境中,尽量规避中途增加从库。redis2.8之前不支持增量,到2.8之后就支持增量了!

参考:http://blog.csdn.net/nuli888/article/details/52136822


二:说明


1、准备两台服务器

master:192.168.0.128

slave:192.168.0.129

2、关闭防火墙

iptables -F

# getenforce

Disabled


三、安装配置


1、分别都安装redis

参考我之前写的文章:Redis数据库的安装与配置

http://msiyuetian.blog.51cto.com/8637744/1717983

2、master配置文件不用动,slave配置文件上加一行

slaveof 192.168.0.128 6379      //主IP

masterauth 123456                 //如果主上设置了密码,若密码为123456,则要加这行

3、分别启动master和slave上的redis


四、验证主从


在从上查看日志

[root@slave ~]# tail /usr/local/redis/var/redis.log

[6117] 03 Dec 11:52:12.034 * Full resync from master: 37031d932827c403dfd2be6df445901ae3b67a65:1

[6117] 03 Dec 11:52:12.385 * MASTER <-> SLAVE sync: receiving 18 bytes from master

[6117] 03 Dec 11:52:12.385 * MASTER <-> SLAVE sync: Flushing old data

[6117] 03 Dec 11:52:12.385 * MASTER <-> SLAVE sync: Loading DB in memory

[6117] 03 Dec 11:52:12.385 * MASTER <-> SLAVE sync: Finished with success

[6117] 03 Dec 11:52:17.108 - 1 clients connected (0 slaves), 276592 bytes in use

[6117] 03 Dec 11:52:22.169 - 1 clients connected (0 slaves), 276592 bytes in use

[6117] 03 Dec 11:52:27.219 - 1 clients connected (0 slaves), 276592 bytes in use

[6117] 03 Dec 11:52:32.308 - 1 clients connected (0 slaves), 276592 bytes in use

[6117] 03 Dec 11:52:37.390 - 1 clients connected (0 slaves), 276592 bytes in use

若出现上面类似的信息,说明主从配置成功了。下面要进行示例验证

示例验证:

在主上创建数据

[root@master ~]# redis-cli -a 123456

127.0.0.1:6379> set key1 123

OK

127.0.0.1:6379> set key2 456

OK

127.0.0.1:6379> sadd set1 aaa

(integer) 1

127.0.0.1:6379> sadd set1 bbb

(integer) 1

127.0.0.1:6379> sadd set1 ccc

(integer) 1

127.0.0.1:6379> keys *

1) "set1"

2) "key2"

3) "key1"

在从上查看

[root@slave ~]# redis-cli

127.0.0.1:6379> keys *

1) "key2"

2) "set1"

3) "key1"

127.0.0.1:6379> get key1

"123"

127.0.0.1:6379> get key2

"456"

127.0.0.1:6379> smembers set1

1) "ccc"

2) "aaa"

3) "bbb"

由上可知,实现了主从同步。


五、主从其他相关配置


1)slave-read-only yes                    //让从只读

2)repl-ping-slave-period 10           //设置slave向master发起ping的频率,每10s发起一次

3)repl-timeout 60                          //设置slave ping不通master多少秒后就超时

4)repl-disable-tcp-nodelay no       //是否开启tcp_nodelay,开启后将会使用更少的带宽,但会有延迟,所以建议关闭

5)repl-backlog-size 1mb               //同步队列的长度,backuplog是master的一个缓冲区,主从断开后,master会先把数据写入到缓冲区,slave再次连接会从缓冲区中同步数据

6)repl-backlog-ttl 3600                //主从断开后,缓冲区的有效期,默认1小时

7)slave-priority 100                     //多个slave是可以设置优先级的,数值越小优先级越高,应用于集群中,支持slave切换为master,优先级最高的才会切换

8)min-slaves-to-write 3              //和下面的一起使用,它的意思是master发现有超过3个slave的延迟高于10s,那么master就会暂停写操作。这两个数值任何一个为0,则关闭该功能,默认第一个数值是0

9)min-slaves-max-lag 10



      本文转自 M四月天 51CTO博客,原文链接:http://blog.51cto.com/msiyuetian/1719176,如需转载请自行联系原作者




相关文章
|
11月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。
1014 25
|
NoSQL 安全 Linux
设置Redis在CentOS7上的自启动配置
这些步骤总结了在CentOS 7系统上设置Redis服务自启动的过程。这些命令提供了一个直接且明了的方式,确保Redis作为关键组件在系统启动时能自动运行,保障了依赖于Redis服务的应用的稳定性和可用性。
955 9
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
766 1
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。同时,定期监控和维护Redis实例,及时调整配置,能够确保系统的稳定运行。希望本文对您在Redis的配置与优化方面有所帮助。
316 23
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。
338 7
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
存储 NoSQL Redis
Redis 配置
10月更文挑战第14天
420 1
|
存储 缓存 NoSQL
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
大数据-46 Redis 持久化 RDB AOF 配置参数 混合模式 具体原理 触发方式 优点与缺点
508 1
|
NoSQL Redis 容器
【Azure Cache for Redis】Redis的导出页面无法配置Storage SAS时通过az cli来完成
【Azure Cache for Redis】Redis的导出页面无法配置Storage SAS时通过az cli来完成
257 3
|
缓存 NoSQL 测试技术
【Azure Redis 缓存】Azure Redis 功能性讨论三: 调优参数配置
【Azure Redis 缓存】Azure Redis 功能性讨论三: 调优参数配置
243 1