前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis线上案例---加载RDB失败

Redis线上案例---加载RDB失败

作者头像
AsiaYe
发布2021-11-09 11:19:48
9420
发布2021-11-09 11:19:48
举报
文章被收录于专栏:DBA随笔

Redis线上案例---加载RDB失败

之前的某一天早晨,在查看线上报警的时候,发现下面这样一个场景,Redis复制报错,一直提示加载RDB不成功,记录一下这个案例,希望有所帮助吧。

先来看下这个报错信息:

代码语言:javascript
复制
29965:S 27 Oct 10:20:01.151 * Connecting to MASTER 10.xx.x.xxx:22300
29965:S 27 Oct 10:20:01.151 * MASTER <-> SLAVE sync started
29965:S 27 Oct 10:20:01.152 * Non blocking connect for SYNC fired the event.
29965:S 27 Oct 10:20:01.153 * Master replied to PING, replication can continue...
29965:S 27 Oct 10:20:01.155 * Partial resynchronization not possible (no cached master)
29965:S 27 Oct 10:20:01.163 * Full resync from master: 7c4fde9bd883db984e860a312650054b048d477f:39135298310
29965:S 27 Oct 10:20:01.564 * MASTER <-> SLAVE sync: receiving 9006542 bytes from master
29965:S 27 Oct 10:20:01.678 * MASTER <-> SLAVE sync: Flushing old data
29965:S 27 Oct 10:20:01.678 * MASTER <-> SLAVE sync: Loading DB in memory
29965:S 27 Oct 10:20:01.678 # Can't handle RDB format version 8
29965:S 27 Oct 10:20:01.678 # Failed trying to load the MASTER synchronization DB from disk

报错信息也比较容易理解,不能处理主库传送给从库的RDB文件,因为版本问题。

查看一下主库和从库的Redis数据库版本,如下:

代码语言:javascript
复制
---------------------主库信息--------------------------
redis  22300> info server
# Server
redis_version:4.0.6
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:651271bc39ec5b90
redis_mode:standalone
os:Linux 3.10.0-957.el7.centos.toa.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:pthread-mutex
gcc_version:4.1.2

---------------------从库信息--------------------------
redis 22300> info server
# Server
redis_version:3.0.7
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:aa6f2484202340bc
redis_mode:standalone
os:Linux 3.10.0-514.6.2.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll

可以看到,主库和从库的版本出现了不一致现象,主库的版本4.0.6高于从库的版本3.0.7,导致复制中断。

解决方案:升级从库版本为4.0.6版本即可。

本身这个问题的解决是比较快的,就是更换版本即可。但是为什么会出现版本不一致的问题,这是值得思考的,经过一系列排查,最终得到了一个可能的原因。

1、本来这个端口的Redis版本是3.0.7,架构如下:

2、因为要做版本升级,架构变成了:

3、从库升级为高版本之后,需要做一个主从切换,主从切换之后架构变成了:

此时复制中断。

执行到这一步之后,复制断开,后面需要以新主库为基础,重新搭建主从复制,扩容两个从库,对业务提供读写分离即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DBA随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档