功能说明

每天隔3小时备份当前状态下的mongo数据,保存的日期为当前天加小时,如:2015年11月12号2点保存的数据目录名为2015111202。

然后每天都会删除7天之前所备份的数据(意思是仅保留最近7天的备份数据)

具体实现

  • 执行备份的脚本:backup.bat

    #!/bin/bash  
    sourcepath='/home/mongdb'
    targetpath='/home/mongdb/mongobak'  
    nowtime=$(date +%Y%m%d%H)  
       
    start()  
    {  
      ${sourcepath}/mongodump --host 127.0.0.1 --port 2007 -u root -p 111 --out ${targetpath}/${nowtime}  
    }  
    execute()  
    {  
      start  
      if [ $? -eq 0 ]  
      then  
    echo "back successfully!"  
      else  
    echo "back failure!"  
      fi  
    }  
       
    if [ ! -d "${targetpath}/${nowtime}/" ]  
    then  
     mkdir ${targetpath}/${nowtime}  
    fi  
    execute  
    echo "============== back end ${nowtime} =============="  
    
  • 执行删除的脚本:remove.bat
#!/bin/bash  
targetpath='/home/mongdb/mongobak' 
nowtime=$(date -d '-7 days' "+%Y%m%d")  
if [ -d "${targetpath}/${nowtime}/" ]  
then  
  rm -rf "${targetpath}/${nowtime}/"  
  echo "=======${targetpath}/${nowtime}/===删除完毕=="  
fi  
echo "===$nowtime ===" 
  • 执行恢复数据的脚本:restore.bat
#!/bin/bash

#存放备份数据的路径
targetpath='/home/sam/mongodb/'
#获取前第一天的日期
time1=$(date -d '-1 days' +"%Y%m%d")
#获取前第二天的日期
time2=$(date -d '-2 days' +"%Y%m%d")
#获取前第三天的日期
time3=$(date -d '-3 days' +"%Y%m%d")

#如果存在数据
if [ -d ${targetpath}/${time1}/ ]
then
  #恢复数据
  mongorestore ${targetpath}/${time1}/
  #结束脚本
  exit
fi

#如果存在数据
if [ -d ${targetpath}/${time2}/ ]
then
  #恢复数据
  mongorestore ${targetpath}/${time2}/
  #结束脚本
  exit
fi

#如果存在数据
if [ -d ${targetpath}/${time3}/ ]
then
  #恢复数据
  mongorestore ${targetpath}/${time3}/
  #结束脚本  
  exit
fi
  • 恢复数据脚本说明
#恢复所有数据库到mongodb中:
mongorestore ${targetpath}/${time3}/
#恢复指定数据库:
mongorestore -d apk ${targetpath}/${time3}/apk/
  • 添加计划任务:crontab -e (看不懂这里请百度crontab)

  • /3 /root/mgbak 1>/root/log.file &
  • 2 * /root/mgbakDel 1>/root/logdel.file &

点击::x生成任务计划

Last modification:October 17, 2018
If you think my article is useful to you, please feel free to appreciate