当前位置:首页 > 工具 > 正文内容

在 CentOS 7 上部署 MongoDB 副本集

访客 工具 2026年5月31日 1

1. 安装并配置 MongoDB 副本集

首先,为 MongoDB 添加 YUM 仓库配置:

vim /etc/yum.repos.d/mongo.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-4.4.asc

安装 MongoDB:

yum install -y mongodb-org

创建数据和日志目录,并设置权限:

mkdir -p /data/mongodb
mkdir -p /var/log/mongodb
touch /var/log/mongodb/mongod.log
openssl rand -base64 512 > /data/mongodb/mongo.key # 确保所有节点使用相同的文件内容
chmod 400 /data/mongodb/mongo.key

chown -R mongod:mongod /data/mongodb
chown -R mongod:mongod /var/log/mongodb

配置 MongoDB:

vim /etc/mongod.conf
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
storage:
  dbPath: /data/mongodb
  journal:
    enabled: true
processManagement:
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27017
  bindIp: 0.0.0.0
security:
  authorization: enabled
  keyFile: /data/mongodb/mongo.key
replication:
  replSetName: rs0

启动并启用 MongoDB 服务:

systemctl start mongod
systemctl status mongod
systemctl enable mongod

初始化副本集。请将 IP 地址替换为您实际的集群节点地址:

mongo
rs.initiate( {
   _id : "rs0",
   members: [
      { _id: 0, host: "192.168.1.101:27017" },
      { _id: 1, host: "192.168.1.102:27017" },
      { _id: 2, host: "192.168.1.103:27017" }
   ]
})

rs.status()  # 查看节点状态和角色

2. 创建管理员用户

连接到 MongoDB 并创建管理员用户:

mongo
use admin
db.createUser({ user:'admin',pwd:'StrongPassword123',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});
db.auth('admin','StrongPassword123');
db.grantRolesToUser( "admin" , [ { role: "dbOwner", db: "admin" },{ "role": "clusterAdmin", "db": "admin" },{ "role": "userAdminAnyDatabase", "db": "admin" },{ "role": "dbAdminAnyDatabase", "db": "admin" }]);

# 创建 root 用户
db.createUser({user:"root",pwd:"AnotherSecurePwd456",roles:[{role:"root",db:"admin"}]});
db.grantRolesToUser ( "root", [ { role: "__system", db: "admin" } ] );

3. 集群验证

在主节点上进行操作,使用 root 用户登录:

mongo
use admin
db.auth('root','AnotherSecurePwd456');
rs.config();       # 查看副本集配置
rs.printSecondaryReplicationInfo(); # 检查副本延迟
db.hello();        # 获取集群信息

进行读写测试:

# 在主节点执行写入操作
db.mycollection.insertOne({ name: "testDocument", value: 100 });

# 在从节点执行读取操作
mongo
use admin
db.auth('root','AnotherSecurePwd456');
rs.secondaryOk(); # 允许从节点读取
db.mycollection.findOne({ name: "testDocument" });
# 预期输出: { "_id" : ObjectId(...), "name" : "testDocument", "value" : 100 }

4. 客户端连接

4.1 下载并安装 MongoDB Compass

访问 MongoDB Compass 下载页面,根据您的操作系统下载并安装客户端。

4.2 配置连接字符串

打开 MongoDB Compass,点击 "New Connection"。在连接字符串输入框中,输入副本集的连接 URI。格式如下:

"mongodb://user:password@node1_ip:port,node2_ip:port,node3_ip:port/?replicaSet=replicaSetName"

示例:

"mongodb://root:AnotherSecurePwd456@192.168.1.101:27017,192.168.1.102:27017,192.168.1.103:27017/?replicaSet=rs0"

4.3 添加用户认证

在 MongoDB Compass 的连接设置中,提供用户名和密码进行认证。

5. 数据备份与恢复

使用 mongodump 进行备份:

mongodump --uri='mongodb://root:AnotherSecurePwd456@192.168.1.101:27017/?replicaSet=rs0&authSource=admin' --db=your_database_name # 默认在当前目录下创建 dump 文件夹

使用 mongorestore 进行恢复:

mongorestore --uri="mongodb://root:AnotherSecurePwd456@192.168.1.102:27017/?replicaSet=rs0&authSource=admin" /path/to/your/dump/directory

相关文章

Trojan服务器搭建与配置

一、整体架构(先对齐认知)Clash Meta (PC / iOS / Android)        ↓ TLS   Trojan Server (443)        ↓     InternetTrojan 的核心是: TLS + HTTPS 流量伪装 看起来像正常网站 非常适合...

Tailscale 的详细用法

Tailscale 是一种基于 WireGuard 协议 的 零配置 VPN(虚拟私有网络)服务,让设备之间能够 安全、加密地直接连接,就像它们在同一个本地网络一样。它的核心特点是 简单、安全、跨平台。Tailscale 非常适合 没有公网 IP、两台电脑不在同一局域网 的场景。 简单来说,Tailscale 是什么?Tailscale 是一款让你的各种设备(电脑、服务器、手机...

Clash Tun 模式 导致 爱快(iKuai SD-Wan)内网域名无法访问

一、Clash  DNS 配置dns:  enable: true  listen: 0.0.0.0:53  ipv6: true  enhanced-mode: redir-host  nameserver:    - 223.5.5.5    - 223.6.6.6iKuai 内网域名 ...

深入解析Node.js运行环境与异步I/O架构

深入解析Node.js运行环境与异步I/O架构

核心定义与价值Node.js本质上是一个JavaScript运行环境,而非编程语言或应用框架。它赋予了JavaScript脱离浏览器在服务端、命令行工具及网络应用中执行的能力。其核心意义在于:用单一语言打通前后端开发壁垒。基于事件驱动与非阻塞I/O的架构特性,Node.js在处理API网关、实时通信及微服务等I/O密集型场景时表现卓越,已成为现代后端工程的主流选择。浏览器沙箱限制1995年Java...

ADO.NET SQL参数化查询的最佳实践

在 ADO.NET 中执行 SQL 查询时,参数化查询是一种关键的安全措施和性能优化手段。它通过将 SQL 命令和用户提供的数据分开处理,有效防止了 SQL 注入攻击,并有助于数据库缓存执行计划。下面总结了几种常用的参数化查询方式。 1. 使用 SqlParameter 对象(推荐) 这是最推荐的参数化查询方式。通过显式创建 SqlParameter 对象,您可以精确控制参数的类...

基于ELK的日志集中化分析系统搭建

构建统一日志管理平台的必要性 在分布式架构中,各服务节点独立运行,日志分散存储于不同主机。传统通过命令行工具如grep、awk逐个检索日志的方式,在数据量庞大时效率极低,难以实现快速定位问题。为提升运维效率,需建立集中式日志处理体系,具备日志采集、传输、存储、分析与告警能力。 ELK技术栈核心组件解析 Elasticsearch:分布式搜索引擎,支持全文检索、实时数据分析和高可用集群部署,...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。