Redis rdb文件手动合并

线上服务使用的阿里云的集群版本redis服务,数据量1千万,rdb文件4GB。

线下测试环境只有单节点redis,需要导入线上全量数据。

8个rdb文件,每个500MB。

RDB格式如下:

头5个字节是字符REDIS。

之后4个字节代表版本号,阿里的版本分别是 00 00 00 06

之后2个字节 FE 00,FE是标识 00是数据库,还好我们只有一个库。

最后的结尾9个字节 。

FF 加上8个字节的CRC64校验码(实在没空弄,后来偷了一个懒) 。

一、生成对应的文件

#文件1 大小566346503,截取尾部的9个字节

dd bs=1 if=src_1.rdb of=1.rdb count=566346494

#文件2 大小570214520,跳过头部的11个字节,再截取尾部的9个字节

#dd bs=1 if=src_2.rdb of=2.rdb skip=11 count=570214400

...

#文件8 大小569253061,跳过头部的11个字节,再截取尾部的8个字节,保留FF。

dd bs=1 if=src_8.rdb of=8.rdb skip=11 count=569253042

二、合并文件

cat 1.rdb > dump.rdb

cat 2.rdb >> dump.rdb

...

cat 8.rdb >> dump.rdb

备份文件合并完毕。

三、检查备份文件

redis-check-rdb dump.rdb 

应该会提示没有crc校验。

四、修改配置文件

因为数据库备份文件里面不包含crc64的校验码,配置文件中关闭选项。

rdbchecksum no

数据恢复到此结束,此方法只适合用于临时恢复和导出数据,数据完整性不敢保证。


参考的文章

https://github.com/sripathikrishnan/redis-rdb-tools/wiki/Redis-RDB-Dump-File-Format

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载地址:http://gnucto.blog.51cto.com/3391516/998509 Redis与Me...
    Ddaidai阅读 21,465评论 0 82
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,099评论 1 51
  • 介绍 首先,我们应该明确持久化的数据有什么用,答案是用于重启后的数据恢复。 Redis是一个内存数据库,无论是RD...
    小王写bug阅读 932评论 0 1
  • 安全性 设置客户端连接后进行任何其他指令前需要使用的密码。 警告:因为redis 速度相当快,所以在一台比较好的服...
    OzanShareing阅读 1,824评论 1 7
  • 三十而立,四十不惑,算起来已近不惑,经历了看起来像是终点实际上只是一个大站的高考,工作,恋爱,结婚,生子,生女,在...
    毛毛咻咻萌萌阅读 236评论 0 0