中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行mongdb備份恢復

發布時間:2021-09-26 14:33:44 來源:億速云 閱讀:145 作者:柒染 欄目:MongoDB數據庫

如何進行mongdb備份恢復,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、物理備份(拷貝文件)

#!/bin/sh
DATE=`date +%Y%m%d`
DEL_DATE=$(date -d '-30 days' "+%Y%m%d")
HOST=10.10.17.27
PORT=27000
USER=admin
PASSWORD=123456
DATA_DIR="/data/mongodb/navy_db/db"
BACKUP_PATH="/data/mongodbbackup/$DATE"

date +%Y%m%d%H%M >>/data/log/mongodb_bak.log
#第一步鎖表
lock()
{
echo "db.fsyncLock()"|  mongo  --host $HOST --port $PORT -u $USER -p $PASSWORD  admin
}
execute()
{
  lock
  if [ $? -eq 0 ]
  then
    echo "mongodb lock successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb lock fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
#第二步備份
back()
{
rsync -av $DATA_DIR $BACKUP_PATH/
}
execute()
{
  back
  if [ $? -eq 0 ]
  then
    echo "mongodb back successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb back fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
#第三部解鎖
unlock()
{
echo "db.fsyncUnlock()"|  mongo  --host $HOST --port $PORT -u $USER -p $PASSWORD  admin
}
execute()
{
  unlock
  if [ $? -eq 0 ]
  then
    echo "mongodb unlock successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb unlock fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
#刪除歷史數據
rm -rf "/data/mongodbbackup/${DEL_DATE}/"

PS:

物理備份只能全庫恢復,不能恢復單個表

恢復步驟:

1、停止需要恢復的實例
2、備份清空/data/mongodb/navy_db/db目錄
3、拷貝/data/mongodbbackup/$DATE下面的所有文件和文件夾到/data/mongodb/navy_db/db目錄
4、chown mongod:mongod /data/mongodb/navy_db/db/ -R
5、啟動實例

二、mongodump備份

#!/bin/sh
DATE=`date +%Y%m%d`
DEL_DATE=$(date -d '-30 days' "+%Y%m%d")
HOST=10.10.17.27:27000
USER=admin
PASSWORD=123456
BACKUP_PATH="/backup/mongodbbackup/$DATE"
date +%Y%m%d%H%M >>/data/log/mongodb_bak.log
start()
{
mongodump -h $HOST -u $USER -p $PASSWORD   -o $BACKUP_PATH
}
execute()
{
  start
  if [ $? -eq 0 ]
  then
    echo "mongodb back successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb back fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
rm -rf "/backup/mongodbbackup/${DEL_DATE}/"

恢復:

1、全庫恢復

mongorestore --host 10.10.17.27 --port  27000   /backup/mongodbbackup/20150818/

2、單集合(表的概念)恢復

 mongorestore --host 10.10.17.27 --port  27001 --db navy_db_new --collection navy_db_table_new   /backup/mongodbbackup/20150818/navy_db/navy_db_table.bson

三、復制集備份

#!/bin/sh
DATE=`date +%Y%m%d`
DEL_DATE=$(date -d '-30 days' "+%Y%m%d")
HOST="dbset/10.10.17.27:27000,10.10.17.26:27000"
USER=admin
PASSWORD=123456
BACKUP_PATH="/data/mongodbbackup/$DATE"
date +%Y%m%d%H%M >>/data/log/mongodb_bak.log
start()
{
mongodump -h $HOST -u $USER -p $PASSWORD  --oplog  -o $BACKUP_PATH
}
execute()
{
  start
  if [ $? -eq 0 ]
  then
    echo "mongodb back successfully!" >>/data/log/mongodb_bak.log
  else
    echo "mongodb back fail!" >>/data/log/mongodb_bak.log
  fi
}
execute
rm -rf "/backup/mongodbbackup/${DEL_DATE}/"

PS:

備份復制集和備份單個mongodb實例用mongodump備份的方法差不多,只是host的寫法不一樣,需要指定復制集名稱,還有就是加上 --oplog參數,來跟蹤備份時主庫上發生的所有寫操作,獲取一個pointin-time快照,否則備份的狀態將與集 群中其他節點不匹配。在恢復時,還必須創建oplog,并指定--oplogReplay參數來應用這些操作,否則恢復的成員將不知道從何處開始同步,從 而在某個時間點上與源服務器保持一致。

恢復:

1、降復制集中要恢復的節點移除

rs.remove("10.10.17.26:27000")

2、運行mongorestore --oplogReplay命令

mongorestore --host 10.10.17.26 --port  27000 --oplogReplay  /data/mongodbbackup/20150820/

3、創建oplog

use local 
db.createCollection("oplog.rs", {"capped" : true, "size" : 10000000})

4、恢復oplog

mongorestore --host 10.10.17.26 --port  27000 -d local -c oplog.rs  /data/mongodbbackup/20150820/oplog.bson

5、將該節點加入到復制集 

 rs.add("10.10.17.26:27000")

關于如何進行mongdb備份恢復問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

札达县| 彰化县| 平定县| 阿拉尔市| 临夏市| 浦县| 方山县| 临高县| 宁远县| 洛隆县| 通榆县| 丹寨县| 嘉峪关市| 宝兴县| 文化| 绥化市| 金寨县| 大足县| 改则县| 道孚县| 南投市| 舟曲县| 天峨县| 沭阳县| 盖州市| 永济市| 望奎县| 三河市| 安塞县| 康马县| 临颍县| 二连浩特市| 县级市| 资溪县| 吕梁市| 昭觉县| 肇州县| 自贡市| 巢湖市| 芦溪县| 甘洛县|