ubuntu

MongoDB备份恢复在Ubuntu上怎么操作

小樊
49
2025-10-08 05:46:48
栏目: 云计算

一、准备工作

  1. 安装MongoDB工具包
    在Ubuntu上,mongodump(备份)和mongorestore(恢复)工具包含在mongodb-tools包中。若未安装,可通过以下命令安装:

    sudo apt update
    sudo apt install mongodb-tools
    
  2. 确认MongoDB服务状态
    备份/恢复前需确保MongoDB服务正在运行:

    sudo systemctl start mongod  # 启动服务
    sudo systemctl enable mongod # 设置开机自启
    sudo systemctl status mongod # 检查状态(显示"active (running)"即为正常)
    

二、MongoDB备份操作

  1. 使用mongodump备份数据
    mongodump是MongoDB自带的全量备份工具,支持备份整个实例、特定数据库或集合。

    • 备份所有数据库
      将数据备份到指定目录(如/backup/mongodb_$(date +%Y%m%d),按日期命名便于管理):
      sudo mkdir -p /backup  # 创建备份目录(可选)
      sudo mongodump --out /backup/mongodb_$(date +%Y%m%d)
      
    • 备份特定数据库(如mydb):
      sudo mongodump --db mydb --out /backup/mongodb_$(date +%Y%m%d)
      
    • 备份特定集合(如mydb中的users集合):
      sudo mongodump --db mydb --collection users --out /backup/mongodb_$(date +%Y%m%d)
      
  2. 压缩备份文件
    为节省存储空间,可使用tar命令压缩备份目录:

    sudo tar -czvf /backup/mongodb_backup_$(date +%Y%m%d).tar.gz /backup/mongodb_$(date +%Y%m%d)
    

    压缩后可通过ls -lh命令查看压缩包大小,确认节省空间效果。

  3. 自动化定期备份(可选)
    使用cron定时任务实现每日自动备份(如凌晨2点):

    • 编辑当前用户的crontab文件:
      crontab -e
      
    • 添加以下行(按日期命名备份目录,保留7天备份):
      0 2 * * * sudo mkdir -p /backup && sudo mongodump --out /backup/mongodb_$(date +\%Y\%m\%d) && sudo tar -czvf /backup/mongodb_backup_$(date +\%Y\%m\%d).tar.gz /backup/mongodb_$(date +\%Y\%m\%d) && sudo find /backup -name "mongodb_backup_*.tar.gz" -mtime +7 -exec rm {} \;
      
    • 保存退出后,cron会自动执行每日备份任务。

三、MongoDB恢复操作

  1. 停止MongoDB服务(可选但推荐)
    恢复前停止服务可避免数据冲突(若为生产环境,建议在低峰期操作):

    sudo systemctl stop mongod
    
  2. 使用mongorestore恢复数据
    mongorestoremongodump的配套恢复工具,支持恢复整个实例、特定数据库或集合。

    • 恢复所有数据库
      将备份目录(如/backup/mongodb_20250930)中的所有数据库恢复到MongoDB实例:
      sudo mongorestore /backup/mongodb_20250930
      
    • 恢复特定数据库(如mydb):
      sudo mongorestore --db mydb /backup/mongodb_20250930/mydb
      
    • 恢复特定集合(如mydb中的users集合):
      sudo mongorestore --db mydb --collection users /backup/mongodb_20250930/mydb/users.bson
      
    • 恢复时覆盖现有数据(使用--drop选项):
      若目标数据库已存在,可先删除现有数据再恢复:
      sudo mongorestore --drop --db mydb /backup/mongodb_20250930/mydb
      
  3. 启动MongoDB服务
    恢复完成后,启动MongoDB服务以恢复正常访问:

    sudo systemctl start mongod
    
  4. 验证恢复结果
    使用mongo shell连接MongoDB,检查数据是否恢复成功:

    mongo  # 进入mongo shell
    use mydb  # 切换到目标数据库
    db.users.find()  # 查询目标集合(如users)的数据
    

    若能正常查询到备份时的数据,则说明恢复成功。

四、注意事项

0
看了该问题的人还看了