前段时间,我的个人服务器数据库被无故删除,得知情况后泪流满面。后来找了很多关于恢复数据库的资料,但是基本都是靠备份来恢复,但是作为新手,我并没有定期备份自己的数据库。好在我的数据库中数据不多,所以打算从头开始。经过这次惨痛的教训,我当时做的第一件事就是在我的服务器上放了一个常规的备份脚本。毕竟,我不能在同一个地方丢两次。顺便写个博客记录一下,以备以后需要用到。创建备份目录#临时备份文件夹mkdir-p/home/mongodb_bak/mongodb_bak_now#备份压缩包文件夹mkdir-p/home/mongodb_bak/mongodb_bak_list创建备份脚本vim/home/crontab/MongoDB_bak.sh#!/bin/sh#dump命令执行路径取决于mongodb安装路径DUMP=/usr/bin/mongodump#临时备份路径OUT_DIR=/home/backup/mongod_bak/mongod_bak_now#压缩备份存放路径TAR_DIR=/home/backup/mongod_bak/mongod_bak_list#当前系统时间DATE=`date+%Y-%m-%d`#数据库账号DB_USER=username#数据库密码DB_PASS=password#表示删除7天前的备份,即只保留最近7天的备份daysDAYS=7#最后保存的数据库备份文件TAR_BAK="mongod_bak_$DATE.tar.gz"cd$OUT_DIRrm-rf$OUT_DIR/*mkdir-p$OUT_DIR/$DATE$DUMP-h127.0.0.1:27017-u$DB_USER-p$DB_PASS--authenticationDatabaseadmin-o$OUT_DIR/$DATE#压缩格式为.tar.gz格式tar-zcvf$TAR_DIR/$TAR_BAK$OUT_DIR/$DATE#删除15天前的备份文件find$TAR_DIR/-mtime+$DAYS-deleteexit将DB_USER更改为您的数据库帐户,将DB_PASS更改为您的数据库密码。修改脚本权限chmod+x/home/crontab/MongoDB_bak.sh添加定时任务vi/etc/crontab添加内容:#每周六18:30备份3018**6root/home/crontab/MongoDB_bak.sh一个值代表分钟,第二代表小时,第三代表日期,第四代表月份,第五代表星期。#作业定义示例:#.----------------分钟(0-59)#|.------------小时(0-23)#||.------------月中的第几天(1-31)#|||.--------月(1-12)或一月、二月、三月、四月...#||||.----星期几(0-6)(星期日=0或7)或星期日、星期一、星期二、星期三、星期四、星期五、星期六#||||#*****用户名要执行的命令脚本保存后生效。数据库恢复#恢复所有数据库mongorestore-u<数据库账号>-p<数据库密码>--authenticationDatabase"admin"--noIndexRestore--dir<备份文件夹路径>#恢复单个数据库mongorestore-u<数据库账号>-p<数据库密码>--authenticationDatabase"admin"--noIndexRestore-d<数据库名称>--dir<备份文件路径>
