我需要使用复制集是因为,我用mongoose写接口,需要用到事务,然后我发现竟然还要搞什么复制集,真是麻烦啊,因为我是前端,被领导逼着一周内做出来东西,还让我们自己写接口,只能选了这个坑爹的数据库,毕竟这个能快速上手,结果发现这玩意的生态不是很好啊,还得看英文文档,查个资料也是千辛万苦的,算了不吐槽了,总算是把复制集搞定了,记录下,以免忘记
- 公司电脑是win7,只能装4.0几的mongodb,先去下载软件:https://www.mongodb.com/try/download/community
- 选择zip,win7系统的原因我下的是4.0.28zip,如果是win10,win11就下最新版的
-
我建立了文件夹,D:\Program Files\MongoDB\Server\4.2,将zip解压到这个里面,然后新建红框中的三个文件夹
1.png -
在config、log、data中都新建三个文件夹
2.png - config/db1文件夹中新建一个文件mongod.cfg,内容如下
- config/db2以及config/db2文件夹中新建一个文件mongod.cfg,内容和db1的类似,把db1改成db2/db3,db2端口号设置为27018,db3端口号设置为27019
# mongod.conf
# Where and how to store data.
storage:
# dbPath为当前节点数据存储的路径
dbPath: D:\Program Files\MongoDB\Server\4.2\data\db1
# journal的enabled为是否开启日志
journal:
enabled: true
# 这部分的配置很重要,直接影响到内存的占用,cacheSizeGB为当前节点的
# monggo服务需要占用服务器内存的大小,cacheSizeGB大小的配置请查看
# 下面泪的部分
wiredTiger:
engineConfig:
cacheSizeGB: 5
# mongod日志文件的配置,mongodb服务出现问题可以查看此日志
systemLog:
destination: file
logAppend: true
path: D:\Program Files\MongoDB\Server\4.2\log\db1\mongod.log
# network interfaces,port为此mongo节点的开放的端口,
# bindIp为开放访问的Ip,0.0.0.0意思是任意Ip地址都可访问,
# 这就涉及到权限问题,你也可以只设置需要访问此mongo节点的ip
net:
port: 27017
bindIp: 0.0.0.0
# 安全配置的权限认证开启
# security:
# authorization: enabled
# 如果节点在不同的服务器上开启了认证,则需要使用keyfile去认证,并在下面路径的目录中创建rs0.key文件
# keyFile: D:\Program Files\MongoDB\Server\4.2\keyfile\rs0.key
# 复制集配置,replSetName所属
replication:
replSetName: rs0
-
log/db1,og/db2,og/db3文件夹中新建一个文件mongod.log,不需要写什么内容进去
3.png -
开始设置自启动的服务:开启三个cmd命令,分别输入以下命令
mongod --config "D:\Program Files\MongoDB\Server\4.2\config\db1\mongod.cfg" --serviceName "MongoDB1" --serviceDisplayName "MongoDB1" --install
mongod --config "D:\Program Files\MongoDB\Server\4.2\config\db2\mongod.cfg" --serviceName "MongoDB2" --serviceDisplayName "MongoDB2" --install
mongod --config "D:\Program Files\MongoDB\Server\4.2\config\db3\mongod.cfg" --serviceName "MongoDB3" --serviceDisplayName "MongoDB3" --install
-
在键盘上按 “WIN+R”,输入“services.msc”指令确定,检查服务是否启动了,没有启动自己手动来全部启动
4.png -
使用下面命令进入一个mongo的服务:
mongo -p 27017
- 执行下面命令将mongo的三个服务节点挂载到rs0的复制集下:运行后有个结果是1就是成功,懒的截图了
config = {
"_id" : "rs0",
"members": [
{ "_id" : 0, "host" : "127.0.0.1:27017" },
{ "_id" : 1, "host" : "127.0.0.1:27018" },
{ "_id" : 2, "host" : "127.0.0.1:27019" }
]
}
rs.initiate(config)
-
然后使用图形化界面工具连接我们三个数据库
5.png -
接下来我们要在master数据库是上面进行操作,打开一个shell,执行以下语句
db.users.insert({name: 'andy', age: 18})
6.png
-
然后查看这个数据库是否同步了
7.png - 复制集建立成功!接下来去用mongoose写事务
网友评论