mongodb restore
# MongoDB Restore
当自建数据库时,需要备份和恢复数据库,这里将对 MongoDB 的备份和恢复进行介绍。对于备份和回复可借助gpt快速完成。
# 备份
使用mongodump命令备份数据库,可参照官方文档 (opens new window)
#!/bin/bash
# 设置 MongoDB 相关变量
DB_HOST="127.0.0.1"
DB_PORT="27017"
DB_NAME="school" # 替换为你的数据库名称
BACKUP_DIR="/var/backups/mongo_school" # 替换为你的备份目录
DATE=$(date +"%Y%m%d_%H%M%S")
USERNAME="hello"
PASSWORD="world"
# 创建备份文件夹
mkdir -p $BACKUP_DIR
# 执行 mongodump 命令,生成备份
mongodump --username $USERNAME --password $PASSWORD --authenticationDatabase=admin --host $DB_HOST --port $DB_PORT --db $DB_NAME --out $BACKUP_DIR/$DB_NAME_$DATE
# 打包备份文件为 tar.gz 压缩包
tar -zcvf $BACKUP_DIR/mongodb_backup_$DATE.tar.gz -C $BACKUP_DIR $DB_NAME_$DATE
# 删除未压缩的备份文件夹
rm -rf $BACKUP_DIR/$DB_NAME_$DATE
# 上传备份文件到华为云 OBS
OBS_BUCKET="ziga" # 替换为你的OBS桶名称
OBS_DIR="backup/mongo_school" # 替换为你希望存储的 OBS 路径
/root/download/obsutil_linux_amd64_5.5.12/obsutil cp $BACKUP_DIR/mongodb_backup_$DATE.tar.gz obs://$OBS_BUCKET/$OBS_DIR/
# 删除旧备份文件,只保留最近 10 个文件
cd $BACKUP_DIR
ls -t mongodb_backup_*.tar.gz | sed -e '1,10d' | xargs -d '\n' rm -f
# 输出备份完成信息
echo "MongoDB 数据备份已完成并上传至华为云 OBS: $OBS_BUCKET/$OBS_DIR/mongodb_backup_$DATE.tar.gz"
curl 'https://oapi.dingtalk.com/robot/send?access_token=ca462bb7sdfasd767asdxchj789' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"【通知】mongodb 数据库备份完成"}}'
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
37
38
39
40
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
37
38
39
40
# 恢复
在没有密码的情况下,可以直接恢复数据库。可参照官方文档 (opens new window)
mongore dump_folder
1
# 无密码启动
避免记忆密码,可以配置不开启授权,从而无密码启动;启动完成后即可无密码恢复,恢复完成后再开启授权。
通常,mongo使用systemctl启动,可查看对应的service文件,找到配置文件。
例如我安装的mongo配置文件路径为:/etc/mongod.conf
对应的service文件为:/usr/lib/systemd/system/mongod.service
# 注意事项
当mongo使用命令行启动,而不是systemctl启动时,可能使用root用户启动,从而导致生成了root权限的mongo相关文件,继而再使用systemctl启动时,mongo无法启动
编辑 (opens new window)
上次更新: 2025/03/08, 12:51:50