banbanbai 发表于 2018-10-26 08:32:56

mongodb服务安装,搭建副本集及原理概述

  ##初始化系统环境,参考文档:服务器系统环境初始化,Centos7系统
  #mongodb下载安装
mkdir -p /server/src /server/logs  
groupadd mongod
  
useradd -s /sbin/nologin -g mongod mongod
  
cat /etc/passwd |grep mongo
  
cd /root
  
   ##安装mongodb 3.0.7版本,若需要其他版本,官网获取下载https://fastdl.mongodb.org/linux/
  
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.0.7.tgz
  
tar zxvf mongodb-linux-x86_64-rhel70-3.0.7.tgz
  
mv mongodb-linux-x86_64-rhel70-3.0.7 /usr/local/mongodb
  
mkdir -p /data/mongodb2/db
  
mkdir /data/mongodb2/log
  
mkdir /data/mongodb2/keyfile
  
chmod 755 !$
  
touch /data/mongodb2/keyfile/security
  
chmod 600 !$
  
echo "xxxxy" > !$
  
cat !$
  
touch /data/mongodb2/log/mongo.log
  
chmod 644 !$
  
chown -R mongod.mongod /data/mongodb2
  
ll /data
  
ll /data/mongodb2/
  
ll /data/mongodb2/log/
  
ll /data/mongodb2/keyfile/
  
vim /lib/systemd/system/mongod.service
  
    Description=mongodb
  
    After=network.target remote-fs.target nss-lookup.target
  

  

  
    Type=forking
  
    PIDFile=/data/mongodb2/db/mongod.lock
  
    ExecStart=/usr/local/mongodb/bin/mongod --dbpath=/data/mongodb2/db --logpath=/data/mongodb2/log/mongo.log --fork --port 27017 --logappend --replSet rep1 --rest --httpinterface --maxConns=8000 --keyFile=/data/mongodb2/keyfile/security
  
    ExecReload=/bin/kill -s HUP $MAINPID
  
    ExecStop=/bin/kill -s QUIT $MAINPID
  
    PrivateTmp=true
  
    LimitFSIZE=infinity
  
    LimitCPU=infinity
  
    LimitAS=infinity
  
    LimitNOFILE=64000
  
    LimitNPROC=64000
  

  

  
    WantedBy=multi-user.target
systemctl enable mongod.service  
systemctl start mongod.service
  
ps aux |grep mongo |grep -v 'grep'
  
systemctl status mongod.service
  
    #将mongo程序添加到环境变量
  
echo "export PATH=/usr/local/mongodb/bin:$PATH" >>/etc/profile
  
source !$
  
echo $PATH
  #创建帐号
##创建帐号方式一(创建admin管理员)  
use admin
  
db.createUser({user:"mongo_admin",pwd:"xxx",roles:[{role:"root",db:"admin"}]})
    #下次登录需要验证才能对数据库进行操作  
mongo
  
use admin
  
db.auth('mongo_admin','xxx')
  ##创建管理员方式二(创建dba用户)
> use admin  
switched to db admin
  
> db.createUser(
  
...   {
  
...   user: "dba",
  
...   pwd: "dba",
  
...   roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  
...   }
  
... )
  
Successfully added user: {
  
    "user" : "dba",
  
    "roles" : [
  
      {
  
            "role" : "userAdminAnyDatabase",
  
            "db" : "admin"
  
      }
  
    ]
  
}
  
##现在需要创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,使用指定库也必须在指定库里验证(auth)。
  ##创建用户解析
  roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:
  Built-In Roles(内置角色):
  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
  // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  7. 内部角色:__system
  具体角色:
  Read:允许用户读取指定数据库
  readWrite:允许用户读写指定数据库
  dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  root:只在admin数据库中可用。超级账号,超级权限
  #副本集配置文件
conf=({_id:"repl",members:[{_id:0,host:"103.56.195.2"},{_id:1,host:"103.56.195.3"},{_id:2,host:"103.56.195.4"}]})  
rs.initiate(conf)
  
rs.status()
  
rs.conf()                        #查看副本集配置文件
  
{
  "_id" : "repl",
  "version" : 8,
  "members" : [
  {
  "_id" : 0,
  "host" : "103.56.195.2:27017",
  "arbiterOnly" : false,
  "buildIndexes" : true,
  "hidden" : false,
  "priority" : 1,
  "tags" : {
  },
  "slaveDelay" : 0,
  "votes" : 1
  },
  {
  "_id" : 1,
  "host" : "103.56.195.3:27017",
  "arbiterOnly" : false,
  "buildIndexes" : true,
  "hidden" : false,
  "priority" : 1,
  "tags" : {
  },
  "slaveDelay" : 0,
  "votes" : 1
  },
  {
  "_id" : 3,
  "host" : "103.56.195.5:27027",
  "arbiterOnly" : true,
  "buildIndexes" : true,
  "hidden" : false,
  "priority" : 1,
  "tags" : {
  },
  "slaveDelay" : 0,
  "votes" : 1
  },
  {
  "_id" : 2,
  "host" : "103.56.195.4:27017",
  "arbiterOnly" : false,
  "buildIndexes" : true,
  "hidden" : false,
  "priority" : 1,
  "tags" : {
  },
  "slaveDelay" : 0,
  "votes" : 1
  }
  ],
  "settings" : {
  "chainingAllowed" : true,
  "heartbeatTimeoutSecs" : 10,
  "getLastErrorModes" : {
  },
  "getLastErrorDefaults" : {
  "w" : 1,
  "wtimeout" : 0
  }
  }
  
}
  #设置副本集中每台服务器的优先级
mongo 10.10.148.130:27017       #ip和port是某个节点的地址  
use admin
  
cfg={_id:"testrs",members:[{_id:0,host:'10.10.148.130:27017',priority:2},{_id:1,host:'10.10.148.131:27017',priority:1},{_id:2,host:'10.10.148.132:27017',arbiterOnly:true}]};
  
rs.initiate(cfg)
  #测试副本集数据同步,在primary主节点上写数据
  
for(var i=0;i
页: [1]
查看完整版本: mongodb服务安装,搭建副本集及原理概述