博客
关于我
mongodb的HA方案
阅读量:170 次
发布时间:2019-02-26

本文共 1970 字,大约阅读时间需要 6 分钟。

关系型数据库与非关系型数据库的对比分析

关系型数据库

关系型数据库是最常用的数据库类型之一,其核心特点是基于数据模型进行操作。由于依赖数据模型,关系型数据库支持复杂的查询操作,尤其是在多个表之间进行联表操作时,通过SQL语句可以轻松实现。

优点:

  • 数据安全性高:数据直接存储于硬盘,硬件故障不会导致数据丢失。
  • 易于管理:通过SQL语句实现复杂查询操作。
  • 缺点:

  • 对内存要求较高:海量数据或复杂查询会占用大量内存。
  • 查询效率较低:在多表操作时可能耗时较长。
  • 非关系型数据库

    非关系型数据库以MongoDB为代表,具有以下特点:

  • 部署简单:无需复杂的关系模型,操作更加轻松。
  • 高效处理:通过虚拟内存+持久化存储,写操作速度快。
  • 不支持联表查询:无法直接关联多个表。
  • 处理海量数据能力强:内存级存储,查询速度快。
  • 优点:

  • 内存级存储:数据读取和查询速度极快。
  • 强大的处理能力:适合海量数据和复杂查询。
  • 部署简单:无需复杂的关系模型,配置轻松。
  • 缺点:

  • 无法进行联表查询:不适合需要关联多个表的场景。
  • MongoDB操作示例

    查询操作:

    db.getCollection('classes').find({ teachers: 1534 });

    排序操作:

    db.getCollection('classes').find().sort({ name: 1 });

    分页操作:

    db.getCollection('classes').find({ name: 1 }).limit(2); // 返回前两条记录db.getCollection('classes').find({ name: 1 }).limit(2).skip(3); // 返回第3、4、5条记录

    更新操作:

    db.BATCH_FLOWS_POLICY_TEMPLATE.update({ name: "abc" }, { $set: { global_name: "" } });

    批量更新:

    db.BATCH_FLOWS_POLICY_TEMPLATE.update({}, { $unset: { global_name: "" } }, { multi: true });

    统计行数:

    db.getCollection('classes').find({}).count();

    MongoDB配置与管理

    主节点配置:/etc/mongodb.conf中添加:

    master = truebind_ip = 1.1.1.1

    副节点配置:/etc/mongodb.conf中添加:

    slave = truesource = master_ip:27017

    查看数据库状态:

    systemctl status mongod.service

    故障转移测试:

  • 停止主节点:
  • mongo -u admin -p adminpwd rs.status()
    1. 查看状态:
    2. rs.status()

      MongoDB环境配置

      环境变量:

      export MONGO_URL='mongodb://1.1.1.1:27017,2.2.2.2:27017/'

      备份路由器设置:/etc/mongodb.conf中添加:

      second路由器配置rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "1.1.1.1:27017" }, { _id: 1, host: "2.2.2.2:27017" } ] })

      MongoDB管理命令

      创建集合:

      db.snmp.insert({ ip: "3.3.3.3", community: "cisco" });

      查询集合:

      db.snmps.find();

      MongoDB常用工具

      工具函数:

      • get_docs_by_criteria:支持联合查询。
      • get_docs_by_ids:支持批量查询多个ID。
      • insert_multi_docs:支持批量插入数据。
      • get_multi_sort:支持排序查询。

      数据库操作:

      • update:根据条件更新数据。
      • set:插入新数据。
      • update_by_criter:根据条件更新数据。

      MongoDB高级配置

      HA备份设置:确保备份路由器上有足够的存储空间,并配置:

      myrs:SECONDARY> db.getMongo().setSlaveOk();

      故障转移测试:

    3. 停止主节点:
    4. myrs:PRIMARY> use adminmyrs:PRIMARY> db.shutdownServer()
      1. 查看状态:
      2. rs.status()

        通过以上配置和操作,可以有效管理MongoDB数据库,确保数据的高效存储和快速查询,同时实现高可用性和数据冗余。

    转载地址:http://mnky.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现djb2哈希算法(附完整源码)
    查看>>
    Objective-C实现DNF排序算法(附完整源码)
    查看>>
    Objective-C实现doomsday末日算法(附完整源码)
    查看>>
    Objective-C实现double factorial iterative双阶乘迭代算法(附完整源码)
    查看>>
    Objective-C实现double factorial recursive双阶乘递归算法(附完整源码)
    查看>>
    Objective-C实现double hash双哈希算法(附完整源码)
    查看>>
    Objective-C实现double linear search recursion双线性搜索递归算法(附完整源码)
    查看>>
    Objective-C实现double linear search 双线性搜索算法(附完整源码)
    查看>>
    Objective-C实现DoublyLinkedList双链表的算法(附完整源码)
    查看>>
    Objective-C实现DoublyLinkedList双链表算法(附完整源码)
    查看>>
    Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
    查看>>
    Objective-C实现Edmonds-Karp算法(附完整源码)
    查看>>
    Objective-C实现EEMD算法(附完整源码)
    查看>>
    Objective-C实现EM算法(附完整源码)
    查看>>
    Objective-C实现EM算法(附完整源码)
    查看>>
    Objective-C实现entropy熵算法(附完整源码)
    查看>>
    Objective-C实现euclidean distance欧式距离算法(附完整源码)
    查看>>
    Objective-C实现Euclidean GCD欧几里得最大公约数算法(附完整源码)
    查看>>
    Objective-C实现euclideanDistance欧氏距离算法(附完整源码)
    查看>>
    Objective-C实现euler method欧拉法算法(附完整源码)
    查看>>