背景
下午6点,风和日丽,办公室静悄悄的,一切都充满着祥和平静,但暴风雨前总是平静的,果然没过一会儿,隔壁部门的大诚哥就来找我:“小米,MongoDB数据能恢复吗?我删除了一个表怎么创建回来?”,我弱弱地问一句:“哪个环境?”,他说:“正式环境”,我:“……”,想准时下班的愿望泡汤了
解决方案
我们的这个项目是用云MongoDB部署的,默认每天凌晨都会进行一次备份,但现在距离凌晨备份已经很长时间了,无法使用自动备份的数据,只能看看云MongoDB是否可以恢复。
幸好,云MongoDB数据恢复功能可以最大程度地减少因数据库误操作引起的损失。云数据库MongoDB版提供了多种数据恢复方案,可满足不同场景下MongoDB数据库的数据恢复需求。
数据恢复至MongoDB实例
数据恢复至自建数据库
还可以将云数据库MongoDB的备份文件下载到本地,然后将数据恢复至自建数据库,可用于业务测试或数据分析等场景。
通过阅读官方文档我们分别采用了“MongoDB单库恢复”和“将MongoDB逻辑备份文件恢复至自建数据库”两种方式。
MongoDB单库恢复操作步骤
- 登录MongoDB管理控制台
- 在页面左上角,选择实例所在的资源组和地域
- 在左侧导航栏,单击副本集实例列表
- 找到目标实例,单击实例ID。
- 单击目标实例ID或目标实例所在行操作列,并选择管理。
- 单击全量备份页签。
- 通过以下任意一种方法选择需要恢复的数据库。
7.1、按时间点创建实例
7.1.1、单击按时间点创建实例。
7.1.2、在按时间点创建实例面板,设置以下参数
7.1.3、
7.1.4、单击确定。
7.2、从备份点创建实例
7.2.1、在备份文件列表中,单击目标备份文件所在行操作列的,并选择从备份点创建实例。
7.2.2、在从备份点创建实例面板,选择部分数据库,并勾选需要恢复的数据库库名。
7.2.3、点击确定
8.新建实例
8.1、在克隆实例页面,选择商品类型。
8.1.1、副本集(包年包月):预付费,在创建实例时就需要支付费用。适合长期需求,价格比按量付费更实惠,且购买时长越长,折扣越多。
8.1.2、副本集(按量付费):后付费,每小时根据实例配置生成1个收费订单,并扣除相应的账户余额。适合短期需求,用完可立即释放实例,节省费用。
8.2、选择新购实例的配置信息,选择新购实例的配置信息
9.购买实例。
9.1、单击立即购买。
9.2、在确认订单页面,阅读并勾选云数据库MongoDB版服务协议。
9.3、单击去支付。
9.4、根据提示完成支付流程。
逻辑备份恢复至自建数据库
Mongorestore是MongoDB数据库自带的恢复工具,您可以通过Mongorestore将云数据库MongoDB副本集实例的逻辑备份文件恢复至自建MongoDB数据库中。
前提条件
- 实例为MongoDB 4.2及以下版本的副本集实例。
- 为保障兼容性,自建MongoDB数据库和云数据库MongoDB副本集实例的数据库版本相同。
准备工作
下载并安装与云数据库MongoDB实例数据库版本相同的MongoDB至自建MongoDB数据库所在客户端(本地服务器或云服务器ECS实例)。
操作步骤
- 登录MongoDB管理控制台。
- 在页面左上角,选择实例所在的资源组和地域。
- 在左侧导航栏,单击副本集实例列表。
- 单击目标实例ID或目标实例所在行操作列,并选择管理。
- 备份数据库。
- 在目标实例页面右上方,单击备份实例。
- 在备份实例 面板,选择备份方法 为逻辑备份。
- 单击确定,等待实例备份完成。
- 下载备份文件。
- 将下载的备份文件复制到自建MongoDB所在客户端(即安装有Mongorestore工具的客户端)。
mongorestore -h 127.0.0.1 --port 27017 -u root -p ******** --drop --gzip --archive=hins1111_data_20190710.ar -vvvv --stopOnError