欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MongoDB4.2单机转只有一个实例的副本集以支持事务

程序员文章站 2022-05-17 21:57:37
...

刚开始学习MongoDB不久,写事务写了好久,一直提示报错
This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string.
刚开始以为代码写错,一直去找原因,试了好几种连接方式均为果,
后来在论坛上偶然看到MongoDB单机方式运行不支持事务,需要把单机转为只有一个实例的副本集。
因为客户是小公司,数据量不大,内网运行,数据安全性比较有保障,所以项目部署的时候实施人员没用副本集。

因为疫情原因,实施都还没复工,用习惯别人搭给我的,突然得自己动手改,在网上搜索资料,讲的方法都是没注册成为服务的或者不带账号密码验证的,所以只能自己摸索。

我的思路是既然我用到配置文件,是否只需要在配置文件修改就能把单机变成副本集方式运行。

所以我找到了上一篇文章用到的mongo.cfg
文章:windows server安装MongoDB 并开启远程(账号密码验证)登录
地址:https://blog.csdn.net/zinechina/article/details/103908802

然后,在配置文件添加以下内容

replication:
  oplogSizeMB: 10240
  replSetName: shard1

sharding:
  clusterRole: shardsvr

完整的配置文件:


systemLog:
    destination: file
    path: X:\你要存放日志的路径\日志名称.log
storage:
    dbPath:  X:\你要存放数据的路径
net:
    bindIp: 0.0.0.0
    port: 端口号
replication:
  oplogSizeMB: 10240
  replSetName: shard1      //副本集名称

sharding:
  clusterRole: shardsvr

修改前需要先停止服务

net stop mongodb

修改后启动服务

net start mongodb

然后cmd下cd到mogodb server安装的目录

执行

mongo -port 端口号 -u 用户名 -p 密码

登录,这时候你如果使用show dbs会提示

MongoDB4.2单机转只有一个实例的副本集以支持事务
别紧张,现在需要配置一下副本集

use admin
cfg={"_id":"shard1","members":[{"id":0,"host":"127.0.0.1:配置文件端口号"}]}
rs.initiate(cfg)

MongoDB4.2单机转只有一个实例的副本集以支持事务
看到{“ok”:1}就是成功了,此时可以使用rs.conf()查看配置

相关标签: 技术交流