2012-02-27 64 views
3

我们在开发服务器上设置了5个节点复制。我们正在寻找一种方法,允许开发人员在mongo数据库中备份一部分数据,并将其恢复到本地开发环境。MongoDB部分备份

我们研究过克隆的b和mongodump工具,但都只允许完整数据库的备份/转储。由于数据库的可能大小,我们需要一个允许我们限制正在备份或恢复的数据的选项。

是否知道某个实用程序或实现此目的的方法?

+1

你几乎肯定会写自己的工具。如果不知道数据是如何相关的,那么很难获取一部分数据。如果你确信你可以简单地生活在最新的数据块中,你可以编写一个脚本遍历所有集合,并检索/存储最后X个记录。 – 2012-02-27 10:02:01

回答

1

我只是在这个问题再次绊倒,并决定加入我们的备份策略的描述中,我们选择为:

当前备份策略为我们蒙戈DB这台服务器由2个设置;通过延迟被动次节点备份和使用mongodump进行每日备份(需要日志记录和oplog进场)。

除了我们正常的生产节点之外,我们还设置了另一个优先级为0的辅助节点(可以在自己的服务器上,也可以在另一台mongo服务器上使用单独的端口),隐藏为真,延迟7200秒(2小时)。这个奴隶在那里是为了“黄油手指”,当有人不小心丢弃了一个数据库或清除了一个集合时,我们有2个小时才将这些变化复制到这个被动的次要的。被动辅助不能用于阅读或书写。它的作用仅仅是备份节点。我们还使用此节点进行夜间备份,以防止任何其他节点出现不必要的开销。

夜间备份设置为每天晚上23:00通过cron选项卡运行。该命令只需执行/opt/auto-mongo-backup中的脚本设置。该脚本可在https://github.com/jaconel/automongobackup找到(最初发现它在https://github.com/micahwedemeyer/automongobackup)。该脚本允许每晚一次的cron覆盖每周备份和每月备份。备份保存在/var/backups/mongodb

希望这有助于一个人。

+0

我对原始问题感兴趣,但你的答案根本不是关于它的。你是否最终编写了自己的工具来提取部分数据? – maxdec 2014-03-26 10:29:51

+0

您可以使用mongoexport仅导出特定的集合,甚至可以使用查询限制该集合的结果。要恢复该数据,只需使用mongoimport将其导回到集合中即可。请记住使用upsert确保不要插入重复项。 – j4kes 2014-03-27 11:55:15