首先,要了解mongodb备份相关的命令和参数
linux
语法:mongodump -h IP -d 数据库 -o 文件存在路径(-u 数据库用户名 -p 数据库密码)
mongodb
例如:数据库
mongodump -h 127.0.0.1 -d testdb -o /backup/mongobak/
其中,不传参则采用默认参。好比不传-d则默认备份所有数据库。spa
固然,既然有备份的命令,也有恢复的命令~~~rest
语法:mongorestore -h 主机 -d 目标库 -drop --directoryperdb 备份文件code
例如:crontab
mongorestore -h 127.0.0.1 --directoryperdb /data/dump
说明一下,--drop参数,有此参数,则表示,先删除全部的记录,而后恢复。如无此参数,则恢复备份时候的数据,备份以后新增长的数据依然存在。ci
PS:mongoexport 和 mongoimport 这两个命令也能够用来导出或导入数据哦。同步
而后,咱们固然不可能每次手动来敲命令备份咯,因此须要天天系统自动执行这些命令~~~it
新建一个文件,vi mongodb_back.sh(当前目录为:/home)
#!/bin/sh DUMP=/usr/local/mongodb/bin/mongodump #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=123456 #数据库密码 DAYS=7 #DAYS=7表明删除7天前的备份,即只保留最近7天的备份 TAR_BAK="mongod_bak_$DATE.tar.gz" #最终保存的数据库备份文件名 cd $OUT_DIR rm -rf $OUT_DIR/* mkdir -p $OUT_DIR/$DATE $DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE #备份所有数据库 tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #压缩为.tar.gz格式 find $TAR_DIR/ -mtime +$DAYS -delete #删除7天前的备份文件
说明一下,都是很简单的linux基本命令,要根据本身的实际状况适当修改。
修改其权限为可执行:
chmod +x /home/mongod_back.sh
而后添加到自动自动任务中:vi /etc/crontab(路径通常是这个)
30 1 * * * root /home/crontab/mongod_bak.sh #在最后面添加,表示天天凌晨1点30执行备份,可适当修改
最后,就是使咱们的修改生效了
这里我遇到了问题,网上说是用(/etc/rc.d/init.d/crond restart),可是我whereis crond找不到,结果在/etc/init.d里找到cron,而且还不让我restart,囧~~~而后我采用的是暴力的方式:
一、service cron stop
二、service cron start
呵呵,都看得懂,先暴力stop,再暴力start,你们都懂的。(这一步,但愿大神给出通用点的方式)
之后实践成功,再继续补充主从数据库同步(主要是防止主数据库出错,而后就能够改连从数据库,保证项目不垮)