MongoDB 事务前的准备工作


导言

前段时间在一个项目中由于存在竞争导致的对原子性一致性的要求非常高,且使用到了MongoDB。
我们都知道解决原子性问题需要使用到数据库的事物功能,但MongoDB的事物处理机制稍有特殊,
在此过程中踩了不少坑,故写此文予以记录。

正文

一、启用安全验证与创建密钥

MongoDB的事物处理建立在副本集上,而副本集需要安全验证与密钥进行安全验证,
故需要先对MongoDB进行安全配置并关联密钥:

首先创建管理员用户,具体步骤网上很多,自行查阅。

随后创建密钥:

1
2
openssl rand -base64 756 > /path/to/mongodb-keyfile
chmod 600 /path/to/mongodb-keyfile # Restrict permissions

在MongoDB的配置文件mongod.conf中加入以下内容:

1
2
3
security:
authorization: enabled
keyFile: /path/to/mongodb-keyfile # Path to your key file

重启MongoDB:

1
systemctl restart mongod

二、启用副本集

MongoDB的事物处理建立在副本集机制上,故需要启用副本集来支持事物处理:

在MongoDB配置文件mongod.conf中加入:

1
2
replication:
replSetName: "rs0"

进入MongoShell,初始化副本集:

1
rs.initiate()

大功告成。