Redis主从复制

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介:

redis的主从复制:

主节点对内存数据直接进行一次快照,并将快照文件发给从节点,从节点在本机的内存空间重构数据库,完成复制,主节点的数据就会同步到从节点上

特点:
            一个Master可以有多个slave主机,支持链式复制;
            Master以非阻塞方式同步数据至slave主机;


实验说明:

本实验使用三台设备,一主二从,通过修改配置文件和在命令行操作两种方式完成从节点的配置

1、安装redis软件包、启动服务、同时同步时间

1
2
3
yum -y  install  redis
systemctl  start redis.service 
ntpdate 172.18.0.1

2、主节点配置

主节点开启认证功能、指定监听地址,不用做其他的操作

1
2
3
vim  /etc/redis .conf
requirepass centos
bind 0.0.0.0    #本实验环境就监听所有地址,实际场景中应该是监听提供服务的ip


3、从节点A上的配置(修改配置文件的方式)

修改监听地址、auth认证

1
2
3
vim  /etc/redis .conf
requirepass centos
bind 0.0.0.0

关联的主节点信息

1
2
3
slaveof 192.168.1.101 6379    #主节点的地址和端口
masterauth centos      #主节点配置的认证口令
#从节点只需配置这些,很简单

然后启动redis服务,在本机检查结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
redis-cli  -h 192.168.1.106     #从节点连接本机redis服务
AUTH centos    #只有本机通过认证才能执行后面的操作
192.168.1.106:6379[15]> INFO Replication    #查看从主节点同步过来的信息
# Replication
role:slave    #当前角色是slave
master_host:192.168.1.101    #主节点地址
master_port:6379    #端口
master_link_status:up    #与主节点的链路状态是up的
master_last_io_seconds_ago:1  
master_sync_in_progress:0
slave_repl_offset:603
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

4、在主节点上检查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
redis-cli  -h 192.168.1.101   
192.168.1.101:6379> CLIENT LIST
id =3 
addr=192.168.1.106:39661 fd=5 name= age=344 idle=0 flags=S db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf- free =0 obl=0 oll=0 omem=0 events=r cmd=replconf
或者
192.168.1.101:6379> INFO Replication
# Replication
role:master    #当前是主节点
connected_slaves:1
slave0:ip=192.168.1.106,port=6379,state=online,offset=505,lag=0
master_repl_offset:505
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:504

5、从节点B上的配置(命令行方式)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
redis-cli  -h 192.168.1.107
192.168.1.107:6379> AUTH centos
OK
 
192.168.1.107:6379> slaveof 192.168.1.101 6379 
192.168.1.107:6379> CONFIG SET masterauth centos
#这两条与从节点A在配置文件中修改的内容是一样的
 
192.168.1.107:6379> SELECT 15
OK
192.168.1.107:6379[15]> GET key1
"hello redis,hello linux"
#在主节点已经提前创建一些数据,所以在从节点能够同步过来
192.168.1.107:6379[15]> INFO Replication
# Replication
role:slave    #当前状态是从节点
master_host:192.168.1.101
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:3543
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
192.168.1.107:6379[15]> CONFIG GET slave- read -only    #从节点只读功能,默认即是开启的
1)  "slave-read-only"
2)  "yes"
192.168.1.107:6379[15]> CONFIG REWRITE
OK
#将配置写入配置文件中
tail  /etc/redis .conf
#此时能够看到命令行的信息已经写入到了配置文件中

在主节点上虽然配置的字段不多但是还是有很多选项需要我们注意:

1
2
3
4
repl-diskless- sync  no    #不设定无磁盘的同步,即不必等待所有从节点请求到达再一次性完成复制,而是来几个从节点完成几次复制
repl-diskless- sync -delay 5  #无磁盘同步的延迟时间
repl- ping -slave-period 10   #每隔多长时间去探测slave节点是否存活,单位是秒
repl-timeout 60   #复制的超时时间

从节点配置需要注意一点

1
2
slave-priority 100    #当主节点故障,多个从节点依据此优先级抢占主节点位置,默认值是100,值越小越优先,0表示不参见抢占
slave- read -only  yes    #从节点只读功能即可


总结:

redis的主从复制配置起来非常简单,主节点只需开启服务、认证和bind地址

从节点无论在配置文件还是命令行关键就是完成指定主节点地址和端口以及认证口令的配置,可以说两条语句搞定。只是cli模式下要重写入配置文件而已


至此,redis的主从复制实验结束,比MySQL的主从复制简单多了


本文转自  a_pan  51CTO博客,原文链接:http://blog.51cto.com/panpangao/1982608


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
存储 负载均衡 NoSQL
Redis之主从复制
【1月更文挑战第8天】主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(masterleader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。 默认情况下,每台Redis服务器都是主节点; 且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
196 6
|
3月前
|
NoSQL 关系型数据库 MySQL
Redis高可用之主从复制架构(第一部分)
Redis高可用之主从复制架构(第一部分)
|
3月前
|
监控 NoSQL 容灾
【Redis】主从复制
【Redis】主从复制
|
25天前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
3月前
|
存储 监控 负载均衡
redis 集群 (主从复制 哨兵模式 cluster)
redis 集群 (主从复制 哨兵模式 cluster)
|
6天前
|
消息中间件 存储 缓存
深入理解Redis集群主从复制原理
该文章主要探讨了Redis集群中的主从复制原理,包括为何需要主从复制、配置方法、复制流程以及一些高级特性。
深入理解Redis集群主从复制原理
|
22天前
|
NoSQL Redis
Redis 主从复制架构配置及原理
Redis 主从复制架构配置及原理
32 5
|
2月前
|
存储 NoSQL 网络协议
主从复制,Could not connect to Redis at 127.0.0.1:6380: Connection refusednot connected> exit,1.主从模式如何指
主从复制,Could not connect to Redis at 127.0.0.1:6380: Connection refusednot connected> exit,1.主从模式如何指
|
3月前
|
监控 NoSQL Redis
Redis - 主从复制那些事与高可用sentinel
Redis - 主从复制那些事与高可用sentinel
47 0
|
3月前
|
负载均衡 NoSQL 关系型数据库
深入浅出Redis(六):Redis的主从架构与主从复制原理
深入浅出Redis(六):Redis的主从架构与主从复制原理