debian

MongoDB在Debian上的备份与恢复流程

小樊
39
2025-10-19 09:29:33
栏目: 云计算

MongoDB在Debian上的备份与恢复流程

一、备份流程

1. 安装MongoDB工具包

确保系统已安装mongodb-org-tools(包含mongodumpmongorestore等工具),若未安装可通过以下命令安装:

sudo apt update
sudo apt install -y mongodb-org-tools

2. 执行备份操作

基本逻辑备份(全量)

使用mongodump命令备份所有数据库,备份文件以BSON格式存储到指定目录(如/backups/mongodb):

mongodump --out /backups/mongodb/$(date +%Y%m%d%H%M%S)

备份特定数据库/集合

若只需备份单个数据库(如mydb)或集合(如mycollection),可添加对应参数:

# 备份特定数据库
mongodump --db mydb --out /backups/mongodb/$(date +%Y%m%d%H%M%S)

# 备份特定集合
mongodump --db mydb --collection mycollection --out /backups/mongodb/$(date +%Y%m%d%H%M%S)

压缩备份文件(可选但推荐)

为节省存储空间,可使用tar命令压缩备份目录:

tar -czvf /backups/mongodb_$(date +%Y%m%d%H%M%S).tar.gz /backups/mongodb/$(date +%Y%m%d%H%M%S)
rm -rf /backups/mongodb/$(date +%Y%m%d%H%M%S)  # 删除原始未压缩目录

认证与远程备份(可选)

若MongoDB启用了认证,需添加--username--password--authenticationDatabase参数;若备份到远程服务器,可通过scp传输:

# 认证备份
mongodump --username admin --password 123456 --authenticationDatabase admin --out /backups/mongodb/$(date +%Y%m%d%H%M%S)

# 远程传输(本地备份后传输到远程服务器)
scp /backups/mongodb_$(date +%Y%m%d%H%M%S).tar.gz user@remote_server:/remote/backups/

3. 自动化备份(可选)

通过cron定时任务实现每日自动备份,步骤如下:

创建备份脚本

新建脚本文件(如/usr/local/bin/mongodb_backup.sh),内容如下:

#!/bin/bash
BACKUP_DIR="/var/backups/mongodb"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/mongodb_backup_$TIMESTAMP.tar.gz"
LOG_FILE="/var/log/mongodb_backup.log"

# 创建备份目录(若不存在)
mkdir -p $BACKUP_DIR

# 执行备份并记录日志
echo "$(date '+%Y-%m-%d %H:%M:%S') Starting backup..." >> $LOG_FILE
mongodump --out=$BACKUP_DIR/$TIMESTAMP >> $LOG_FILE 2>&1
tar -czvf $BACKUP_FILE $BACKUP_DIR/$TIMESTAMP >> $LOG_FILE 2>&1
rm -rf $BACKUP_DIR/$TIMESTAMP >> $LOG_FILE 2>&1

if [ $? -eq 0 ]; then
    echo "$(date '+%Y-%m-%d %H:%M:%S') Backup completed: $BACKUP_FILE" >> $LOG_FILE
else
    echo "$(date '+%Y-%m-%d %H:%M:%S') Backup failed" >> $LOG_FILE
fi

设置脚本权限

sudo chmod +x /usr/local/bin/mongodb_backup.sh

添加cron任务

编辑当前用户的crontab文件:

crontab -e

添加以下行(每日凌晨2点执行备份):

0 2 * * * /usr/local/bin/mongodb_backup.sh

4. 备份注意事项

二、恢复流程

1. 准备工作

停止MongoDB服务

恢复前需停止MongoDB服务,防止数据冲突:

sudo systemctl stop mongod

备份现有数据(可选但强烈建议)

恢复前备份当前数据目录(默认/var/lib/mongodb),防止恢复失败导致数据丢失:

sudo cp -R /var/lib/mongodb /var/lib/mongodb-backup-$(date +%Y%m%d)

2. 执行恢复操作

解压备份文件(若已压缩)

若备份文件为压缩格式,需先解压:

tar -xzvf /backups/mongodb_20251019120000.tar.gz -C /tmp  # 解压到临时目录

基本逻辑恢复(全量)

使用mongorestore命令恢复备份目录中的所有数据库:

mongorestore /tmp/mongodb_backup_20251019120000

恢复特定数据库/集合

使用oplog恢复(增量恢复)

若备份时启用了复制集且需要恢复到某一时间点,可使用--oplogReplay参数回放oplog:

mongorestore --db mydb --oplogReplay /tmp/mongodb_backup_20251019120000

3. 启动MongoDB服务

恢复完成后,启动MongoDB服务:

sudo systemctl start mongod

4. 验证恢复结果

使用mongo shell连接数据库,检查数据是否恢复成功:

mongo
use mydb
show collections
db.mycollection.find().pretty()

5. 恢复注意事项

通过以上流程,可在Debian系统上实现MongoDB的安全备份与可靠恢复,确保数据的高可用性。

0
看了该问题的人还看了