Fangjian

FE / 生活是一种态度

导航
 » 主页
 » 项目
 » Github
 » 关于我

mongodb数据 自动备份 [mongodb]

11 Jul 2017 » http

全栈开发过程中需要我们自己维护数据库mongodb,数据备份是尤为重要的一环,了解 Linux 环境下数据的自动备份

一、创建备份目录

mkdir -p /data/mongodb_bak/mongodb_bak_now
mkdir -p /data/mongodb_bak/mongodb_bak_list

二、创建备份脚本

#!/bin/bash 
# backup MongoDB [mongodb_bak.sh]

# mongodump命令路径 
DUMP=/usr/local/mongodb/bin/mongodump
OUT_DIR=/data/mongodb_bak/mongodb_bak_now
TAR_DIR=/data/mongodb_bak/mongodb_bak_list

# 获取当前系统时间 
DATE=`date +%Y_%m_%d`

# 数据库账号
DB_USER=user
# 数据库密码
DB_PASS=123

# 最终保存的数据库备份文件 
DAYS=15

# 最终保存的数据库备份文件
TAR_BAK="mongodb_bak_$DATE.tar.gz"
cd $OUT_DIR 
rm -rf $OUT_DIR/* 
mkdir -p $OUT_DIR/$DATE

# mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
# 如果没有用户谁,可以去掉-u和-p
# 如果导出本机的数据库,可以去掉-h
# 如果是默认端口,可以去掉--port
# 如果想导出所有数据库,可以去掉-d

# 备份单个(dcg)数据库 mongodump -h dbhost -d dbname -o dbdirectory [无密码]
$DUMP -h 10.8.19.223:27017 -d "dcg" -o $OUT_DIR/$DATE 

# 备份全部数据库 
$DUMP -h 10.8.19.223:27017 -u $DB_USER -p $DB_PASS --authenticationDatabase

# 压缩为.tar.gz格式 
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE

# 删除15天前的备份文件 
find $TAR_DIR/ -mtime +$DAYS -delete
exit

三、修改脚本文件属性

chmod +x mongodb_bak.sh

四、添加计划任务 /etc/cront

路径:/etc/crontab

30 20 * * 6 root /data/mongodb_bak/mongo-back.sh