MongoDB配置文件詳解

一、常用配置項

MongoDB的配置文件默認在Linux下為 /etc/mongod.conf,在Windows下為 C:\Program Files\MongoDB\Server\版本\bin\mongod.cfg。

常用配置項如下:

# 數據文件
dbpath=/path/to/data/db
# 日誌文件
logpath=/path/to/mongodb.log
# 日誌級別(0代表無日誌,1代表錯誤日誌,2代表警告日誌,3代表調試日誌)
loglevel=2
# 端口號
port=27017
# 是否開啟鑒權
auth=true
# 主機名
bind_ip=127.0.0.1

1、數據文件和日誌文件

MongoDB會將所有的數據存放在數據文件中,一般為/data/db目錄。同時,也需要設置日誌文件的路徑和相關參數,如下所示:

dbpath=/path/to/data/db # 數據文件
logpath=/path/to/mongodb.log # 日誌文件
logappend=true # 日誌追加
journal=true # 是否啟用文件日誌提供數據恢復點和性能保障

2、端口號和主機名

端口號默認為 27017,如果有多個 MongoDB 實例運行在同一台計算機上,則需要設置不同的端口號。同時,bind_ip配置項用於指定運行 MongoDB 實例的 IP 地址,可以是一個或多個IP地址。

port=27017 # 端口號
bind_ip=127.0.0.1 # 自動綁定到本機環回地址

3、鑒權

在MongoDB部署中,鑒權是非常重要的,可以避免未授權的用戶連接到數據庫。如果需要啟用鑒權,則需要在配置文件中添加`auth=true`配置項。

auth=true # 是否開啟鑒權

二、MongoDB的安全

為了保障 MongoDB 數據庫系統的健康性和安全性,我們需要對安全進行漏洞檢測和防範措施,下面進行詳細介紹。

1、限制IP訪問

在發佈生產環境前,我們需要對 MongoDB 的訪問進行設置,在 mongod.conf 文件中限制 IP 訪問、或其他無效訪問端口。

bind_ip = your_server_ip
port = 27017

2、啟用授權訪問

限制訪問後,我們還需要對 MongoDB 的訪問進行鑒權,可以使用 username + password + database 方式。

bind_ip = 127.0.0.1
port = 27017
auth=true

# 設置客戶端需要登錄的賬號和密碼
setParameter = authenticationMechanisms=MONGODB-CR,SCRAM-SHA-1 
security:
  authorization: enabled # 淺拷貝默認的用戶超級管理員,其他淺拷貝不存在角色和權限,需要新建用戶並創建角色授權

3、使用TLS/SSL安全連接MongoDB

為了防止中間人攻擊和確認交流時服務器端的身份,可以使用 SSL/TLS 方式加密通信,設置 SSL/TLS 密鑰和證書。

#設置SSL/TLS證書密鑰路徑和密碼
net:
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/mongodb/ssl/mongo.pem #服務器端證書
    PEMKeyPassword: your_key_password

    CAFile: /etc/mongodb/ssl/mongo-ca.pem #CA證書
    allowInvalidCertificates: true # 是否允許使用無效證書
    allowInvalidHostnames: true # 是否允許使用無效的主機名

三、性能優化

MongoDB 在應用中隨着時間的推進數據量不斷增長,當寫入操作時,IO次數也會不斷增加,所以我們需要對其性能進行優化。

1、緩存

在 MongoDB 的啟動參數中設置 cacheSizeGB,使用 mmapv1 存儲引擎可以在內存中緩存所有數據,而 WiredTiger 則可以通過設置一個大的 cacheSizeGB 參數來緩存大量數據。

# MMAPv1存儲引擎中使用緩存設置
storage:
  mmapv1:
    smallFiles: true
    engineConfig:
      cacheSizeGB: 4 # 分配4GB緩存

# 使用WiredTiger存儲引擎的緩存設置
storage:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 4 # 分配4GB緩存

2、索引

索引可以提高查詢效率,但是如果數據量太大或者索引太多,會增加內存的消耗,因此我們需要根據具體情況進行制定的索引策略。

