zoukankan      html  css  js  c++  java
  • MongoDB 持久化

    复制

    MongoDB复制是将数据同步在多个服务器的过程。

    复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

    • 保障数据的安全性

    • 数据高可用性 (24*7)

    • 灾难恢复

    • 无需停机维护(如备份,重建索引,压缩)

    • 分布式读取数据

    MongoDB复制是主从结构:一主一从或一主多从

    主从节点设置

    • 启动一个MongoDB服务,连接后使用命令rs.initiate()来启动一个新的副本集

      • 使用rs.conf()来查看副本集的配置,使用rs.status()命令查看副本集状态

    • 添加从节点:使用rs.add(HOST_NAME:PORT)方法来添加副本集的成员

      • 使用命令db.isMaster()判断当前运行的Mongo服务是否为主节点

    MongoDB中只能通过主节点将Mongo服务添加到副本集中,主从在主机宕机后所有服务将停止,而副本集在主机宕机后,副本会接管主节点成为主节点,不会出现宕机的情况。

    分片

    分片:是另一种集群,当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。

    • 复制所有的写入操作到主节点

    • 延迟的敏感数据会在主节点查询

    • 单个副本集限制在12个节点

    • 当请求量巨大时会出现内存不足。

    • 本地磁盘不足

    • 垂直扩展价格昂贵

    下图展示了在MongoDB中使用分片集群结构分布:

    img

    上图中主要有如下所述三个主要组件:

    • Shard:

      用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个replica set承担,防止主机单点故障

    • Config Server:

      mongod实例,存储了整个 ClusterMetadata,其中包括 chunk信息。

    • Query Routers:

      前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

    备份和恢复

    备份

    mongodump命令可以导出所有数据到指定目录中

    mongodump -h dbhost -d dbname -o dbdirectory
    • -h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

    • -d:需要备份的数据库实例,例如:test

    • -o:备份的数据存放位置,例如:c:datadump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

    恢复

    mongorestore 命令恢复备份的数据

    mongorestore -h <hostname><:port> -d dbname <path>
    • --host <:port>, -h <:port>:

      MongoDB所在服务器地址,默认为: localhost:27017

    • --db , -d :

      需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

    • --drop:

      恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

    • <path>:

      mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:datadump est。

      你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。

    • --dir:

      指定备份的目录

      你不能同时指定 <path> 和 --dir 选项。

    监控

    MongoDB中提供了mongostat 和 mongotop 两个命令来监控MongoDB的运行情况

    mongostat

    mongostat是mongodb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出;进入mongodbin执行mongostat命令

    mongotop

    mongotop也是mongodb下的一个内置工具,跟踪一个MongoDB的实例,查看哪些大量的时间花费在读取和写入数据。 mongotop提供每个集合的水平的统计数据。默认情况下,mongotop返回值的间隔为一秒

    进入mongodbin执行mongotop命令,可以在后面指定间隔时间

  • 相关阅读:
    sprintboot 发布
    springmvc 常用注解
    react-navigation使用技巧
    Windows 10提示你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
    Python 精选文章
    自动化办公:python操作Excel
    VSCode 插件
    使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
    纯洁的微笑
    初进python世界之数据类型
  • 原文地址:https://www.cnblogs.com/yjh1995/p/14164223.html
Copyright © 2011-2022 走看看