部署MongoDB流程
1. ?安裝MongoDB?
版本選擇建議
- ?CentOS 7?:推薦MongoDB 4.4.x(兼容性好)
- ?CentOS 8/9?:建議最新穩定版(如6.0+),需單獨安裝
mongodb-database-tools
安裝步驟
1.添加官方倉庫
# 添加官方倉庫(以6.0為例)
sudo vi /etc/yum.repos.d/mongodb-org-6.0.repo
寫入以下內容:
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
2.安裝MongoDB
sudo yum install -y mongodb-org
3.啟動服務并設開機自啟
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod # 確認狀態為active (running)
4.查看mongoDB的版本
mongod --version
我的輸出如下:
db version v7.0.7
Build Info: {
"version": "7.0.7",
"gitVersion": "cfb08e1ab7ef741b4abdd0638351b322514c45bd",
"openSSLVersion": "OpenSSL 1.1.1w ?11 Sep 2023",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "rhel80",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
2.配置文件mongod.conf
1.進入mongod.conf
vi /usr/local/mongodb/etc/mongod.conf
2.測試環境配置的單點副本集
storage:dbPath: /usr/local/mongodb/data/systemLog:destination: filepath: /var/log/mongodb/mongodb.loglogAppend: truenet:port: 27017bindIp: 0.0.0.0processManagement:fork: falsesecurity:authorization: enabledkeyFile: /usr/local/mongodb/mongodb-keyfilereplication:replSetName: "rs0"
3.Systemd 服務文件
1.?新建服務文件。?創建?/etc/systemd/system/mongod.service
sudo vi /etc/systemd/system/mongod.service
2.寫入以下內容(根據自己的配置調整)
[Unit]
Description=MongoDB Database Server
After=network.target[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongod.conf
Restart=on-failure
RestartSec=5[Install]
WantedBy=multi-user.target
安全性
訪問限制
1.云服務器安全組限制ip來源
2.配置文件限制ip來源
3.更改端口,不使用MongoDB默認端口27017
副本集
生產環境需要至少3個數據承載節點(1個主節點+2個從節點)
安全檢查
rs.status() ?// 檢查所有成員狀態
rs.conf() ? ?// 檢查配置
系統用戶管理
配置MongoDB
用戶和用戶組
在 Debian/Ubuntu 系統上,官方包使用的默認用戶/組是 mongodb。??
?在 RHEL/CentOS/Fedora 等系統上,官方 RPM 包使用的默認用戶/組是 mongod。
?場景? | 用戶/組名 | 原因 |
---|---|---|
?CentOS 官方 RPM 包? | mongod | MongoDB 官方為 RHEL 系設計的規范,確保自動化部署的一致性?。 |
?手動二進制安裝? | mongodb | 社區約定俗成,避免與進程名混淆,且與 Debian 系命名統一?。 |
1.創建一個名為 "mongodb" 的系統用戶組
sudo groupadd mongodb
2.創建一個名為 "mongodb" 的系統用戶,屬于 mongodb 組,且無法交互式登錄
sudo useradd -r -g mongodb -s /bin/false mongodb
useradd:創建新用戶的命令
-r:創建系統用戶(UID 在系統用戶范圍內)
-g mongodb:指定用戶的主要組為剛創建的 mongodb 組
-s /bin/false:設置用戶的登錄 shell 為 /bin/false(禁止該用戶登錄系統)
mongodb:要創建的用戶名
3.查看所有用戶
cat /etc/passwd
4.查看所有用戶組
getent group
5.執行 ps aux | grep mongo 時,將會看到:?
mongod? ?12345 ?0.0 ?0.1 ?... /usr/local/mongodb/bin/mongod ...
數據庫用戶管理
// 查看數據庫所有用戶
db.getUsers()use admin
db.changeUserPassword("admin", passwordPrompt()) ?// 交互式重新設置強密碼// 刪除高風險默認賬戶
db.dropUser("admin")正常情況下應該新建專用管理賬號(禁止使用默認名稱,如admin、root)
db.createUser({user: "mongo_admin_7x83", ?// 隨機化用戶名pwd: passwordPrompt(), ? ? // 交互輸入強密碼roles: [{role: "root",?db: "admin"}]
})// 檢查所有用戶權限
db.runCommand({usersInfo: { forAllDBs: true },showCredentials: true,showPrivileges: true
})
備份數據庫(mongodump)
CentOS/RHEL 9 系統自帶了 mongodb-database-tools
,無需額外配置外部倉庫:
1.安裝系統自帶的 Database Tools
sudo yum install -y mongodb-database-tools
2.備份。應該啟用定時備份腳本。
mongodump --host <服務器IP>:27017 \ # 數據庫地址--db <數據庫名> \ # 指定需遷移的數據庫--username <用戶> \ # 數據庫賬號--password <密碼> \ --authenticationDatabase admin \ # 認證庫名(通常為admin)--gzip \ # 啟用壓縮減少傳輸量--oplog \ # 關鍵!確保備份期間數據一致性(副本集必需)--out /backup/prod_dump/ # 備份輸出目錄
恢復數據庫(mongorestore)
如果數據庫使用docker部署
1.創建容器內文件夾
docker exec mongo mkdir -p /tmp/backup
2.把備份文件傳輸到目標服務器
3.恢復數據庫
docker exec \mongo_container \mongorestore \--username admin \--password '您的密碼' \--authenticationDatabase admin \--gzip \--drop \--db yuxin \/tmp/backup/db
?查看數據庫情況命令
sudo systemctl restart mongod ?# 或使用你的服務名
sudo tail -f /var/log/mongodb/mongodb.log ?# 檢查日志確認無報錯