生產環境使用云服務器(centOS)部署和使用MongoDB

部署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 包?mongodMongoDB 官方為 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 ?# 檢查日志確認無報錯

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90712.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90712.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

思博倫第二到三層測試儀(打流儀)TestCenter 2U硬件安裝及機箱加電_雙極未來

&#xff08;1&#xff09;安裝板卡&#xff1a;上圖中共 4 個紅色線框&#xff0c;上邊兩個紅色線條框住的是機箱的左右兩側導軌&#xff0c;下邊兩條紅色 線條框住的是板卡拉手條&#xff08;用于承載板卡PCB的金屬板&#xff09;左右兩邊的邊沿。 安裝時將拉手條兩邊的邊沿與…

【華為】筆試真題訓練_20250611

本篇博客旨在記錄自已的筆試刷題的練習&#xff0c;里面注有詳細的代碼注釋以及和個人的思路想法&#xff0c;希望可以給同道之人些許幫助。本人也是小白&#xff0c;水平有限&#xff0c;如果文章中有什么錯誤或遺漏之處&#xff0c;望各位可以在評論區指正出來&#xff0c;各…

新浪微博APP v14.5.0:連接世界的社交媒體平臺

新浪微博APP 是一款廣受歡迎的社交媒體應用程序&#xff0c;憑借其強大的功能和豐富的社交生態&#xff0c;成為用戶獲取信息、表達觀點、互動交流的重要平臺。最新版 v14.5.0 內置了微博助手 v2.3.0&#xff0c;進一步提升了用戶體驗和功能多樣性。 軟件功能 1. 發布微博 用…

靜態枚舉返回(簡單實現字典功能)

枚舉緩存策略的實現與應用 通過靜態Map緩存枚舉類的Class對象&#xff0c;避免每次請求時重復反射加載。核心實現是一個包含枚舉類名與對應Class映射的Registry類&#xff1a; public class EnumRegistry {private static final Map<String, Class<?>> ENUM_MAP …

深分頁性能問題分析與優化實踐

在日常測試工作中&#xff0c;我們經常會遇到分頁查詢接口&#xff0c;例如&#xff1a; GET /product/search?keyword&pageNum1&pageSize10乍看之下&#xff0c;這樣的分頁接口似乎并無性能問題&#xff0c;響應時間也很快。但在一次性能壓測中&#xff0c;我們復現了…

LeetCode——1957. 刪除字符使字符串變好

通過萬歲&#xff01;&#xff01;&#xff01; 題目&#xff1a;給你一個字符串&#xff0c;然后讓你刪除幾個字符串&#xff0c;讓他變成好串&#xff0c;好串的定義就是不要出現連續的3個一樣的字符。思路&#xff1a;首先就是要遍歷字符串。我們將要返回的字符串定義為ret&…

Aerospike與Redis深度對比:從架構到性能的全方位解析

在高性能鍵值存儲領域&#xff0c;Aerospike與Redis是兩款備受關注的產品。Redis以其極致的單機性能和豐富的數據結構成為主流選擇&#xff0c;而Aerospike則憑借分布式原生設計和混合存儲架構在大規模場景中嶄露頭角。本文將從架構設計、數據模型、性能表現、擴展性等核心維度…

Linux命令速查手冊

一、命令格式與輔助工具類別符號/命令示例說明基本格式commandls -a /home命令 選項 參數管道符ls -lless重定向>df -h > disk_usage.txt覆蓋寫入文件>>echo "New" >> notes.txt追加寫入文件2>ls non_exist 2> error.txt錯誤輸出重定向快捷…

net-snmp添加自定義mib樹

首先我們把前面mib2c生成的文件修改 下面重新做了個簡單點的MIB樹 -- -- -- MIB generated by MG-SOFT Visual MIB Builder Version 6.0 Build 88 -- Saturday, July 26, 2025 at 09:24:54 --ARHANGELSK-GLOBAL-REG DEFINITIONS :: BEGINIMPORTSenterprises, OBJECT-TYPE, M…

【動態規劃-斐波那契數列模型】理解動態規劃:斐波那契數列的遞推模型

算法相關知識點可以通過點擊以下鏈接進行學習一起加油&#xff01;動態規劃是一種解決最優化問題的強大技術&#xff0c;通過將問題分解為子問題并逐步求解來實現高效計算。斐波那契數列是動態規劃中經典的應用之一&#xff0c;其遞推關系非常適合用動態規劃進行優化。通過動態…

