【Mongo】 环境搭建部署

来源:互联网 发布:淘宝达人申请步骤 编辑:程序博客网 时间:2024/06/06 00:20

下载安装

机器环境:redhat linux
安装方式:yum
安装版本:3.4

  • Configure repository.
    创建文件 /etc/yum.repos.d/mongodb-enterprise.repo
    [mongodb-enterprise]    name=MongoDB Enterprise Repository    baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/3.4/$basearch/    gpgcheck=1    enabled=1    gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
  • Install the MongoDB Enterprise packages and associated tools.
     sudo yum install -y mongodb-enterprise
  • default file path
    /etc/mongod.conf 配置文件    /var/log/mongodb 日志路径    /var/lib/mongo 默认的数据文件    /usr/bin/mongo 二进制文件    /var/run/mongodb 进程文件
  • run MongoDB
     sudo service mongod start      sudo service mongod stop     sudo service mongod restart     指定配置文件启动     mongod -f /etc/mongod.conf     mongod --config /etc/mongod.conf
  • Shell
     mongo 127.0.0.1:27017
  • Official reference
    https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat/

官方推荐yum安装,但是yum不可用或者使用不便时也可tar包安装,方式如下:

机器环境:redhat 7.3
安装方式:tar包

  • Install any missing dependencies.

    RedHat Version 7

yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl libpcap lm_sensors-libs net-snmp net-snmp-agent-libs openldap openssl rpm-libs tcp_wrappers-libs
  • Download

官网下载中心
tar -zxvf mongodb-linux-s390x-enterprise-rhel72-3.4.5.tgz 下载后解压缩tar包

  • Path

cp ~/mongodb-linux-s390x-enterprise-rhel72-3.4.5/bin/* /bin/

  • Official reference
    https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-linux/

复制集(三个节点)

搭建三个节点的最简复制集,一个primary节点,两个secondary节点

  • 配置文件
# mongod.conf# for documentation of all options, see:#   http://docs.mongodb.org/manual/reference/configuration-options/# where to write logging data.systemLog:  destination: file  logAppend: true  path: /var/log/mongodb/mongod.log# Where and how to store data.storage:  dbPath: /opt/media/data/mongo  directoryPerDB: true  journal:    enabled: true# how the process runsprocessManagement:  fork: true  # fork and run in background  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile# network interfacesnet:  port: 27017#  bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.replication:  replSetName: rs0
  • 启动实例
    按照配置文件配置primary.conf以及secondary.conf并启动三个实例
    mongod -f /opt/conf/mongo/primary.conf    mongod -f /opt/conf/mongo/secondary.conf`
  • 初始化复制集
    在预定的primary节点上打开mongo shell
    mongo 127.0.0.1:27017
  • rs.initiate()初始化
rs.initiate( {   _id : "rs0",   members: [ { _id : 0, host : "实例的主机ip:27017" } ]})host:实例的ip和端口,注意:这里不能直接使用rs.initiate(),这样会采用默认的复制集配置,机器名字和端口,复制集连接会出错你也可以使用下面的方式,shell的本质是js脚本config={_id : "rs0",members : [{_id : 0, host : “实例的主机ip:27017”}]}  回车后再输入  rs.initiate(config);
  • rs.conf() 查看初始化复制集配置
  • 添加secondary节点
    rs.add("secondary_1_ip:port")    rs.add("secondary_2_ip:port")
  • 查看复制集的状态
     rs.status()

分片部署

部署简单的分片集群,包括两个数据复制集(rs0,rs1)、一个配置复制集(rsc),两个mongos

  • 复制集转化为分片集群
    1、查看复制集primary与secondary

    rs.status()

    2、分别重启secondary节点使用 –shardsvr选项

    mongod --replSet "rs0" --shardsvr --port 27017

    或者
    db.shutdownServer() 停止服务
    修改配置文件secondary.conf 增加配置

    sharding:  clusterRole: shardsvr

    重启服务
    mongod -f /opt/conf/mongo/secondary.conf

    3、降级主节点后重启如2步骤重启

    rs.stepDown()

    4、可以强制某个节点为主节点
    通过设置优先级或者暂时冻结其他节点的方式
    https://docs.mongodb.com/manual/tutorial/force-member-to-be-primary/

  • Create the Config Server Replica Set
    配置文件增加

    sharding:  clusterRole: configsvrreplication:  replSetName: <setname>

    启动服务

    mongod -f /opt/conf/mongo/config.conf

    初始化复制集(3.4版本以后config Server必须配置成复制集)

    rs.initiate(  {    _id: "<replSetName>",    configsvr: true,    members: [      { _id : 0, host : "ip1:27018" },      { _id : 1, host : "ip2:27018" },      { _id : 2, host : "ip3:27018" }    ]  })
  • Connect a mongos to the Sharded Cluster

    配置文件删掉无用的storage相关,增加

    sharding:  configDB: <configReplSetName>/cfg1.example.net:27018,cfg2.example.net:27018,...

    启动服务注意mongos启动

    mongos --config <path-to-config>

    mongo shell 连接mongos

    mongo --host <hostname> --port <port> //mongos的ip和端口
  • 分片加入集群
    连接mongos的mongo shell中执行

    sh.addShard( "<replSetName>/s1-mongo1.example.net:27017") //选择复制集中的一个即可
  • Enable Sharding

    sh.enableSharding("<database>") //先给数据库打开分片sh.shardCollection("<database>.<collection>", { <key> : "hashed" } ) //这对集合打开分片