zoukankan      html  css  js  c++  java
  • Mongodb4.0副本集构建

    目前最新的mongodb4.0.2已经支持事务这个重要特性,需要使用的话必须是复制或副本集,这是第一篇先研发如何构建副本集,因为副本集是目前最低成本的高可用群集方式。

    1.准备三台服务器,本次使用是的ubuntu16.04。分别在三台服务器执行如下安装指定,参考官方安装连接:https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/?_ga=2.66639470.1117419885.1536141422-1139377698.1531391990

    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

    sudo apt-get update

    sudo apt-get install -y mongodb-org

    安装完成,以下是检测是否安装完成

    sudo apt-get install -y mongodb-org=4.0.x mongodb-org-server=4.0.x mongodb-org-shell=4.0.x mongodb-org-mongos=4.0.x mongodb-org-tools=4.0.x

    2. 三台服务器构建并启动数据库,本示例使用 /usr/mongo目录

    mkdir /usr/mongo

    chmod -R 777 /usr/mongo

    cd /usr/mongo

    mkdir data

    mkdir log

    //构建key file用于群集各数据库间身份验证(必须有此步才可以把最终的数据库登陆身份认证信息同步到各节点中)构建完成后复制key_file文件到各节点相同位置

    openssl rand -base64 756 > data/key_file
    chmod 400 data/key_file

    //构建数据库配置文件

    vim config.conf

    //添加以下配置内容(并复制到各节点相同位置)

    ```

    systemLog:
      destination: file
      path: /usr/mongo/log/mongod.log
      logAppend: true
    storage:
      journal:
       enabled: true
      dbPath: /usr/mongo/data
      directoryPerDB: true
      engine: wiredTiger
      wiredTiger:
       engineConfig:
        cacheSizeGB: 2
        directoryForIndexes: true
       collectionConfig:
        blockCompressor: snappy
       indexConfig:
        prefixCompression: true
    net:
      bindIp: 0.0.0.0
      port: 27017
      maxIncomingConnections: 40000
    replication:
         replSetName: "rs1"
         oplogSizeMB: 1024
    security:
         authorization: enabled
         keyFile: /usr/mongo/data/key_file

    ```

    //构建log数据库日志文件

    vim log/mongod.log

    3.分别在三台服务器以免身份验证方式启动数据库

    mongod -f config.conf

    4.构建账号供应用程序连接群集鉴权(本例只添加最高权限账号root) 尽量在此步连接单实例先创建账号

    //在主服务器连接本机mongodb实例

    mongo 127.0.0.1:27017/admin

    //创建root账号

    db.createUser(
        {
          user: "root",
          pwd: "password",
         
          roles: [{"role":"root","db":"admin"}],

        }
    )

    5.生效副本集(只需要在主节点操作一次)

    vim initreplica.js

    //添加以下内容(ip地址根据自己真实情况填写, priority是权重值,值最大默认为启动时主节点)

    ```

    var cfg = { _id: 'rs1',
         members: [
             { _id: 0, host:'192.168.200.244:27017', priority: 100},
             { _id: 1, host:'192.168.200.242:27017', priority: 50},
             { _id: 2, host:'192.168.200.243:27017', arbiterOnly: true}
         ]
    };

    var error = rs.initiate(cfg);
    printjson(error);

    ```

    //保存 文件

    //执行生效指令

    mongo 127.0.0.1:27017/admin initreplica.js

    //执行结果如下

    MongoDB shell version v4.0.2
    connecting to: mongodb://127.0.0.1:27017/admin
    MongoDB server version: 4.0.2
    {
         "ok" : 1,
         "operationTime" : Timestamp(1536314326, 1),
         "$clusterTime" : {
             "clusterTime" : Timestamp(1536314326, 1),
             "signature" : {
                 "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                 "keyId" : NumberLong(0)
             }
         }
    }

    6.以鉴权方式启动群集(三台机相同启动方式)

    mongod -f config.conf –auth

    //启动完成如下显示并程序常驻

    2018-09-08T11:06:59.452+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'

    //此时想查看当前数据库启动情况可以执行如下指令

    vim log/mongod.log

    7.数据库工具连接到集群

    mongodb://root:password@192.168.200.244:27017,192.168.200.242:27017,192.168.200.243:27017/?readPreference=primaryPreferred&replicaSet=rs1&authSource=admin

    8.工具推荐使用nosqlbooster,有免费版,试用期间功能一切可用,试用结束不能导入导出数据和没有智能提示功能。但会一直可用,下载地址:https://nosqlbooster.com

  • 相关阅读:
    2020年终将过去
    Opus从入门到精通(一):简介
    0907 RTCP FB
    ClickHouse源码笔记6:探究列式存储系统的排序
    C++雾中风景17:模板的非推断语境与std::type_identity
    ClickHouse源码笔记5:聚合函数的源码再梳理
    ClickHouse源码笔记4:FilterBlockInputStream, 探寻where,having的实现
    ClickHouse源码笔记3:函数调用的向量化实现
    Doris开发手记1:解决蛋疼的MySQL 8.0连接问题
    声音克隆_论文翻译:2019_Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis
  • 原文地址:https://www.cnblogs.com/jacle169/p/9608776.html
Copyright © 2011-2022 走看看