【MongoDB】docker mongo 数据备份
生活随笔
收集整理的這篇文章主要介紹了
【MongoDB】docker mongo 数据备份
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 備份腳本 mongobk.sh
- 定時(shí)任務(wù) crontab
備份腳本 mongobk.sh
$ cat mongobk.sh#!/bin/sh # dump 命令執(zhí)行路徑,根據(jù)mongodb安裝路徑而定 # mongo的容器名稱 MONGODB_CONTAINER_NAME=yapi_mongodb DUMP="docker exec -it ${MONGODB_CONTAINER_NAME} " # 臨時(shí)備份路徑(注:docker 容器內(nèi)的路徑) OUT_DIR=/dump/tmp # 壓縮后的備份存放路徑(注:docker 容器內(nèi)的路徑) TAR_DIR=/dump/list # 當(dāng)前系統(tǒng)時(shí)間 DATE=`date +%Y%m%d%H%M` # 數(shù)據(jù)庫賬號 DB_USER=user # 數(shù)據(jù)庫密碼 DB_PASS=password # 數(shù)據(jù)庫名稱,多個(gè)用空格隔開 DB_NAME_ARR=("yapi") # 代表刪除7天前的備份,即只保留近 7 天的備份 DAYS=7# 最終保存的數(shù)據(jù)庫備份文件 for DBNAME in ${DB_NAME_ARR[@]} do# 刪除臨時(shí)目錄內(nèi)容rm -rf $OUT_DIR/*# 文件名稱:數(shù)據(jù)庫名_時(shí)間FILE_NAME="${DBNAME}_${DATE}"# 導(dǎo)出數(shù)據(jù)的臨時(shí)目錄TARGET_DIR="$OUT_DIR/$FILE_NAME"mkdir -p $TARGET_DIR# 臨時(shí)目錄打包壓縮后的文件TARGZ_FILE="${FILE_NAME}.tar.gz"# 存放壓縮后文件的目錄TARGET_FILE="$TAR_DIR/$TARGZ_FILE"# 執(zhí)行導(dǎo)出命令# $DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS -d $DBNAME -o $OUT_DIR/$DATE$DUMP mongodump -h 127.0.0.1:27017 -d $DBNAME -o $TARGET_DIR# 判斷導(dǎo)出結(jié)果flag=`echo $?`if [ $flag == "0" ];thenecho "database $DBNAME success backup to $TARGET_DIR"elseecho "database $DBNAME backup fail!"fi# 壓縮格式為 .tar.gz 格式# -P tar 默認(rèn)采用相對路徑壓縮打包,需要(-P)允許使用絕對路徑 # -v 輸出 verbose 日志$DUMP tar -zcPf $TARGET_FILE $TARGET_DIR/$DBNAME# 將容器內(nèi)的壓縮文件,復(fù)制到宿主機(jī)與備份腳本同級的dump目錄下docker cp ${MONGODB_CONTAINER_NAME}:$TARGET_FILE $PWD/dump# echo "docker cp ${MONGODB_CONTAINER_NAME}:$TARGET_FILE $PWD/dump"done# 刪除 $DAYS 天前的備份文件 find $PWD/dump -mtime +$DAYS -delete定時(shí)任務(wù) crontab
$ cat /etc/crontab 0 0 */3 * * root bash mongobk.sh >> /var/log/mongo/bk.log總結(jié)
以上是生活随笔為你收集整理的【MongoDB】docker mongo 数据备份的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux 】使用 Shell 批量重
- 下一篇: 【Laravel】Fatal error