案例分析:记一次MongoDB误删集合的解决过程

背景下午6点,风和日丽,办公室静悄悄的,一切都充满着祥和平静,但暴风雨前总是平静的,果然没过一会儿,隔壁部门的大诚哥就来找我:“小米,Mongo

案例分析:记一次MongoDB误删集合的解决过程

背景

下午6点,风和日丽,办公室静悄悄的,一切都充满着祥和平静,但暴风雨前总是平静的,果然没过一会儿,隔壁部门的大诚哥就来找我:“小米,MongoDB数据能恢复吗?我删除了一个表怎么创建回来?”,我弱弱地问一句:“哪个环境?”,他说:“正式环境”,我:“……”,想准时下班的愿望泡汤了

案例分析:记一次MongoDB误删集合的解决过程

解决方案

我们的这个项目是用云MongoDB部署的,默认每天凌晨都会进行一次备份,但现在距离凌晨备份已经很长时间了,无法使用自动备份的数据,只能看看云MongoDB是否可以恢复。

幸好,云MongoDB数据恢复功能可以最大程度地减少因数据库误操作引起的损失。云数据库MongoDB版提供了多种数据恢复方案,可满足不同场景下MongoDB数据库的数据恢复需求。

数据恢复至MongoDB实例

数据恢复方法

支持的实例类型

适用场景

注意事项

从备份点新建实例

单节点实例、副本集实例

适用于恢复整个实例,且对数据的时效性要求不高的场景

此操作将会基于备份数据创建一个新的实例,并将数据恢复至新实例中。

按时间点新建实例

副本集实例、分片集群实例

适用于多个库或整个实例的数据恢复场景,将数据还原至某个时间点

MongoDB单库恢复

副本集实例

适用于单个或多个数据库快速数据恢复的业务场景,例如误删了某个集合或文档。

直接恢复数据至当前实例

副本集实例(三节点)

直接恢复数据到当前实例存在较大风险,建议使用按时间点新建实例的功能来恢复数据,做好数据校验后,再通过DTS工具迁移回原实例。

数据恢复至自建数据库

还可以将云数据库MongoDB的备份文件下载到本地,然后将数据恢复至自建数据库,可用于业务测试或数据分析等场景。

数据恢复方法

支持的实例类型

将MongoDB逻辑备份文件恢复至自建数据库

副本集实例

将MongoDB物理备份文件恢复至自建数据库

副本集实例

通过阅读官方文档我们分别采用了“MongoDB单库恢复”和“将MongoDB逻辑备份文件恢复至自建数据库”两种方式。

MongoDB单库恢复操作步骤

1、登录MongoDB管理控制台

2、在页面左上角,选择实例所在的资源组和地域

3、在左侧导航栏,单击副本集实例列表

4、找到目标实例,单击实例ID。

5、单击目标实例ID或目标实例所在行操作列的,并选择管理。

6、单击全量备份页签。

7、通过以下任意一种方法选择需要恢复的数据库。

7.1、按时间点创建实例

7.1.1、单击按时间点创建实例。

7.1.2、在按时间点创建实例面板,设置以下参数

案例分析:记一次MongoDB误删集合的解决过程

7.1.3、单击确定。

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实例)。

操作步骤

1、登录MongoDB管理控制台。

2、在页面左上角,选择实例所在的资源组和地域。

3、在左侧导航栏,单击副本集实例列表。

4、单击目标实例ID或目标实例所在行操作列的,并选择管理。

5、备份数据库。

5.1、在目标实例页面右上方,单击备份实例。

5.2、在备份实例 面板,选择备份方法 为逻辑备份。

5.3、单击确定,等待实例备份完成。

6、下载备份文件。

7、将下载的备份文件复制到自建MongoDB所在客户端(即安装有Mongorestore工具的客户端)。

mongorestore -h 127.0.0.1 --port 27017 -u root -p ******** --drop --gzip --archive=hins1111_data_20190710.ar -vvvv --stopOnError

写在最后

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/5457.html

(0)
上一篇 2022-12-13 23:14
下一篇 2022-12-13 23:14

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信