• 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

  • 相关阅读:
    【Stage3D学习笔记续】山寨Starling(十):高效游戏设计、纹理集和ATF
    【Stage3D学习笔记续】山寨Starling(九):上下文丢失处理方法
    【Stage3D学习笔记续】山寨Starling(八):核心优化(批处理)的实现
    echarts 百度图表
    java读properties文件 乱码
    百度地图 JSAPI使用 mark 定位地址 与周边覆盖物
    jstl format date
    MultipartEntity 乱码
    log4j与commons-logging,slf4j的关系
    maven 引入 net sf jsonlib 报错 has borken path
  • 原文地址:https://www.cnblogs.com/jacle169/p/9608776.html
Copyright © 2020-2023  润新知