微信小程序 自定義帶圖片彈窗

1. 微信小程序 自定義帶圖片彈窗1.1. 實現思路使用官方組件實現圖片模態彈窗。首先找到官方文檔&#xff1a;?顯示模態彈窗的API wx.showModal(OBJECT)wx.showModal參數介紹發現并沒有設置圖片的參數&#xff0c;但是這是一個API&#xff0c;但是組件呢&#xff1f;我并沒有在…

私有化大模型架構解決方案構建指南

內容概要本指南旨在為企業提供私有化大模型架構解決方案的全面構建路徑&#xff0c;幫助其在保障數據隱私的同時提升業務效率。我們將系統解析關鍵環節&#xff0c;包括安全部署策略設計、模型訓練核心技術、持續優化機制構建以及知識管理實踐路徑。此外&#xff0c;指南還涵蓋…

面試150 查找和最小的K對數字

思路1 超時法&#xff1a;通過兩個循環記錄三元組[num1,num2,num1num2]然后通過num1num2從小到大進行排序&#xff0c;然后返回前K個對數中的前兩個數即可。 class Solution:def kSmallestPairs(self, nums1: List[int], nums2: List[int], k: int) -> List[List[int]]:if n…

vscode目錄,右鍵菜單加入用VSCode打開文件和文件夾(快速解決)(含刪除)(腳本)

1.創建文本文件 在桌面右鍵單擊&#xff0c;選擇“新建” > “文本文檔”&#xff0c;將其命名為“vscode.txt”2.復制代碼內容3.修改文件擴展名 右鍵單擊“vscode.txt”文件&#xff0c;選擇“重命名”&#xff0c;將文件擴展名從.txt改為.reg&#xff0c;使其成為“vscode…

Chart.js 柱形圖詳解

Chart.js 柱形圖詳解 引言 在數據可視化領域&#xff0c;柱形圖是一種非常常見的圖表類型&#xff0c;它能夠直觀地展示不同類別或組的數據之間的比較。Chart.js 是一個基于 HTML5 Canvas 的開源庫&#xff0c;它提供了一系列的圖表繪制功能&#xff0c;其中包括柱形圖。本文將…

沉浸式文旅新玩法-基于4D GS技術的真人數字人賦能VR體驗升級

線下沉浸式劇場與 LBE VR 相結合&#xff0c;會碰撞出什么樣的火花&#xff1f;本次 PICO 視頻、東方演藝集團與火山引擎一起&#xff0c;將沉浸式演出《只此周莊》的部分場景復刻到了 VR 世界&#xff0c;讓用戶在虛擬的古代周莊夜市里&#xff0c;體驗了古老的故事以及精彩紛…

C程序內存布局詳解

C程序內存布局詳解 1. 內存布局概述 C程序在內存中分為以下幾個主要區域&#xff08;從低地址到高地址&#xff09;&#xff1a; 代碼段&#xff08;.text&#xff09;只讀數據段&#xff08;.rodata&#xff09;初始化數據段&#xff08;.data&#xff09;未初始化數據段&…

新手向:Git下載全攻略

Git 的安裝與重要性在現代軟件開發中&#xff0c;版本控制是必不可少的工具&#xff0c;而 Git 是目前最流行的分布式版本控制系統。無論是個人開發者還是大型團隊&#xff0c;Git 都能高效管理代碼變更&#xff0c;確保項目歷史清晰可追溯。安裝 Git 是開發者入門的第一步&…

linux中如何清除history命令

寫在前面 使用ssh遠程連接客戶端連接上linux后操作的命令多了&#xff0c;有時候需要清除對應的歷史命令記錄&#xff0c;可以通過下面幾種方式實現。第一種方法 通過修改.bash_history文件 這是最簡單直接的方法&#xff0c;但是只會影響當前用戶的歷史記錄。執行以下命令即可…

PHP插件開發中的一個錯誤:JSON直接輸出導致網站首頁異常

問題描述 最近在使用步數統計插件&#xff08;WeFootStep&#xff09;時&#xff0c;發現網站首頁完全變成了一段JSON數據&#xff0c;而不是正常的HTML頁面。具體表現為首頁顯示如下內容&#xff1a; {"results":"<li><a href\"https:\/\/blog…