# MongoDB 事务前的准备工作 | Code The World
导言前段时间在一个项目中由于存在竞争导致的对原子性一致性的要求非常高，且使用到了MongoDB。我们都知道解决原子性问题需要使用到数据库的事物功能，但MongoDB的事物处理机制稍有特殊，在此过程中踩了不少坑，故写此文予以记录。 正文一、启用安全验证与创建密钥MongoDB的事物处理建立在副本集上，而副本集需要安全验证与密钥进行安全验证，故需要先对MongoDB进行安全配置并关联密钥： 首先创建管
Author: Bigsk
Keywords: 技术

## Code The World

Codice est quasi poem a.

# MongoDB 事务前的准备工作

- 2025-03-31
- 作者 Bigsk
- 676 字

本文最后编辑于 前，其中的内容可能需要更新。

## 导言

前段时间在一个项目中由于存在竞争导致的对原子性一致性的要求非常高，且使用到了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()

大功告成。

##### 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可

Codice est quasi poem a.

文章 26 分类 3 标签 3

#### 分类目录

- 技术 17
- 摄影 7
- 资源 2

#### 标签聚合

技术 摄影 资源

#### 最新文章

MongoDB 事务前的准备工作 利用Linux小主机和SDR搭建APRS iGate Python证书链出问题导致的模块全部报错 Mac安装软件时提示已损坏的解决办法 摄影作品：Field