🌦️丽水阵雨13~21℃北京 16/7℃上海 23/16℃广州 31/22℃深圳 32/22℃杭州 22/15℃成都 20/13℃全国天气 »登录

阿里云RDS MongoDB数据库物理备份的xb文件格式恢复到本地数据库的图文教程

李李洋博客 2025-03-31 13:13 18 阅读 3097 字

上周刚刚恢复msyql的备份,这周继续恢复MongoDB数据库,要求云数据库MongoDB版实例的版本必须对应自建MongoDB数据库的版本。物理备份文件格式【xbstream】,格式文件后缀【_qp.xb】,2019年03月26日及之后创建的实例,物理备份文件格式为xbstream。另外官方特别说明:由于Windows暂未支持解压此文件所需的percona-xtrabackup工具,因此xbstream格式仅限Linux系统中解压使用。

本文示例所用的服务器为云ECS实例,镜像为Centos7.6(64位),创建方法请参见创建ECS实例。

ECS服务器已安装对应版本的MongoDB,安装方法请参考 李洋博客 《 阿里云RDS MySQL数据库物理备份的xb文件格式恢复到本地数据库的图文教程 》的安装步骤。

ECS服务器已对MongoDB配置环境变量,执行命令时无需再输入可执行文件的路径。

/test/mongo/data作为MongoDB物理恢复操作的数据库所在目录。

确认 MongoDB 的可执行文件路径, 首先检查 MongoDB 的安装位置:

# 输出示例:/usr/bin/mongowhich mongod # 输出示例:/usr/bin/mongod

如果输出路径已经是 /usr/bin(默认路径),则无需配置环境变量,因为这些目录默认在系统的 PATH 中。

如果非默认路径,编辑用户环境变量配置文件:

在文件末尾添加以下内容:

保存文件后,重新加载配置:

把下载好的阿里云备份文件上传到云服务器,比如【/backup】目录下,记住这个路径,一会要用。

执行如下命令,命令执行在/test/mongo/中新建一个data目录,并将刚才上传的MongoDB物理备份文件移动到/test/mongo/data/目录中。

因为我的数据库的备份文件后缀为_qp.xb,安装percona-xtrabackup工具和qpress 软件 包。详情请参见李洋博客的《 阿里云RDS MySQL数据库物理备份的xb文件格式恢复到本地数据库的图文教程 》安装步骤。

解压物理备份文件,例如数据库备份文件名为hins14438959_data_20220802043338_qp.xb。

解包成功如图,但是解包完成后的格式依然不能直接使用,比如图中的.qp格式。

对于 _qp.xb 格式我们继续使用xtrabackup解压物理备份文件。

注意,xbstream和xtrabackup目录参照李洋博客《 阿里云RDS MySQL数据库物理备份的xb文件格式恢复到本地数据库的图文教程 》文章的安装方法,然后直接引用目录,不能直接使用。

执行以上命令解压备份文件, 成功如图:

然后我们回到目录下刷新,看看是不是所有的qp格式成功转换。

目前数据库恢复完成,但是我们还需要将他恢复到数据里,一遍我们去查看源数据是否完成,接下来执行如下命令在/test/mongo文件夹中新建配置文件mongod.conf。

打开mongod.conf文件,键盘输入i开启编辑模式。

根据云数据库MongoDB版的存储引擎选择启动的配置模板,您可以将其复制到mongod.conf文件中。配置文件设置了启动模式为单节点模式并开启认证功能。

WiredTiger存储引擎

云数据库MongoDB默认使用的是WiredTiger存储引擎,并且开启了directoryPerDB选项,因此配置中指定了这个选项。

按Esc键退出编辑模式,键盘输入:wq保存并退出。

首先停止mongodb的运行状态:

然后指定新建的配置文件mongod.conf来启动MongoDB。

等待启动完成后,执行如下命令登录MongoDB数据库,进入Mongo Shell。

当然您可以会遇到错误,不知道是不是来回测试的原因,我首次指定新的配置好使,后续就一直失败,

这是我们需要去原来数据目录删除【storage.bson】和【mongod.lock】,记得先备案,或者直接重命名,我的服务器原来的数据目录是【/var/lib/mongo】,如图:

然后再次执行新配置命令,就可以了。

翻译之后大概就是:即将分叉子进程,等待服务器准备好连接。分叉进程:1231,子进程已成功启动,父进程正在退出。

启动MongoDB,命令:

如果启动失败,查看错误日志命令:

解决问题之后,执行命令进入数据库查看:

:该MongoDB实例的数据库账号,默认为root。

:该数据库账号对应的密码。

如果您的密码中包含特殊字符,则需要使用英文单引号(')包裹密码,如:'test123!@#'。否则可能会登录失败。

在Mongo Shell中,执行

查询当前本地MongoDB中所有的数据库,以验证是否恢复成功。

至此恢复工作已成功完成,您可以在Mongo Shell中执行【exit】命令退出Mongo Shell

完成上述步骤后,您即可使用单节点模式启动MongoDB数据库,如需使用副本集模式启动数据库请参考阿里云官网文档。

当然了,你现在就会发现,无法启动MongoDB,至于原理我不晓得,查了好多资料都没有办法重启成功,后来真是逼得我没招没招得了眼看数据库已经恢复了,但是你看不见,也不能备份,于是我在宝塔面板的【MongoDB】尝试添加了以下远程数据库,地址就是本机的,发现可以链接,但是还是没有办法操作,如图:

于是乎我就想着能不能在安装以下宝塔运营商店里的mongodb软件,理论可以实践开始,在选择版本的时候我选择了【4.4】,因为我的备份是4.2,相差不多,感觉应该可以,但是安装完成后系统提示“启动失败,指定PID: /www/server/mongodb/log/configsvr.pid(26881 ) 进程不存在”,估计是服务器安装两个MongoDB冲突导致,因为已经安装完成,只是不能启用,所以我打算更换下默认端口,然后重新指定宝塔的配置文件,

首先找到这两个目录,一个是【/var/lib/mongo】首次安装后生成的,一个是刚才重新指定的【/test/mongo/data】,将这两个目录里的文件删除或者重命名【storage.bson】和【mongod.lock】文件,然后在MongoDB软件的配置项,修改IP和端口还有数据目录,如图:

如果保存无效,那么就点击【配置文件】在里面修改是一样的,然后保存,服务状态选择【启动】,你会发现启动完成,哈哈哈,凑巧了,哈哈哈。最后回到数据库菜单,选择【MongoDB】找到【同步数据库】,选择【从服务器同步到面板】,如图:

这是系统会自动同步过来,因为之前我们的数据库目录指向了还原成功的目录,所以可以读取,然后使用【Navicat】软件去链接,如图:

注意端口别弄错了,用新端口去访问,如果不行记得在云服务器防火墙开通端口访问权限,好了,至此MongoDB从备份到还原再到恢复数据已经完成了,接下来就是重新备份sql格式,恢复到其他服务器也可以直接使用,不在需要这么繁琐的操作了,哎妈呀,累死我了,好了我得去歇会,因为我是反反复复测试了好几次,部分可能重复,但是不管怎么样算是成功了。有问题的留言反馈吧~

CentOS系统手动安装MongoDB 4.2亲测有效,超详细图的图文教程

CentOS系统安装部署nginx后提示找不到nginx.service单元的解决方案

当前文章地址:http://darenshuju.cn/item/3318/27548.html

↑