V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐工具
RoboMongo
推荐书目
50 Tips and Tricks for MongoDB Developers
Related Blogs
Snail in a Turtleneck
ChangHaoWei
V2EX  ›  MongoDB

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

  •  1
     
  •   ChangHaoWei · 2017-09-18 17:18:30 +08:00 · 3278 次点击
    这是一个创建于 2404 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    我想的操作是

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

    我的理由有

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

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

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

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

    也就是说可以直接指向 page2 做试修复,并让测试环境指向这个表( collection )。测试通过后,再停止产品的运行,并重新备份 page,然后再操作。。这样保证了至少有个可以还原的数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1147 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:08 · PVG 07:08 · LAX 16:08 · JFK 19:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.