环境准备:
Ubuntu 16.04.1 LTS
primary:192.168.0.241
secondary:192.168.0.243
arbiter:192.168.0.242
mongodb-linux-x86_64-2.6.11.tgz
上官网抄来的架构图:
三台mongodb搭建配置:
-
tar -zxf /tmp/mongodb-linux-x86_64-2.6.11.tgz -C /opt/
-
mv /opt/mongodb-linux-x86_64-2.6.11 /opt/mongodb
-
mkdir -p /{data,log}/mongodb
-
touch /opt/mongodb/mongod.conf
添加mongod.conf配置如下:
-
systemLog:
-
path: /logs/mongodb/mongodb.log
-
logAppend: true
-
destination: file
-
processManagement:
-
fork: true #以守护进程方式运行mongodb
-
pidFilePath: /opt/mongodb/mongodb.pid
-
net:
-
port: 27017
-
bindIp: 192.168.0.241 #三台机器分别设置本机IP
-
storage:
-
dbPath: /data/mongodb
-
directoryPerDB: true
-
journal:
-
enabled: true
启动mongodb
-
/opt/mongodb/bin/mongod -f /opt/mongodb/mongod.conf
设置管理密码
-
/opt/mongodb/bin/mongo --host 192.168.0.241
-
>use admin
-
>db.addUser("root","xixi")
-
>quit()
创建超级用户出现下图警告可忽略,反正用户创建好了
关闭mongodb
-
kill -2 `cat /opt/mongodb/mongodb.pid`
设置通讯用key (key只生成一次,三台机器拷贝同一个key)
-
openssl rand -base64 741 > /opt/mongodb/mongodb-keyfile
-
chmod 600 /opt/mongodb/mongodb-keyfile
增加mongod.conf文件安全及副本集相关配置如下:
-
security:
-
keyFile: /opt/mongodb/mongodb-keyfile
-
clusterAuthMode: keyFile
-
authorization: enabled
-
replication:
-
oplogSizeMB: 1000
-
replSetName: ywkj
再次启动mongodb
-
/opt/mongodb/bin/mongod -f /opt/mongodb/mongod.conf
mongdb高可用设置:
登录任意一个节点进行配置
-
/opt/mongodb/bin/mongo --host 192.168.0.241
>use admin
>db.auth("root","xixi")
>rsconf={_id:"ywkj",members:[{_id: 0,host: "192.168.0.241:27017",priority:2}]}
>rs.initiate(rsconf)
>rs.add("192.168.0.242:27017",true)
>rs.add({_id:2,host:"192.168.0.243:27017",priority:1})
查看节点设置
查看各节点状态
至此mongodb高可用完成
备注几条mongodb管理命令:
查看数据库 show dbs
切换/创建数据库 use <数据库>
切换用户 db.auth("<用户名>","<密码>")
查看数据量 db.<数据库>.count()
关闭数据库 db.shutdownServer()
查询 db.<数据库>.find({"":""})
插入数据 db.<数据库>.insert({"":""})
删除数据 db.<数据库>.remove({"":""})
统计数据量 db.<数据库>.count()
查看用户权限 db.system.users.find() #此命令只能use admin后执行
以下命令请先use相应数据库:
创建用户 db.createUser({user:"<用户名>",pwd:"<密码>",roles:[{role:"<权限1>",db:"<数据库>"},{role:"<权限2>",db:"<数据库>"}]})
用户授权 db.grantRolesToUser("<用户名>", [{ role: "<权限>",db:"<数据库>"}])
权限回收 db.revokeRolesFromUser("<用户名>",[{ role: "<权限>",db:"<数据库>"}])
修改密码 db.changeUserPassword("<用户名>","<密码>");
删除数据库 db.dropDatabase()
删除用户 db.dropUser("<用户名>")
阅读(733) | 评论(0) | 转发(0) |