知识总结

CODE IS POETRY

Mongodb自动备份和恢复

先关闭验证

打开/etc/mongod.conf 添加属性

1
2
#security:
# authorization: enabled

重启mongod服务

1
service mongod restart

进入mogo shell

1
2
3
4
5
6
7
8
9
10
mongo --port 27017
use test
db.createUser(
{
user: "backupuser",
pwd: "backupuser",
roles: [{ role: "backup", db: "admin" },{ role: "restore", db: "admin" } ]
}
)

创建备份文件backup.sh,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/sh

DUMP=/usr/bin/mongodump #mongodump备份文件执行路径

OUT_DIR=/home/backup/mongod_bak_now #临时备份目录

TAR_DIR=/home/backup/mongod_bak_list #备份存放路径

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

DB_USER=backupuser#数据库账号

DB_PASS=backupuser #数据库密码

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 -d test -o $OUT_DIR/$DATE #备份全部数据库
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE #压缩为.tar.gz格式
find $TAR_DIR/ -mtime +$DAYS -delete #删除7天前的备份文

chmod +x  backup.sh
添加定时任务即可

恢复:

1
/usr/bin/mongorestore -u backupuser -p backupuser --authenticationDatabase "admin"  --dir /home/backup/mongod_bak_list/home/backup/mongod_bak_now/2020_01_06

© 2020 Tung

粤ICP备19047572号