redis主从同步

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: redis,主从,master,slave

redis主从复制原理:

(1)Slave服务器连接到Master服务器.
(2)Slave服务器发送SYCN命令.
(3)Master服务器备份数据库到.rdb文件.
(4)Master服务器把.rdb文件传输给Slave服务器.
(5)Slave服务器把.rdb文件数据导入到数据库中.
上面的这5步是同步的第一阶段, 接下来在Master服务器上调用每一个命令都使用replicationFeedSlaves()来同步到Slave服务器.如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master。2.8以前按照full sync再同步。2.8以后,因为有backlog的设定,backlog存在master的内存里,重新连接之前,如果redis没有重启,并且offset在backlog保存的范围内,可以实现从断开地方同期,不符合这个条件,还是full sync

主从复制简介:

1,master可以有多个slave
2,slave同样可以接受其他slave的连接和同步请求,这样可以有效分载master压力。
3,主从复制不会阻塞master,但一个或者多个slave于master进行初次数据同步时,master可以继续处理客户端的请求,相反slave在进行初次数据同步时会阻塞,不能处理客户端的请求。
4,可以在master禁用持久化,只需要注释master配置文件中所有的slave配置,然后只在slave上配置数据持久化
5,slave可以为客户端提供只读操作的服务,写服务必须由master来完成。

配置主从同步:

主:192.168.225.132:6379
从:192.168.225.132:6380

主服务器不需要做任何修改,修改从服务器配置如下:

slave-serve-stale-data yes                 //同步时,从redis仍会继续相应客户端请求。no表示同步时,从redis不响应请求
slaveof 192.168.100.20 6379                //指定master的ip和端口  
repl-ping-slave-period 10                //从redis会周期性的向主redis发出PING包,默认10s一次
repl-timeout 60                        //主从同步超时时间,60s
repl-disable-tcp-nodelay no                //开启TCP_NODELAY,那么主redis会使用更少的TCP包和更少的带宽来向从redis传输数据,会增加同步的延迟。关闭了TCP_NODELAY,那么数据同步的延迟时间会降低,但是会消耗更多的带宽。
repl-backlog-size 1mb                //设置同步队列长度为1M,队列长度(backlog)是主redis中的一个缓冲区,主从断开期间,主redis会用这个缓冲区来缓存应该发给从        redis的数据,主从从新连接上后,只需要同步这部分增量数据即可。
repl-backlog-ttl 3600                //主redis等了3600秒还是无法连接到从redis,那缓冲队列中的数据将被清理掉。如果设置为0,则表示永远不清理。
slave-priority 100                //从redis的优先级,主redis出现问题,优先级高的从redis会升级为主redis,编号越小优先级越高。优先级为0表示永远也不能成为主。
min-slaves-to-write 3                //大于等于3个从redis的连接延迟大于10秒,那么主redis就不再接受外部的写请求。两个配置中有一个被置为0,则这个特性将被关闭。
min-slaves-max-lag 10

主从验证:
登录主库执行:

[root@master ~]# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=658,lag=1                //offset表示当前slave的复制偏移量
master_repl_offset:658                        //当前master记录的复制偏移量
repl_backlog_active:1
repl_backlog_size:1048576                ## 复制集后台backlog大小,越大,slave可以丢失的时间就越长
repl_backlog_first_byte_offset:2
repl_backlog_histlen:3131

登录从库执行:

[root@master ~]# redis-cli -h 127.0.0.1 -p 6380
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up                //必须是up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:518
slave_priority:100

主从复制正常时:

master_link_status:up
master_repl_offset和slave_repl_offset相等
master_last_io_seconds_ago 在 10 秒内。

主库宕机后将从库提升为主:

127.0.0.1:6380> slaveof no one                //从库手动提升为主库
127.0.0.1:6380> slaveof 127.0.0.1 6379        //手动设置为从库
相关实践学习
基于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
目录
相关文章
|
4月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
6月前
|
存储 缓存 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多路复用模型
|
2月前
|
监控 NoSQL 容灾
# Redis主从同步技术分享
Redis作为一个高性能的内存数据库,其主从同步机制是分布式环境下保证数据一致性的重要手段。本文将详细介绍Redis主从同步的实现方法,包括全量同步和增量同步,以及如何配置和监控主从同步状态。
|
7月前
|
缓存 运维 NoSQL
Redis主从模式部署
Redis主从模式部署
71 4
|
7月前
|
缓存 NoSQL Redis
Redis主从架构
当看到图示中红色标记的,就代表从节点挂载成功了。
47 0
|
4月前
|
NoSQL 安全 容灾
阿里云DTS踩坑经验分享系列|Redis迁移、同步
阿里云数据传输服务DTS在帮助用户迁移Redis数据、同步数据时,在某些复杂场景下会出现报错,或者源库与目标库数据不一致的问题,给用户带来困扰。本文介绍了DTS Redis到Redis迁移、同步过程中的典型问题,以帮助用户更好地使用DTS。
284 2
|
7月前
|
NoSQL Java 关系型数据库
考考你Redis主从,就知道有没深入Redis
大家好,我是南哥。一个对Java程序员进阶成长颇有研究的人,今天继续给大家带来新的一篇Java进阶指南。如果是单机版的数据库,像MySQL、Redis,看起来实现并不复杂。只要支持保存一条数据,同时要能够查询出来。但如果是多机版的数据库呢,各个节点的配合联调是比较复杂的过程,看起来就不是那么简单喽。要考你对Redis深不深入理解,问问Redis多机版相关的问题就知道了。我们今天就来指南下Redis主从架构。
考考你Redis主从,就知道有没深入Redis
|
6月前
|
监控 NoSQL Ubuntu
|
7月前
|
消息中间件 NoSQL Linux
详解Redis的主从同步原理
只不过在主节点中叫做master_repl_offset; 从节点也有一个偏移量叫做slave_repl_offset,用来记录从节点已经从主节点的repl_backlog_buffer中同步到的最新写指令的位置;
1286 2
|
6月前
|
安全 NoSQL Java
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R