# 構建索引
db.orders.ensureIndex({customer_id:1})
#刪除索引
db.orders.dropIndex({customer_id:1})

3、修改MongoDB的運行參數

常用的 MongoDB 運行參數有:writeConcern,w,j,journalCommitInterval等。這些參數不僅能夠提高索引的查詢效率,還可以提高寫入的效率。

writeConcern: # MMAPv1存儲引擎的標準寫入
  w: 1
  j: true
journalCommitInterval: 100 # 控制數據寫入頻率(默認100毫秒)

四、備份和恢復

在 MongoDB 的部署過程中,很容易出現出現各種各樣的錯誤,所以我們需要對其進行備份,以便快速恢複數據。

1、mongodump

mongodump是MongoDB CLI工具,可在MongoDB的運行狀態下備份指定的集合和數據庫,支持*redis*恢復方式。執行備份操作時需要指定需要備份的數據庫、集合、備份文件儲存路徑、備份操作在執行後立即持久化到硬盤。

mongodump --host your_database_host_address --port 27017 --username user --password password --gzip --archive=data/date.gz

2、mongorestore

mongorestore是MongoDB CLI工具,可在MongoDB的運行狀態下備份用戶請求的數據庫,在恢復操作時需要重新創建一個空的 Mongo 數據庫,然後將備份中的數據複製到新創建的空數據庫中。

mongorestore --host your_database_host_address --port 27017 –gzip –archive=data/date.gz –username user –password password

3、MongoDB的自動備份

為了保障 MongoDB 數據庫系統的健康性和安全性,我們需要對數據庫進行自動備份,可以使用腳本語言如 Python或 Shell 來實現。下面是一個 Python 自動備份的示例代碼。

#!/usr/bin/env python
# coding=utf-8
import os
import time
import sys
import pymongo
 
'''
MongoDB自動備份腳本
author:Echo
'''

# 數據庫IP地址
host = 'localhost'
# 登錄MongoDB的用戶名
user = 'user'
# 登錄MongoDB的密碼
password = 'password'
# 備份的數據庫,若備份所有數據庫,db則為admin
db = 'admin'
# 備份的文件名前綴
name = 'mongodb-backup'
# 備份的文件存儲路徑
path = '/data/mongodb/backup'
if not os.path.exists(path):
    os.makedirs(path)
# 當前系統時間
date = time.strftime('%Y-%m-%d-%H-%M', time.localtime(time.time()))
# 合併出備份文件的絕對路徑
file_name = path + '/' + name + '.' + date + '.' + db + '.gz'
# 執行備份的命令
mongodump_command = "mongodump --host %s --port 27017 --username %s --password %s --db %s --gzip --archive=%s" % (host, user, password, db, file_name)
if os.system(mongodump_command) == 0:
    print("MongoDB backup OK")
else:
    print("MongoDB backup Failed")

五、總結

本文詳細講解了 MongoDB 的常用配置項、安全性設置、性能優化和備份恢復等內容。在實際應用中,根據實際情況設置適合自己的參數和方法並進行定期的備份是非常必要的。

原創文章,作者:PMYBX,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/334440.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
PMYBX的頭像PMYBX
上一篇 2025-02-05 13:05
下一篇 2025-02-05 13:05

相關推薦

  • 金融閱讀器提示配置文件無法識別

    在使用金融閱讀器過程中,有時會遇到提示配置文件無法識別的情況。這種情況通常是由於配置文件中存在錯誤或不完整所導致的。本文將從多個方面對此問題進行詳細的闡述,並提供相應解決方法。 一…

    編程 2025-04-28
  • 如何在Linux中添加用戶並修改配置文件

    本文將從多個方面詳細介紹在Linux系統下如何添加新用戶並修改配置文件 一、添加新用戶 在Linux系統下創建新用戶非常簡單,只需使用adduser命令即可。使用以下命令添加新用戶…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分佈式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25

發表回復

登錄後才能評論