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]