【问题标题】:MongoDB replication as a service on windowsMongoDB 复制作为 Windows 上的服务
【发布时间】:2021-05-11 23:01:16
【问题描述】:

我正在尝试在 Windows 上将副本集配置为服务,这意味着即使 PC 会重新启动,mongod 也会自动再次运行。 问题是我这样运行 mongod:

mongod --dbpath "C:\Program Files\MongoDB\Server\4.2\data" --logpath "C:\Program Files\MongoDB\Server\4.2\log\mongod.log" --port 27017 --storageEngine=wiredTiger --journal --replSet test_replica

一旦我关闭运行此命令的 CMD,服务就会被终止。那我该如何正确运行呢?

此外,当前服务正在导航到默认的 cfg 文件,但我看到那里的复制标有 # (因此服务作为独立运行)。当我尝试将 replSet: test_replica 添加到复制中时,它将不再启动。

【问题讨论】:

标签: mongodb


【解决方案1】:

您应该将所有参数放入configuration file。然后你可以像这样创建服务:

mongod.exe --config c:\MongoDB\config\mongod.cfg --install

对于副本集,您通常会创建多个服务,而不仅仅是一个。可以运行一个只有一个成员的副本集,但这毫无用处。当然,当您创建多个服务时,每个服务都需要自己的配置文件(以及自己的 dbPath、端口等)

下次您的 PC 启动时,mongo 服务也应该启动。或者使用命令net start <mongo service name>手动启动它

【讨论】:

  • 如何在 windows 上配置 cfg 文件的复制部分?只需添加 replSet: replication_name 然后我就可以像你刚才提到的那样启动它?或者我还需要写什么?喜欢成员或我以后可以添加的东西?
  • 只是replSet名称,服务名称也必须不同。
  • 如果我在不同的机器上运行服务,名字重要吗?
  • 不,当然你可以在任何地方使用相同的配置文件。
【解决方案2】:
  1. 您应该将 mongodb 安装为 windows 服务。阅读官方文档中的guide
  2. 从命令行设置--replSet 或在配置文件中设置replication:replSetName 是不够的。阅读this guide,简而言之:在副本集模式下启动mongodb进程后,您应该在mongo shell中运行rs.initiate()

【讨论】:

  • 我都做了,我知道如何让它启动,因为副本集问题是现在配置文件保持不变。即使我使用 --replset 启动它,甚至当副本集已经在运行并且其中有 3 个实例时,复制也用 # 标记。我遵循了这个stackoverflow.com/questions/2438055/…,以便将mongod作为repl集和服务启动,但配置文件再次保持默认。
  • @pythonmaniac 配置文件和命令行参数是运行 mongodb 的两种不同方式。如果你想手动提供所有参数——使用命令行参数,如果你想使用配置文件——你应该做类似mongod --config /etc/mongod.conf的事情。 配置文件不会被自动修改。 如果你想通过配置文件来做,请取消注释并在配置文件中设置复制部分并使用config参数运行mongod进程。但我看到你已经通过命令行完成了所有工作。所以你根本不需要配置文件。
  • 感谢帮助,不知道一旦我通过cmd运行它就不会对cfg文件生效。如果我确实想修改 cfg 文件,我在复制部分需要做的最少的事情是什么?只是 replSet:replication_name?或者我还需要在这里提及成员?如果我确实在 cfg 文件上修改它并且还通过 cmd 运行(就像我所做的那样)它仍然可以工作吗? (就像修改了cfg文件但我不使用它但它可以工作并且不会导致错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 2011-01-27
  • 2018-05-15
  • 1970-01-01
相关资源
最近更新 更多