【问题标题】:MongoDB How to find out data directory using Java driverMongoDB 如何使用 Java 驱动程序查找数据目录
【发布时间】:2012-02-21 20:24:44
【问题描述】:

我正在使用一个只有一个节点的 MongoDB 实例。我想编写一个 web 服务,对数据文件进行 fsync 并将它们压缩到备份文件夹中。

理想情况下,我会以编程方式获取数据目录的位置(而不是读取配置文件),这样我就可以轻松地将其从开发机器移植到安装路径不同的生产机器上。有没有办法使用 Java 驱动程序来做到这一点?

【问题讨论】:

  • 您只是在尝试以这种方式备份 MongoDB 时遇到麻烦。您很可能会损坏文件。这就是 mongoexport 工具存在的原因。
  • 即使我停止数据库?我觉得只复制文件可能会更快?
  • 那么,使用mongodump。复制文件可能更快,也可能更慢,因为它可能包括复制文件中的大量可用空间。但是从文件备份恢复只能让您选择稍后重新创建您所拥有的(配置和所有)。备份到数据库的可移植表示可以实现以后合并数据或仅备份数据库的某些部分等可能性。

标签: mongodb-java


【解决方案1】:

尝试使用使用管理员 db.runCommand({getCmdLineOpts: 1}) 如here 所述,然后使用返回的数据。

示例返回数据为

{
        "argv" : [
                "mongod",
                "--port",
                "6669",
                "--dbpath=c:\\data\\mongo2",
                "--rest"
        ],
        "parsed" : {
                "dbpath" : "c:\\data\\mongo2",
                "port" : 6669,
                "rest" : true
        },
        "ok" : 1
}

【讨论】:

    【解决方案2】:

    您可以使用mongoexport 获取数据;从生产机器运行它并指定开发机器的主机/端口/集合。可以使用mongoimport将数据导入生产机器。

    【讨论】:

    • 开发和宿主机不在同一个网络。我不需要将数据从一个传输到另一个。触发备份的是我的应用程序。我宁愿 fsync 和 compress (不确定 mongoexport + compress 会多快)。我看了很多,似乎没有办法以编程方式获取数据目录的位置。我想我必须通过配置来做到这一点
    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 2018-06-27
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多