古道长亭

Contact me with ixiaoqiang0011@gmail.com


  • 首页

  • 归档

  • 分类

  • 关于

  • Book

  • 搜索

mongodb 监控和数据备份恢复

时间: 2023-01-28   |   分类: mongodb   | 字数: 1826 字 | 阅读约: 4分钟 | 阅读次数:

mongodb 监控和数据备份恢复

仅作了解即可…..

1. mongodb监控

1.1 mongodb ops manager简介

MongoDB Ops Manager(MMS)是用于监控和备份MongoDB的基础设施服务。MongoDB OPS Manager是一个Web应用程序,它需要1个mongodb数据库,这个数据库是用来支持本身的MongoDB OPS Manager来运行的。因此,如果我们想要MongoDB OPS Manager运行起来,最少也需要安装一个MongoDB数据库。

1.2 ops manager作用

  • 简易的自动化数据库部署、扩展、升级和任务管理;
  • 通过OPS平台提供的超过100项仪表、图表,可以对mongodb进行多种监控;
  • 支持单节点、分片集群的备份和恢复;

1.3 安装 ops manager

  • 下载ops manager

    https://docs.opsmanager.mongodb.com/current/installation/
    
    https://downloads.mongodb.com/on-prem-mms/tar/mongodb-mms-4.4.21.100.20220217T0528Z-1.x86_64.tar.gz
    
  • 解压

    tar -zxvf .....tar.gz
    
  • 编辑配置文件

    vim conf-mms.properties  #根据自己的mongodb进行配置
    
    vim mms.conf # 改改端口,内存等
    
  • 配置完成,启动ops manager

    ./bin/mongodb-mmsstart

  • 访问OPSManager的首页,进行相应配置

    http://ip:port

1.4 配置ops manager

  • 登录界面
  • 注册账号
  • 使用创建的用户登录,进入到配置页面
  • 按要求填写相应字段即可

1.5 配置ops manager agent

  • 点击界面中 Manage your existing deployment

  • Install agent

    根据我们目标数据库的操作系统,我们可以选择相应的Agent来安装。(PS:实际的操作系统版本可能更多,大致上一致即可,只要能装上)

  • 根据提示安装即可

1.6 监控现有的sharding cluster服务

  • 确保shard集群已启动
  • 在安装好的agent界面继续
  • 配置监控服务,单机/集群都可以
  • 根据提示操作即可
  • 查看监控页面

2. mongodb数据备份与恢复

2.1 备份的目的

  • 防止硬件故障引起的数据丢失

  • 防止人为错误误删数据

  • 时间回溯
  • 监管要求

2.2 备份机制实现方式

  • 全备份

    * 文件系统快照 
    * 复制数据文件 
    * mongodump
    
  • 解决方案

2.3 mongodump

在MongoDB中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。mongodump命令可以通过参数指定导出的数据库或者集合。

mongodump -h dbhost -d dbname -o dbdirectory

mongodump 命令可选参数列表如下所示:

2.4 mongorestore

mongodb使用 mongorestore 命令来恢复备份的数据。

>mongorestore -h <hostname><:port> -d dbname <path>

--db 或者 -d :需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都
会被删除,慎用哦!
mongorestore 最后的一个参数,设置备份数据所在位置,例如:/root/bdatas/lg,你不能同时指定 和 --dir 选项,
--dir也可以设置备份目录

2.5 备份和恢复的重要选项

mongodump有一个值得一提的选项是 –oplog,注意这是replica set或者master/slave模式专用,standalone模式运行mongodb并不推荐

mongodump的选项:

  • –oplog选项只对全库导出有效,所以不能指定-d选项

  • –oplog的作用:oplog的幂等性:已存在的数据,重做oplog不会重复;不存在的数据重做oplog就可以进入数据库。

看mongorestore的选项:

  • –oplogReplay:可以重放oplog.bson中的操作内容

  • –oplogLimit:回放的时间节点,即此时间之前的数据恢复,假设你后面有误操作,误操作的不恢复

mongorestore -h localhost:37017 –oplogReplay /root/dump

通过 oplog 查询误操作的最后时间

/root/mongodb/bin/bsondump oplog.rs.bson | grep ““op”:“d”” | head

或者 使用

db.oplog.rs.fifind({“op” : “d”}).sort({“ts”:-1})

举例:

mongorestore -h localhost:37017 –oplogReplay –oplogLimit “1443024507:1” /root/dump/local

2.6 全量+增量备份

