Caused by: com.mongodb.MongoQueryException: Command failed with error 20 (IllegalOperation): 'Transaction numbers are only allowed on a replica set member or mongos' on server 47.1.166.2:27017. The full response is {"ok": 0.0, "errmsg": "Transaction numbers are only allowed on a replica set member or mongos", "code": 20, "codeName": "IllegalOperation"}
遇到 MongoQueryException: Command failed with error 20 (IllegalOperation) 错误,表明您正在尝试在一个非副本集(standalone)MongoDB 实例上执行事务,而事务只能在副本集或 MongoDB Sharded 集群(mongos)上使用。
由于您是通过 yum 安装 MongoDB,下面是将您的 MongoDB 实例配置为副本集的步骤:
将 MongoDB 配置为副本集
-
停止 MongoDB 服务:
首先,您需要停止当前的 MongoDB 服务。可以使用以下命令:bash
Copy
sudo systemctl stop mongod -
编辑配置文件:
找到您的 MongoDB 配置文件,通常位于/etc/mongod.conf。使用文本编辑器打开该文件:bash
Copy
sudo vi /etc/mongod.conf在配置文件中,您需要添加或修改以下行以启用副本集:
yaml
Copy
replication:replSetName: "rs0"确保您在文件中添加了
replication部分,且缩进正确。 -
重启 MongoDB 服务:
保存并关闭配置文件后,重新启动 MongoDB 服务:bash
Copy
sudo systemctl start mongod -
初始化副本集:
使用mongoshell 连接到 MongoDB 实例,并初始化副本集:bash
Copy
mongo然后在
mongoshell 中运行:javascript
Copy
rs.initiate()这将初始化您的副本集。
-
检查副本集状态:
您可以使用以下命令检查副本集的状态:javascript
Copy
rs.status()
