启动MongoDB副本集

问题描述

因此,我正在制作一个需要使用MongoDB事务的应用程序。但是Mongoose文档告诉我,“ MongoDB当前仅支持副本集上的事务,不支持独立服务器。”因此,我认为我基本上需要将我的独立MongoDB实例切换到副本集(无论如何)。

MongoDB文档通过几个步骤为我提供了如何执行此操作的说明:

  1. 关闭独立MongoDB实例
  2. 使用--replSet选项重新启动实例
mongod --port 27017 --dbpath /var/lib/mongodb --replSet rs0 --bind_ip localhost
  1. 连接Mongo Shell
  2. 在Shell中调用rs.initiate()

我陷入了第2步。据我所知,当您想开始使用MongoDB时,必须首先使用sudo systemctl start mongod启动其守护进程,然后通过连接应用程序来使用它。但是这一步告诉我使用mongod命令而不是systemctl启动Mongod守护程序。我尝试了该命令,但出现以下错误

DBException in initAndListen,terminating","attr":{"error":"IllegalOperation: Attempted to create a lock file on a read-only directory: /var/lib/mongodb"}}

起初,我认为这是一种特权问题,所以我再次使用sudo来运行它,但后来它破坏了我的整个数据库,并阻止了我启动MongoDB是“正常方式”,给了我我不记得的错误

我刚刚重新安装了整个MongoDB,使其恢复正常工作。现在我和昨天在同一地方,无法转换为副本集,只是现在我的整个数据库都消失了。我该怎么做才能启用它?

解决方法

将mongod作为服务运行时,请使用/etc/monogd.conf来设置配置。请注意,该文件的位置或名称可能已在系统中的mongod.service文件中更改。

有关如何在文件中进行设置的信息,请参见replication options