【问题标题】:How to release Mongo DB in production environment?如何在生产环境中发布 Mongo DB?
【发布时间】:2016-01-20 12:43:44
【问题描述】:

我最近在业余时间一直在玩 Mongo DB(为了工作,我通常使用关系数据库,或者最近使用 RDF 三元存储),我有一个问题一直困扰着我。当您开发了一个使用 Mongo DB 的应用程序,现在需要将其部署到生产环境中时,建议发布数据库的流程是什么?

明确地说,我不是在谈论简单地在服务器上部署现有数据库,我更感兴趣的是如何最初创建一个可用于应用程序的状态的数据库。

例如,对于 SQL 数据库,您可能有一组脚本来创建数据库、创建所有必需的表、使用任何必需的数据初始化表、设置访问权限、视图等。

令我困扰的是,如果数据库、表等在您查询它们时不存在,那么使用 Mongo 会自动创建它们。但是我知道可以在 JS 中编写 Mongo 脚本来执行 Mongo 命令序列。

简而言之,我想问题是您是否需要费心编写这些设置和初始化脚本,或者仅仅是安装 Mongo 并将您的应用程序指向它的情况?

【问题讨论】:

    标签: mongodb database


    【解决方案1】:

    与 SQL 数据库相比,为生产设置 mongo 所需的工作可能要少得多。在许多情况下,除了将您的应用程序指向一个空的 mongo 实例外,无需做任何事情。

    您有时会希望在某些集合中植入数据。有很多方法可以做到这一点。您可以使用 mongodump 和 mongorestore(它们可以处理单个集合或整个数据库)。您可以通过您的 mongo 驱动程序或通过更高级别的包装器(如 mongoose)加载 json 文件。

    您可能还想在某些集合上创建索引。像 mongoose 这样的更高级别的包装器会自动执行此操作,但您可能需要编写一个脚本,该脚本调用 ensureIndex 并使用您从命令行运行的集合上所需的索引。数据库中没有文档也没关系。

    【讨论】:

    • 好的,所以基本上不需要创建数据库/集合,除非它们必须使用一些初始数据作为种子或应用一些特定的配置。我猜这种播种和配置将通过脚本完成,或者通常通过从现有数据库中克隆您需要的内容来完成?
    • 抱歉,忽略最后一个问题,我重新阅读了您的答案,它涵盖了它。
    【解决方案2】:

    我推荐两种部署 MangoDB 的方法。最好的办法是使用单个 tar 命令复制 db 数据目录。然后获取 .tar 文件并将其精确到您的生产环境中。确保数据库版本兼容。

    【讨论】:

    • 感谢您的回答,它在一定程度上很有用,但请参阅我的问题的第二段。我对在生产环境中创建和初始化数据库更感兴趣,而不是导入 pre-prod 或 dev 数据库的转储
    • 您是否尝试过数据库转储并导入您的产品数据库?它应该有你所有的应用设置。
    • 目前这只是我的一个宠物项目,所以我只有一个数据库。我只是想适应 Mongo 范式并将其直接记在脑海中。这个问题更多地与可靠地创建一个没有特定于该应用程序实例(或任何其他)的数据的数据库相关,并且可以由应用程序使用。如果您已经有一个处于您想要的状态的实例,那么只有导出/导入才会这样做。虽然,创建类似的东西并安装克隆是一个很好的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    相关资源
    最近更新 更多