求问我是不是犯了数据库某个基础错误。

2017-09-18 17:18:30 +08:00
 ChangHaoWei

我假想的应用场景是这样的。

假设正在运行的产品修改的是 mongoDB 的 pro 数据库下的 page 表( collection )。

现在数据出现某种错误,需要撤销。

我想的操作是

  1. 停止产品的运行
  2. dumplicate page 表并命名为 page2
  3. 在 page2 上修复数据并测试
  4. page 更名为 page_old
  5. page2 更名为 page
  6. 启动产品的运行

我的理由有

  1. 数据库不大,在复制的过程中消耗的时间是可接受的
  2. 产品代码不用再修改,保证了不会出现错误。
  3. 数据的修复过程可能会出现问题,这个时候至少有个备份。

那么问题来了,这样的操作是不是犯了某个新手错误?先🙏了。

3387 次点击
所在节点    MongoDB
5 条回复
ChangHaoWei
2017-09-18 17:30:26 +08:00
顶一下,这个问题很急。。
ChangHaoWei
2017-09-18 17:42:51 +08:00
环境是 单实例的 mongodb,不支持回滚操作的。。
l00t
2017-09-18 17:45:49 +08:00
我有一个问题啊,你说的在 page2 修改后进行测试,这个测试怎样进行呢?
nullcc
2017-09-18 17:50:11 +08:00
1.停止产品的运行,光这点可能很多场景就无法接受了。可以尝试先备份一个库出来,在线下做测试,比如用这个备份库直接在内网进行测试,没毛病以后再去操作线上的数据。
ChangHaoWei
2017-09-18 17:51:27 +08:00
@l00t 细节上的话和我主题没有太大关系,不过可以解释一下。。

正常的项目 数据库的指向是写在配置或单独一个文件的,且测试环境和产品运行环境的配置信息是分开的。

也就是说可以直接指向 page2 做试修复,并让测试环境指向这个表( collection )。测试通过后,再停止产品的运行,并重新备份 page,然后再操作。。这样保证了至少有个可以还原的数据。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/391701

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX