MongoDB备份为文本而不是二进制,用于源代码控制

时间:2013-12-28 13:01:47

标签: git mongodb version-control automation

是否可以这样做?

我问的原因是,将备份作为预提交挂钩似乎很有用,并且在提交的代码中以某种方式包含基于文本的备份,这样源控件(git)中的每个修订都具有与之相关的必要备份。

我意识到有可能让MongoDB将其所有集合作为JSON吐出,并以这种方式支持它们,但这样就不会包含数据库和集合元数据。

主要关注点是分支对服务器端代码进行更改,然后还原该分支时,我们很容易忘记进行必要的备份以实现有效的恢复(代码将不再匹配架构)。有人可能会声称这是程序员错误,但我认为应该有一些自动化来确保我们拥有适用于每个版本代码的数据库版本。这是项目早期阶段模式化的问题......动态模式是Mongo的主要祝福和诅咒。

1 个答案:

答案 0 :(得分:2)

MongoDB将其数据存储在BSON (Binary JSON) format中,因此,如果您要转换为纯文本格式,则应了解潜在的data type fidelity问题。如果您想要对MongoDB数据库进行一致的备份,推荐的格式将是mongodump的二进制输出。不过,我不推荐使用二进制数据库备份来扩充你的git repo。

通常,具有架构灵活性的数据库的一个解放方面是而不是在开发过程中不必担心架构迁移。这确实需要考虑您的应用程序如何处理不同的模式版本,因此采用更加可控的方法也很好。

由于您的主要目标是使数据库架构与代码更改保持同步,因此更好的方法是调查架构迁移工具。这些通常允许您使用已定义的应用程序顺序创建升级/降级代码段到数据库,并确保对应用程序代码未处理的数据库架构的任何更改都在迁移脚本中。

一些示例工具: