db-mongodb-Backup
mongodb手动备份
备份命令mongodump
1 | mongodump --host 127.0.0.1 --port 27017 --username user --password pass --out /data/backup/ --db test --collection mycollection |
默认备份本地运行在27017端口下的 MongoDB 实例中的所有数据库(local
除外),并在当前目录下生成 dump/
路径存放备份文件,备份以文件名区分数据库,里面以bson
和json
单独存表
- 在安装好mongodb的服务器上执行
mongodump
命令就可以备份数据库了,备份的文件会在当前目录的dump里面
恢复命令mongorestore dump/
参数同备份,其中dump为备份文件的路径
mongodb自动备份
创建脚本
mongod_bak.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
28
29
30
31
32
33
34
35
36
DUMP=mongodump
#备份文件临时目录
OUT_DIR=/data/backup/mongod/tmp
#备份文件正式目录
TAR_DIR=/data/backup/mongod
#备份文件将以备份时间保存
DATE=`date +%Y_%m_%d_%H_%M_%S`
#数据库操作员,建议设置个单独的用户作为备份用户
#DB_USER=<USER>
#数据库操作员密码
#DB_PASS=<PASSWORD>
#保留最新14天的备份
DAYS=14
#备份文件命名格式
TAR_BAK="mongod_bak_$DATE.tar.gz"
#远程备份ip
#REMOTEIP=<远程服务ip>
#远程备份用户名
#REMOTEUSER=<远程连接用户名>
#创建文件夹
cd $OUT_DIR
#清空临时目录
rm -rf $OUT_DIR/*
#创建本次备份文件夹
mkdir -p $OUT_DIR/$DATE
#执行备份命令,带用户
#$DUMP -u $DB_USER -p $DB_PASS -o $OUT_DIR/$DATE
#执行备份命令,不带用户
$DUMP -o $OUT_DIR/$DATE
#将备份文件打包放入正式目录
tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
#删除14天前的旧备份
find $TAR_DIR/ -mtime +$DAYS -delete
#远程备份,需要自行配置ssh证书登陆方式,需在远程提前建好备份文件目录TAR_DIR中设置的路径值
#scp $TAR_DIR/$TAR_BAK $REMOTEUSER@$REMOTEIP:$TAR_DIR/添加执行权限
chmod +x mongod_bak.sh
执行测试
./mongod_bak.sh
,这步可忽略添加自动执行脚本功能,执行
1
2
3
4
5
6
7
8#每天凌晨2点自动执行,脚本路径更改为自己存放的路径
echo "0 2 * * * root /root/mongod_bak.sh" >>/etc/crontab
#使能配置
crontab /etc/crontab
#检查配置是否生效
crontab -l
#检查crond是否运行
service crond status
备份恢复
1 | #解压备份文件 |
自动生成脚本及自动配置定时备份
1 |
|