溫馨提示×

MongoDB備份恢復在Ubuntu上怎么操作

小樊
47
2025-10-08 05:46:48
欄目: 云計算

一、準備工作

  1. 安裝MongoDB工具包
    在Ubuntu上,mongodump(備份)和mongorestore(恢復)工具包含在mongodb-tools包中。若未安裝,可通過以下命令安裝:

    sudo apt update
    sudo apt install mongodb-tools
    
  2. 確認MongoDB服務狀態
    備份/恢復前需確保MongoDB服務正在運行:

    sudo systemctl start mongod  # 啟動服務
    sudo systemctl enable mongod # 設置開機自啟
    sudo systemctl status mongod # 檢查狀態(顯示"active (running)"即為正常)
    

二、MongoDB備份操作

  1. 使用mongodump備份數據
    mongodump是MongoDB自帶的全量備份工具,支持備份整個實例、特定數據庫或集合。

    • 備份所有數據庫
      將數據備份到指定目錄(如/backup/mongodb_$(date +%Y%m%d),按日期命名便于管理):
      sudo mkdir -p /backup  # 創建備份目錄(可選)
      sudo mongodump --out /backup/mongodb_$(date +%Y%m%d)
      
    • 備份特定數據庫(如mydb):
      sudo mongodump --db mydb --out /backup/mongodb_$(date +%Y%m%d)
      
    • 備份特定集合(如mydb中的users集合):
      sudo mongodump --db mydb --collection users --out /backup/mongodb_$(date +%Y%m%d)
      
  2. 壓縮備份文件
    為節省存儲空間,可使用tar命令壓縮備份目錄:

    sudo tar -czvf /backup/mongodb_backup_$(date +%Y%m%d).tar.gz /backup/mongodb_$(date +%Y%m%d)
    

    壓縮后可通過ls -lh命令查看壓縮包大小,確認節省空間效果。

  3. 自動化定期備份(可選)
    使用cron定時任務實現每日自動備份(如凌晨2點):

    • 編輯當前用戶的crontab文件:
      crontab -e
      
    • 添加以下行(按日期命名備份目錄,保留7天備份):
      0 2 * * * sudo mkdir -p /backup && sudo mongodump --out /backup/mongodb_$(date +\%Y\%m\%d) && sudo tar -czvf /backup/mongodb_backup_$(date +\%Y\%m\%d).tar.gz /backup/mongodb_$(date +\%Y\%m\%d) && sudo find /backup -name "mongodb_backup_*.tar.gz" -mtime +7 -exec rm {} \;
      
    • 保存退出后,cron會自動執行每日備份任務。

三、MongoDB恢復操作

  1. 停止MongoDB服務(可選但推薦)
    恢復前停止服務可避免數據沖突(若為生產環境,建議在低峰期操作):

    sudo systemctl stop mongod
    
  2. 使用mongorestore恢復數據
    mongorestoremongodump的配套恢復工具,支持恢復整個實例、特定數據庫或集合。

    • 恢復所有數據庫
      將備份目錄(如/backup/mongodb_20250930)中的所有數據庫恢復到MongoDB實例:
      sudo mongorestore /backup/mongodb_20250930
      
    • 恢復特定數據庫(如mydb):
      sudo mongorestore --db mydb /backup/mongodb_20250930/mydb
      
    • 恢復特定集合(如mydb中的users集合):
      sudo mongorestore --db mydb --collection users /backup/mongodb_20250930/mydb/users.bson
      
    • 恢復時覆蓋現有數據(使用--drop選項):
      若目標數據庫已存在,可先刪除現有數據再恢復:
      sudo mongorestore --drop --db mydb /backup/mongodb_20250930/mydb
      
  3. 啟動MongoDB服務
    恢復完成后,啟動MongoDB服務以恢復正常訪問:

    sudo systemctl start mongod
    
  4. 驗證恢復結果
    使用mongo shell連接MongoDB,檢查數據是否恢復成功:

    mongo  # 進入mongo shell
    use mydb  # 切換到目標數據庫
    db.users.find()  # 查詢目標集合(如users)的數據
    

    若能正常查詢到備份時的數據,則說明恢復成功。

四、注意事項

  • 權限問題:若備份/恢復時提示權限不足,可使用sudo提升權限(如sudo mongodump)。
  • 備份驗證:定期使用mongorestore --dryRun模擬恢復過程,檢查備份文件的完整性(不會實際恢復數據)。
  • 異地備份:建議將備份文件存儲在異地(如云存儲),防止本地硬件故障導致數據丟失。
  • 加密備份:若備份包含敏感數據,可使用openssl等工具加密備份文件(如tar -czvf - /backup | openssl enc -aes-256-cbc -salt -out /backup/encrypted.tar.gz.enc)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女