【Mongo】 环境搭建部署

5 篇文章 0 订阅
4 篇文章 0 订阅

下载安装

机器环境: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

官方推荐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/

复制集(三个节点)

搭建三个节点的最简复制集,一个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 runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

# network interfaces
net:
  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: configsvr
    replication:
      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" } ) //这对集合打开分片
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值