CentOS Mongodb 数据备份与恢复

2024-10-23

本文介绍:

一、Mongodb 备份与恢复

  1. mongodump

mongodump 是数据备份命令,常见选项如下:

# 备份本机 27017 端口的 mydatabase 数据库,输出路径 /backup/
$ mongodump --host localhost --port 27017 --db mydatabase --out /backup/

# 使用数据库连接字符串备份数据,输出路径 /backup/
$ mongodump --uri mongodb://user:password@localhost:27017/mydatabase --out /backup/

# 备份本机 27017 端口的 mydatabase 数据库,通过用户名密码验证权限,输出路径 /backup/
$ mongodump --host localhost --port 27017 --db mydatabase --username xxx --password yyy --out /backup/

# 备份本机 27017 端口的 mydatabase 数据库,只备份 users 集合,输出路径 /backup/
$ mongodump --host localhost --port 27017 --db mydatabase --collection users --out /backup/

# 备份本地 27017 端口的 mydatabase 数据库,并使用 gzip 压缩,输出路径 /backup/
$ mongodump --host localhost --port 27017 --db mydatabase --out /backup/ --gzip
  1. mongorestore

mongorestore 是数据恢复命令,常见选项如下:

# 恢复整个数据库
$ mongorestore --host localhost --port 27017 --db mydatabase /backup/mongodb/mydatabase

# 恢复单个集合
$ mongorestore --host localhost --port 27017 --db mydatabase --collection users /backup/dump/mydatabase/users.bson

# 使用连接字符串恢复
$ mongorestore --uri mongodb://user:password@localhost:27017/mydatabase /backup/dump/mydatabase

# 恢复并解压
$ mongorestore --host localhost --port 27017 --db mydatabase --gzip /backup/dump/mydatabase

# 在恢复前删除目标集合
$ mongorestore --host localhost --port 27017 --db mydatabase --drop /backup/dump/mydatabase

二、定时备份数据

  1. 在 /usr/local/bin 目录下创建 mongodb_backup.sh 文件
#!/bin/bash

# 备份目录路径
BACKUP_DIR="/var/backups/mongodb"
# 时间戳,用于创建备份文件名
DATE=$(date +%Y%m%d%H%M%S)
# 备份文件名
BACKUP_FILE="$BACKUP_DIR/mongodb_backup_$DATE"
# 日志文件路径
LOG_FILE="/var/log/mongodb_backup.log"

# 这部分需要修改为你自己的配置
MONGO_HOST=""
MONGO_PORT=""
MONGO_DB=""
MONGO_USER=""
MONGO_PWD=""

# 创建备份目录
mkdir -p $BACKUP_DIR

# 执行 mongodump 备份并记录日志
mongodump --host $MONGO_HOST --port $MONGO_PORT --db $MONGO_DB --username $MONGO_USER --password $MONGO_PWD --out $BACKUP_FILE >> $LOG_FILE 2>&1

# 压缩备份文件并记录日志
tar -czf $BACKUP_FILE.tar.gz -C $BACKUP_DIR mongodb_backup_$DATE >> $LOG_FILE 2>&1

# 删除原始备份目录
rm -rf $BACKUP_DIR/mongodb_backup_$DATE

# 删除超过 7 天的备份文件并记录日志
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -exec rm {} \; >> $LOG_FILE 2>&1

# 打印脚本执行结果并记录日志
echo "MongoDB backup completed at $(date)" >> $LOG_FILE 2>&1
  1. 给脚本添加执行权限
$ chmod +x backup_mongodb.sh
  1. 测试备份脚本

在终端输入如下命令,观测脚本执行结果。

$ /usr/local/bin/mongodb_backup.sh

如果有报错,大多是数据库连接问题,检查数据库相关配置是否正确。

  1. 添加定时任务

执行如下命令会打开一个定时任务编辑器

$ crontab -e

添加如下配置,含义是每天凌晨3点执行备份脚本。

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

返回首页

本文总阅读量  次
总访问量: 
总访客量: