yum安装MongoDB实例配置为副本集问题

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 配置为副本集

  1. 停止 MongoDB 服务
    首先,您需要停止当前的 MongoDB 服务。可以使用以下命令:

    bash

    Copy

    sudo systemctl stop mongod
    
  2. 编辑配置文件
    找到您的 MongoDB 配置文件,通常位于 /etc/mongod.conf。使用文本编辑器打开该文件:

    bash

    Copy

    sudo vi /etc/mongod.conf
    

    在配置文件中,您需要添加或修改以下行以启用副本集:

    yaml

    Copy

    replication:
      replSetName: "rs0"
    

    确保您在文件中添加了 replication 部分,且缩进正确。

  3. 重启 MongoDB 服务
    保存并关闭配置文件后,重新启动 MongoDB 服务:

    bash

    Copy

    sudo systemctl start mongod
    
  4. 初始化副本集
    使用 mongo shell 连接到 MongoDB 实例,并初始化副本集:

    bash

    Copy

    mongo
    

    然后在 mongo shell 中运行:

    javascript

    Copy

    rs.initiate()
    

    这将初始化您的副本集。

  5. 检查副本集状态
    您可以使用以下命令检查副本集的状态:

    javascript

    Copy

    rs.status()
### 安装配置 MongoDB 副本 #### 准备工作 为了在银河麒麟 V10 上成功安装配置 MongoDB 副本,需要先确保系统能够访问互联网,并且已经正确设置了 YUM 源。如果默认的 YUM 源不包含 MongoDB安装包,则可以通过其他途径获取 RPM 包来完成安装。 #### 查找并下载 MongoDB 安装包 使用 `yum` 工具查找可用的 MongoDB 版本: ```bash sudo yum search mongo ``` 若未发现合适的版本,可以从第三方仓库如 CentOS PKGS 下载适合的操作系统的 RPM 文件[^2]。 #### 安装 MongoDB 一旦找到了适用的安装文件,执行如下命令来进行安装: ```bash sudo rpm -ivh mongodb-org-<version>.rpm ``` 替换 `<version>` 为实际下载到的具体版本号。 #### 配置 MongoDB 复制 编辑 `/etc/mongod.conf` 或者创建一个新的配置文件用于定义复制成员的信息。以下是基本设置示例: ```yaml replication: replSetName: "rs0" net: bindIp: 0.0.0.0 ``` 保存更改后重启服务使新配置生效: ```bash sudo systemctl restart mongod.service ``` 初始化复制,在 shell 中输入以下指令连接至本地实例并发起复制初始化请求: ```javascript mongo --eval 'rs.initiate()' ``` 向群添加更多节点时,重复上述过程并在每台机器上运行下面这条 JavaScript 来加入现有合: ```javascript mongo --eval 'rs.add("<hostname>:27017")' ``` 其中 `<hostname>` 是要添加的新成员地址。 #### 测试副本状态 确认所有节点都已正常加入并通过以下方式查询当前副本的状态: ```javascript mongo --eval 'rs.status()' ``` 这会返回关于整个副本中各个成员健康状况以及角色分配情况的数据结构。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值