温馨提示×

Ubuntu上MongoDB如何进行备份恢复

小樊
43
2025-10-25 04:40:49
栏目: 云计算

Ubuntu上MongoDB备份恢复操作指南

一、准备工作

在进行备份恢复前,需确保以下条件满足:

  1. 安装MongoDB工具包:若未安装mongodb-tools(包含mongodumpmongorestore等工具),需通过以下命令安装:
    sudo apt update
    sudo apt install mongodb-tools
    
  2. 确认MongoDB服务状态:备份恢复前需确保MongoDB服务正在运行:
    sudo systemctl start mongod  # 启动服务
    sudo systemctl enable mongod # 设置开机自启
    

以上步骤适用于Ubuntu 22.04及以上版本,MongoDB 4.x/5.x/6.x/7.x版本均兼容。

二、备份操作

1. 基本全量备份(所有数据库)

使用mongodump工具备份所有数据库,备份文件以目录形式存储(每个数据库一个子目录):

mongodump --out /path/to/backup/directory

示例(备份到/home/user/mongodb_backup):

mongodump --out /home/user/mongodb_backup

2. 备份特定数据库

若只需备份单个数据库,可通过--db参数指定数据库名:

mongodump --db your_database_name --out /path/to/backup/directory

示例(备份mydatabase数据库到/home/user/mongodb_backup):

mongodump --db mydatabase --out /home/user/mongodb_backup

3. 备份特定集合

若只需备份数据库中的某个集合(表),可结合--db--collection参数:

mongodump --db your_database_name --collection your_collection_name --out /path/to/backup/directory

示例(备份mydatabase中的mycollection集合到/home/user/mongodb_backup):

mongodump --db mydatabase --collection mycollection --out /home/user/mongodb_backup

4. 带认证的备份

若MongoDB启用了身份验证,需通过--username--password--authenticationDatabase参数指定认证信息:

mongodump --host localhost --port 27017 --username your_username --password your_password --authenticationDatabase admin --out /path/to/backup/directory

示例(备份mydatabase/home/user/mongodb_backup,认证数据库为admin):

mongodump --host localhost --port 27017 --username admin --password secret --authenticationDatabase admin --db mydatabase --out /home/user/mongodb_backup

5. 压缩备份文件

为节省存储空间,可使用管道将备份输出压缩:

mongodump --out /path/to/backup/directory | gzip > /path/to/backup/directory.tar.gz

示例(压缩备份到/home/user/mongodb_backup.tar.gz):

mongodump --out /home/user/mongodb_backup | gzip > /home/user/mongodb_backup.tar.gz

6. 自动化备份(Cron定时任务)

通过crontab设置定时任务,实现每日自动备份(如凌晨2点):

  1. 编辑当前用户的crontab文件:
    crontab -e
    
  2. 添加以下内容(备份到/backups/mongodb,文件名包含日期):
    0 2 * * * mongodump --out /backups/mongodb/$(date +\%Y-\%m-\%d)
    
  3. 保存退出后,cron会自动执行每日备份。

三、恢复操作

1. 基本全量恢复

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

mongorestore /path/to/backup/directory

示例(恢复/home/user/mongodb_backup中的所有数据库):

mongorestore /home/user/mongodb_backup

2. 恢复特定数据库

若只需恢复某个数据库,可通过--db参数指定数据库名(备份目录需为该数据库的子目录):

mongorestore --db your_database_name /path/to/backup/directory/your_database_name

示例(恢复/home/user/mongodb_backup/mydatabase中的mydatabase数据库):

mongorestore --db mydatabase /home/user/mongodb_backup/mydatabase

3. 恢复特定集合

若只需恢复某个集合,可结合--db--collection参数(备份文件为.bson格式):

mongorestore --db your_database_name --collection your_collection_name /path/to/backup/directory/your_database_name/your_collection_name.bson

示例(恢复/home/user/mongodb_backup/mydatabase/mycollection.bson中的mycollection集合到mydatabase数据库):

mongorestore --db mydatabase --collection mycollection /home/user/mongodb_backup/mydatabase/mycollection.bson

4. 带认证的恢复

若MongoDB启用了身份验证,需通过--username--password--authenticationDatabase参数指定认证信息:

mongorestore --host localhost --port 27017 --username your_username --password your_password --authenticationDatabase admin /path/to/backup/directory

示例(恢复/home/user/mongodb_backup中的所有数据库,认证数据库为admin):

mongorestore --host localhost --port 27017 --username admin --password secret --authenticationDatabase admin /home/user/mongodb_backup

5. 恢复前删除现有数据

若需覆盖现有数据库(清空后再恢复),可添加--drop参数:

mongorestore --drop /path/to/backup/directory

示例(恢复并删除mydatabase中的现有数据):

mongorestore --drop --db mydatabase /home/user/mongodb_backup/mydatabase

四、注意事项

  1. 备份文件存储:备份文件应存储在安全位置(如异地服务器、云存储),避免单点故障导致数据丢失。
  2. 备份验证:定期通过mongorestore --dryRun命令模拟恢复过程,检查备份文件的完整性。
  3. 权限设置:备份目录需赋予适当的读写权限(如chmod -R 700 /path/to/backup/directory),防止未授权访问。
  4. 监控与告警:通过日志(如/var/log/mongodb/mongod.log)监控备份过程,设置失败告警(如邮件、短信通知)。
  5. 副本集集成:生产环境建议启用MongoDB副本集(至少3个节点),提升数据冗余性,减少备份窗口。

0