linux下备份自动mongodb

首先,要了解mongodb备份相关的命令和参数

语法:mongodump -h IP -d 数据库 -o 文件存在路径(-u 数据库用户名 -p 数据库密码)

例如:

mongodump -h 127.0.0.1 -d testdb -o /backup/mongobak/

其中,不传参则采用默认参。比如不传-d则默认备份全部数据库。

当然,既然有备份的命令,也有恢复的命令~~~

语法:mongorestore -h 主机 -d 目标库 -drop  --directoryperdb 备份文件

例如:

mongorestore -h 127.0.0.1 --directoryperdb /data/dump

说明一下,--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在。

PS:mongoexport 和 mongoimport 这两个命令也可以用来导出或导入数据哦。

然后,我们当然不可能每次手动来敲命令备份咯,所以需要每天系统自动执行这些命令~~~

新建一个文件,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,囧~~~然后我采用的是暴力的方式:

1、service cron stop

2、service cron start

呵呵,都看得懂,先暴力stop,再暴力start,大家都懂的。(这一步,希望大神给出通用点的方式)

以后实践成功,再继续补充主从数据库同步(主要是防止主数据库出错,然后就可以改连从数据库,保证项目不垮)

你可能感兴趣的:(linux下备份自动mongodb)