例

  • 插入两条数据

    use lg 
    db.lg_resume.insert({name:"test1",salary:18000.5}) 
    db.lg_resume.insert({name:"test2",salary:15000.5})
    
  • 全量备份

    ./bin/mongodump --host=192.168.211.136 --port=37017 --out=/root/fullbackup
    
  • 继续插入

    …

  • 增量备份

    ./bin/mongodump --host=192.168.211.136 --port=37017 -d local -c oplog.rs - o=/root/oplog_bak
    
  • 删除所有数据

  • 先恢复全量数据

    ./bin/mongorestore --host=192.168.211.136 --port=37017 --dir=/root/fullbackup
    # 查看数据恢复 
    db.lg_resume.find()
    
  • 恢复数据到指定的时间点

    #改变oplog.rs.bson 为 oplog.bson 删除oplog.rs.metadata.bson
     mv /root/oplog_bak/local/oplog.rs.bson /root/oplog_bak/local/oplog.bson
     rm /root/oplog_bak/local/oplog.rs.metadata.json -rf
    
    # 找出第一次更新的时间 
    use local db.oplog.rs.find({"op" : "u"}).sort({"ts":1}) 
    # 恢复到指定的时间点的数据 
    ./bin/mongorestore --host=192.168.211.136 --port=37017 --oplogReplay -- oplogLimit "1606651336" /root/oplog_bak/local  
    ./bin/mongorestore --host=192.168.211.136 --port=37017 --oplogReplay -- oplogLimit "1606651336:4" /root/oplog_bak/local 
    
    #查看数据恢复 
    use lg 
    db.lg_resume.find()
    
  • 恢复所有增量数据

    ./bin/mongorestore --host=192.168.211.136 --port=37017 --oplogReplay /root/oplog_bak/local 
    
    # 查看数据恢复 
    db.lg_resume.find()
    

2.7 定时备份

  • 准备备份目录

    # 自已定义,如
    mkdir -p /root/backup/mongod_bak/mongod_bak_now 
    /root/backup/mongod_bak/mongod_bak_list
    
  • 编写备份脚本

    shell 脚本

    #!/bin/sh 
    # dump 命令执行路径,根据mongodb安装路径而定 
    DUMP=/root/mongodb/bin/mongodump 
    # 临时备份路径 
    OUT_DIR=/root/backup/mongod_bak/mongod_bak_now 
    # 压缩后的备份存放路径 
    TAR_DIR=/root/backup/mongod_bak/mongod_bak_list 
    # 当前系统时间 
    DATE=`date +%Y_%m_%d%H%M%S` 
    # 数据库账号 
    #DB_USER=user 
    # 数据库密码 
    #DB_PASS=password 
    # 代表删除7天前的备份,即只保留近 7 天的备份 
    DAYS=7 
    # 最终保存的数据库备份文件 
    TAR_BAK="mongod_bak_$DATE.tar.gz" 
    cd $OUT_DIR 
    rm -rf $OUT_DIR/* 
    mkdir -p $OUT_DIR/$DATE 
    $DUMP -h 127.0.0.1 --port 37017 -o $OUT_DIR/$DATE 
    # 压缩格式为 .tar.gz 格式 
    tar -zPcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE
    # 删除 7 天前的备份文件 
    find $TAR_DIR/ -mtime +$DAYS -delete 
    exit
    
  • 修改脚本权限

    chmod +x /root/backup/mongobk.sh
    
  • 添加到crontab

    crontab -e
    
    #表示每天凌晨2点30执行备份 
    30 2 * * * /root/backup/mongobk.sh
    
  • 查看crontab状态

    service crond status
    
  • 查看定时任务和删除定时任务

    crontab -l 
    crontab -r 
    crontab -e
    
#mongodb#
QQ扫一扫交流

标题:mongodb 监控和数据备份恢复

作者:古道长亭

声明: 欢迎加群交流!

如有帮助,欢迎多多交流 ^_^

微信打赏

支付宝打赏

图和Neo4j
mongodb 安全认证
  • 文章目录
  • 站点概览
古道长亭

古道长亭

Always remember that your present situation is not your final destination. The best is yet to come.

226 日志
57 分类
104 标签
GitHub Gitee
友情链接
  • 古道长亭的BOOK
  • JAVA学习
标签云
  • Mysql
  • 搜索引擎
  • Mybatis
  • 容器
  • 架构
  • 消息队列
  • Flink
  • Sharding sphere
  • 流处理
  • 缓存
  • 1. mongodb监控
    • 1.1 mongodb ops manager简介
    • 1.2 ops manager作用
    • 1.3 安装 ops manager
    • 1.4 配置ops manager
    • 1.5 配置ops manager agent
    • 1.6 监控现有的sharding cluster服务
  • 2. mongodb数据备份与恢复
    • 2.1 备份的目的
    • 2.2 备份机制实现方式
    • 2.3 mongodump
    • 2.4 mongorestore
    • 2.5 备份和恢复的重要选项
    • 2.6 全量+增量备份
    • 2.7 定时备份
© 2019 - 2024 京ICP备19012088号-1
0%