Redis主从配置

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

一:原理


主要是通过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,如需转载请自行联系原作者




相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
NoSQL 算法 安全
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
Redlock 算法-主从redis分布式锁主节点宕机锁丢失的问题
152 0
|
1月前
|
NoSQL Java Redis
Springboot从2.x升级到3.x以后redis默认配置调整
Springboot从2.x升级到3.x以后redis默认配置调整
42 0
|
2月前
|
NoSQL Redis
若依管理系统去掉Redis相关配置
若依管理系统去掉Redis相关配置
|
2月前
|
NoSQL Redis 数据安全/隐私保护
Docker中Redis的安装与配置
本文主要讲解如何在Docker环境中搭建Redis环境,并进行相关配置
240 5
Docker中Redis的安装与配置
|
3月前
|
存储 NoSQL 安全
Redis持久化原理以及配置
Redis持久化原理以及配置
108 0
|
1月前
|
NoSQL Linux Redis
Linux系统中安装redis+redis后台启动+常见相关配置
Linux系统中安装redis+redis后台启动+常见相关配置
|
2月前
|
NoSQL Redis Docker
在docker中安装redis,并且阿里云服务器配置
在docker中安装redis,并且阿里云服务器配置
181 1
|
27天前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
177 0
|
1月前
|
运维 负载均衡 NoSQL
【大厂面试官】知道Redis集群和Redis主从有什么区别吗
集群节点之间的故障检测和Redis主从中的哨兵检测很类似,都是通过PING消息来检测的。。。面试官抓抓脑袋,继续看你的简历…得想想考点你不懂的😰。
67 1
|
1月前
|
NoSQL 算法 数据管理
【Redis】Redis配置参数详解:优化过期删除机制
【Redis】Redis配置参数详解:优化过期删除机制
54 0