一、MongoDB 单机环境部署
1. 环境准备
- 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7),也可在 Windows 上安装 MongoDB。
- MongoDB 版本:MongoDB 5.0(推荐使用最新稳定版本)。
- 硬件要求:至少 2 GB 内存和 20 GB 的硬盘空间。
2. 安装 MongoDB
2.1 在 Ubuntu 上安装 MongoDB
-
导入 MongoDB 公共 GPG 密钥:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
-
创建 MongoDB 源列表文件:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
-
更新本地包数据库并安装 MongoDB:
sudo apt update sudo apt install -y mongodb-org
2.2 在 CentOS 上安装 MongoDB
-
创建 MongoDB 的 YUM 源文件:
echo "[mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo
-
安装 MongoDB:
sudo yum install -y mongodb-org
2.3 启动 MongoDB 服务
sudo systemctl start mongod
sudo systemctl enable mongod
2.4 验证 MongoDB 安装
检查 MongoDB 服务状态:
sudo systemctl status mongod
2.5 MongoDB 基本安全设置
-
设置管理员用户:
登录 MongoDB shell:
mongo
切换到
admin
数据库,并创建管理员用户:use admin db.createUser( { user: "admin", pwd: "adminpassword", roles: [ { role: "root", db: "admin" } ] } )
-
启用认证:
编辑 MongoDB 配置文件
/etc/mongod.conf
,启用认证:security: authorization: "enabled"
重启 MongoDB 服务:
sudo systemctl restart mongod
3. 单机部署注意事项
- 安全性:启用用户认证,并限制外部访问 IP。
- 备份:定期备份数据库,防止数据丢失。
- 性能优化:根据使用场景调整内存和缓存设置,如
wiredTigerCacheSizeGB
。 - 日志管理:配置日志以便于监控和调试。
二、MongoDB 集群环境部署
1. 环境准备
- 多台服务器:至少 3 台,用于配置 MongoDB Replica Set。
- 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7)。
- MongoDB 版本:MongoDB 5.0。
2. MongoDB Replica Set 部署
2.1 配置每个节点的 MongoDB 实例
按照单机环境的安装步骤,在每个节点上安装 MongoDB。
2.2 配置 Replica Set
-
编辑 MongoDB 配置文件:
在每台服务器上编辑
/etc/mongod.conf
,配置 Replica Set:replication: replSetName: "rs0"
-
启动 MongoDB 服务:
sudo systemctl restart mongod
-
初始化 Replica Set:
在主节点上启动 MongoDB shell:
mongo
初始化 Replica Set:
rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "192.168.1.1:27017" }, { _id: 1, host: "192.168.1.2:27017" }, { _id: 2, host: "192.168.1.3:27017" } ] })
-
检查 Replica Set 状态:
rs.status()
3. 集群部署注意事项
- 网络配置:确保所有节点之间的网络连接稳定,且防火墙允许相应端口通信。
- 节点配置一致性:确保每个节点的配置文件一致,特别是
replSetName
和bindIp
。 - 安全性:启用用户认证,并使用 SSL 进行加密通信。
- 故障恢复:配置仲裁节点(arbiter)以防止脑裂现象,并定期监控节点状态。
三、MongoDB 使用案例
1. Java 示例:使用 MongoDB Java Driver
1.1 添加 Maven 依赖
在 pom.xml
中添加 MongoDB Java Driver 依赖:
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies>
1.2 编写 Java 代码
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
public class MongoDBExample {
public static void main(String[] args) {
MongoClient mongoClient = MongoClients.create("mongodb://admin:adminpassword@localhost:27017");
MongoDatabase database = mongoClient.getDatabase("testdb");
MongoCollection<Document> collection = database.getCollection("testcollection");
Document doc = new Document("name", "John Doe")
.append("email", "john.doe@example.com")
.append("age", 29);
collection.insertOne(doc);
Document myDoc = collection.find().first();
System.out.println(myDoc.toJson());
mongoClient.close();
}
}
2. Python 示例:使用 pymongo
连接 MongoDB
2.1 安装 pymongo
pip install pymongo
2.2 编写 Python 代码
from pymongo import MongoClient
def query_database():
client = MongoClient("mongodb://admin:adminpassword@localhost:27017/")
db = client["testdb"]
collection = db["testcollection"]
doc = {"name": "John Doe", "email": "john.doe@example.com", "age": 29}
collection.insert_one(doc)
result = collection.find_one()
print(result)
client.close()
if __name__ == "__main__":
query_database()
总结
通过以上步骤,我们完成了 MongoDB 的单机和集群环境部署,并实现了 Java 和 Python 的简单连接示例。MongoDB 作为一款 NoSQL 数据库,具备高可扩展性和灵活的数据模型,适用于多种应用场景。
部署过程中的注意事项
- 安全性:启用用户认证、IP 限制和 SSL 加密,确保数据安全。
- 性能优化:根据需求调整缓存、索引等配置,提高性能。
- 备份和恢复:定期备份数据库,并测试恢复过程,防止数据丢失。
- 监控和日志管理:配置监控工具和日志系统,及时发现和解决问题,保障 MongoDB 的稳定运行。