做木工网站,信息发布推广平台,跨境电商登录入口,mvc5网站开发之美一、MongoDB 简介
MongoDB 是一种 NoSQL 数据库#xff0c;以文档模型存储数据#xff0c;具备高性能、弹性扩展性和分布式架构等特点#xff0c;非常适用于高并发和大数据量的场景。本文将从 Linux 和 Docker 环境开始讲解#xff0c;帮助读者在不同环境下顺利部署 Mongo…一、MongoDB 简介
MongoDB 是一种 NoSQL 数据库以文档模型存储数据具备高性能、弹性扩展性和分布式架构等特点非常适用于高并发和大数据量的场景。本文将从 Linux 和 Docker 环境开始讲解帮助读者在不同环境下顺利部署 MongoDB。
二、在 Linux (CentOS) 上部署 MongoDB
2.1 安装 MongoDB
在 Linux 上安装 MongoDB 主要通过包管理工具 YUM 进行。以下步骤适用于 CentOS 7/8 配置 MongoDB YUM 源 cat EOF | sudo tee /etc/yum.repos.d/mongodb-org-6.0.repo
[mongodb-org-6.0]
nameMongoDB Repository
baseurlhttps://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/6.0/x86_64/
gpgcheck1
enabled1
gpgkeyhttps://www.mongodb.org/static/pgp/server-6.0.asc
EOF安装 MongoDB sudo yum install -y mongodb-org启动并设置开机自启动 sudo systemctl start mongod
sudo systemctl enable mongod验证安装 启动后可以使用以下命令检查 MongoDB 服务状态 sudo systemctl status mongod在终端输入 mongo 命令进入 MongoDB shell验证是否可以成功连接。
2.2 配置 MongoDB
在 /etc/mongod.conf 中可以进行基本配置 数据存储路径 storage:dbPath: /var/lib/mongo网络配置 修改绑定 IP 地址允许外部访问 net:bindIp: 0.0.0.0port: 27017完成配置后重启 MongoDB
sudo systemctl restart mongod三、在 Docker 中部署 MongoDB
使用 Docker 部署 MongoDB 可以简化安装流程并能方便地进行环境隔离。
3.1 拉取 MongoDB 镜像
docker pull mongo:6.03.2 启动 MongoDB 容器
通过以下命令启动 MongoDB 容器挂载数据目录并设置容器名称和网络端口
docker run -d --name mongodb \-p 27017:27017 \-v /mydata/mongo:/data/db \-e MONGO_INITDB_ROOT_USERNAMEadmin \-e MONGO_INITDB_ROOT_PASSWORDadmin123 \mongo:6.03.3 配置挂载 HTML 数据实时刷新
为了在 Docker 中实时挂载 HTML 等静态文件可以通过 Docker 的挂载机制来完成 创建挂载目录 mkdir -p /mydata/html 运行 MongoDB 并挂载 HTML 文件 docker run -d --name mongodb \-p 27017:27017 \-v /mydata/html:/usr/share/nginx/html \mongo:6.0这样在 /mydata/html 中的内容会映射到 MongoDB 容器中可以在更新数据时实时反映。
四、集群环境下的 MongoDB 部署
MongoDB 集群部署适用于高可用场景。主要部署方式包括副本集Replica Set和分片Sharding。
4.1 副本集Replica Set配置
副本集是 MongoDB 内置的高可用方案通过多个节点实现数据复制避免单点故障。每个副本集由一个主节点Primary和一个或多个从节点Secondary组成。
配置步骤
假设需要搭建一个三节点副本集其中 mongodb0 为主节点mongodb1 和 mongodb2 为从节点。
1. 安装 MongoDB 并配置 mongod.conf 文件
在每台服务器上进行 MongoDB 的安装。完成安装后在每个节点的 mongod.conf 文件中设置副本集名称。
在 /etc/mongod.conf 中添加以下内容
# 副本集配置
replication:replSetName: rs0 # 副本集名称三台服务器的名称保持一致2. 启动 MongoDB 实例
在每台服务器上启动 MongoDB 服务
sudo systemctl start mongod3. 初始化副本集
进入任意一台 MongoDB 节点如 mongodb0的 MongoDB Shell并初始化副本集。
mongo --host mongodb0.example.net --port 27017执行以下代码以初始化副本集
rs.initiate({_id: rs0, // 副本集名称members: [{ _id: 0, host: mongodb0.example.net:27017 }, // 主节点{ _id: 1, host: mongodb1.example.net:27017 }, // 从节点1{ _id: 2, host: mongodb2.example.net:27017 } // 从节点2]
})4. 验证副本集配置
执行以下命令查看副本集状态
rs.status()在输出信息中可以看到副本集的各个节点状态包括主节点和从节点的同步情况。至此三节点副本集已完成配置实现了数据冗余和高可用性。 4.2 分片集群Sharding Cluster配置
分片集群主要用于解决 MongoDB 在大数据量或高并发环境下的性能瓶颈。分片集群通过将数据拆分成块并分布在不同的分片节点上从而实现数据和负载的分布式管理。
分片集群通常包含三种角色
路由Router节点客户端连接入口用于路由请求。配置服务器Config Server存储分片信息。分片服务器Shard Server存储数据并执行查询。
配置步骤
假设我们有三台服务器用于路由节点和配置服务器另外有三台用于存储分片。
1. 配置和启动配置服务器Config Server
在配置服务器上进行以下配置。在 /etc/mongod.conf 文件中指定 configsvr 模式和配置数据存储路径。
# 配置服务器配置
sharding:clusterRole: configsvr # 声明该节点为配置服务器storage:dbPath: /var/lib/mongo/config # 配置数据存储路径启动配置服务器
sudo systemctl start mongod2. 配置和启动分片服务器Shard Server
在分片服务器上进行以下配置。在 /etc/mongod.conf 文件中指定 shardsvr 模式和分片数据存储路径。
# 分片服务器配置
sharding:clusterRole: shardsvr # 声明该节点为分片服务器storage:dbPath: /var/lib/mongo/shard # 分片数据存储路径启动分片服务器
sudo systemctl start mongod3. 配置和启动路由节点Router Node
路由节点通过 mongos 服务充当客户端的路由器。以下配置需要连接到配置服务器。
mongos --configdb rs0/mongodb0.example.net:27019,mongodb1.example.net:27019,mongodb2.example.net:27019 --bind_ip_all --port 27017此命令会启动一个 mongos 实例连接到上述三个配置服务器使客户端可以通过 mongos 实例访问分片集群。
4. 启用分片和创建分片集合
使用 mongos 连接 MongoDB Shell并启用数据库和集合的分片
sh.enableSharding(myDatabase) // 启用数据库的分片功能
sh.shardCollection(myDatabase.myCollection, { shardKey: 1 }) // 定义集合的分片键分片键 shardKey 选择会影响分片分布和性能应根据查询特点选择合适的字段作为分片键。
5. 验证分片集群配置
可以通过以下命令查看分片状态
sh.status()输出的分片信息将显示所有分片、分布在不同节点的数据块、路由节点和配置服务器信息验证分片集群配置是否正确。