| 全文共1883字,阅读需要5分钟
在Redis中,提供了两种持久化数据的方式,分别是RDB和AOF。
RDB持久化的方式是通过快照完成的,RDB程序将内存中的数据集快照保存到磁盘中,在重启Redis时,RDB程序可以通过载入RDB文件来还原数据库的状态。
AOF是以独立日志的方式记录每次的写命令,重启时执行文件中的命令达到数据恢复的目的。
其中AOF文件是明文记录的,因此数据恢复比较简单,而RDB文件则是二进制文件,只能通过Redis服务进行恢复。本章着重讲述RDB文件的备份与恢复。
RDB备份
在连接到Redis的客户端中使用save或者bgsave命令即可将当前Redis数据持久化到对应的RDB文件中。其中save命令在数据量过大时会阻塞Redis服务,不建议在线上环境使用。bgsave命令会fork一个子进程进行持久化,阻塞只发生在fork阶段,推荐使用。
持久化结束之后会生成一个dump.rdb文件,生成的目录位置与文件名称可在redis.conf配置文件中进行配置。
RDB恢复
逻辑备份与恢复
MongoDB提供了mongodump和mongorestore命令用来进行逻辑备份和恢复。mongodump命令执行之后会将对应数据备份以bson格式备份到对应目录下。
mongodump语法如下:
mongorestore语法如下:
参数说明:
-d: 需要恢复的数据库实例,这个名称可以和备份时的数据库实例名称不一致
<path>: 最后一个参数,设置备份数据所在位置, 如 /tmp/backup/test
物理备份与恢复
目前MongoDB默认使用的是WiredTiger存储引擎,下文主要介绍使用WiredTiger的MongoDB物理备份与恢复。
MongoDB在初始化或者运行时需要一个dbpath的参数,这个参数指定了数据目录所在的位置,只需要备份这个目录所有的文件即可物理备份所有的数据。可通过mongodb.conf文件中的dbpath查看对应数据目录位置或者服务正常运行情况下使用db.serverCmdLineOpts()。由于物理备份还原需要尽量一致的MongoDB版本环境,可以通过dbpath目录下的WiredTiger文件内容了解到当前WiredTiger的版本,从而查询出对应MongoDB服务的版本号。
进行物理备份还原之前需要安装对应的MongoDB服务然后新建一个配置文件mongod.conf,可使用下面的模板进行配置。
其中dbpath更改为我们物理备份目录即可。
通过下方命令即可进行物理备份恢复:
由于Redis或者MongoDB在进行数据恢复时必须要安装对应的数据库服务,而且进行恢复时仍然会产生其他的问题,基于以上情况出发,目前弘连数据库取证工具最新版本已经可以一键解析RDB文件和MongoDB物理备份文件。
RDB物理备份恢复
启动数据库取证工具后在首页选择添加数据库,数据库类型分别选择非关系型和Redis,然后在下方数据库文件中选择对应的RDB文件即可进行一键恢复数据。
在右上方导出表记录中可以选择对应的数据进行导出,导出后可获取到物理备份文件中的明文数据。
MongoDB物理备份恢复
首页添加数据库中数据库类型选择非关系型和MongoDB之后,在下方的数据库文件中选择wt后缀的数据文件,数据库取证工具将自动分析,wt文件层级并整理出所有的数据库,集合之间的关系,并展示到界面上。
对于阿里云xb类型的MongoDB备份文件也进行了一键支持。下方以xb备份为例:
扫描并罗列出物理备份文件中所有的数据库。可选择单独解析一个数据库或者批量解析多个数据库。
预览界面可以预览对应数据库中的所有集合数据。
也可选择右上角导出对应的数据库或者单独的集合。
编辑排版:Yvonne
审核:Spring
原文始发于微信公众号(网络安全与取证研究):技术分享 | Redis与MongoDB 数据备份与恢复
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论