linux定期备份mongo数据库

xiaoxiao2021-02-28  25

mongo定期备份。通过执行mongodump命令配合linux定时执行任务进行备份

1、创建备份目录:

mkdir -p /home/backup/mongod_bak/mongod_bak_now mkdir -p /home/backup/mongod_bak/mongod_bak_list

2、创建mongodump执行脚本

vi /home/crontab/mongod_bak.sh #新建文件,输入以下代码

#!/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 #备份全部数据库,连接地址默认127.0.0.1,如有变更添加 -h tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #压缩为.tar.gz格式 find $TAR_DIR/ -mtime +$DAYS -delete #删除7天前的备份文件

3、修改脚本文件权限使其可执行

chmod +x /home/crontab/mongod_bak.sh

4、添加定时任务

contab -e #在下面添加以下内容 30 1 * * * root /home/crontab/mongod_bak.sh #表示每天凌晨1点30执行备份具体表达式可网上查找

5、重新加载新的设定使其生效

/sbin/service crond reload #重新载入配置 chkconfig --level 35 crond on #加入开机自动启动: /sbin/service crond start #启动服务 crontab -l #列出crontab任务

每天在/home/backup/mongod_bak/mongod_bak_list目录下面可以看到mongod_bak_2017_02_28.tar.gz这样的

压缩文件。至此,Linux下自动备份Mongodb数据库并删除指定天数前的备份完成。

附录:Mongodb数据库恢复

恢复全部数据库:

mongorestore –drop –directoryperdb /home/backup/mongod_bak/mongod_bak_now/2017_02_28/

       恢复单个数据库

mongorestore –drop -d dataname –directoryperdb /home/backup/mongod_bak/mongod_bak_now/2017_02_28/dataname

crontab执行日志查看

tail -f /var/log/cron #如下则表示已执行 Sep 22 06:01:01 localhost crond[25522]: (root) CMD (run-parts /etc/cron.hourly)

上面的信息只是表示在时间内此脚本已执行,但是没有具体的执行过程和结果。通过以下命令查看具体的执行过程与结果

linux会每次都发邮件到该用户下。如下

cd /var/spool/mail/ #使用less命令查看 less root #内容如下 From root@localhost.localdomain Fri May 18 12:20:02 2018 Return-Path: <root@localhost.localdomain> X-Original-To: root Delivered-To: root@localhost.localdomain Received: by localhost.localdomain (Postfix, from userid 0) id E7FE520089E; Fri, 18 May 2018 12:20:01 +0800 (CST) From: root@localhost.localdomain (Cron Daemon) To: root@localhost.localdomain Subject: Cron <root@localhost> root /home/crontab/mongod_bak.sh Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <LANG=en_US.UTF-8> X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/root> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=root> X-Cron-Env: <USER=root> Message-Id: <20180518042001.E7FE520089E@localhost.localdomain> Date: Fri, 18 May 2018 12:20:01 +0800 (CST) /bin/sh: root: command not found

提示命令未找到。问题在于脚本文件中中无需再写root。重新编辑 crontab -e 去掉root即可

30 1 * * * /home/crontab/mongod_bak.sh

文章参考1:https://www.cnblogs.com/zhang-ke/p/7804503.html

文章参考2:https://www.cnblogs.com/doseoer/p/5663187.html

转载请注明原文地址: https://www.6miu.com/read-2630550.html

最新回复(0)