mongodb replica set 实战
卸载MongoDB
sudo systemctl stop mongoddsudo yum erase $(rpm -qa | grep mongodb-org)sudo rm -r /var/log/mongodbsudo rm -r /var/lib/mongosudo rm -r /var/run/mongodb
安装MongoDB
- 创建 ,/etc/yum.repos.d/mongodb-org-3.4.repo
1 | [mongodb-org-3.4] |
- 安装,
sudo yum install -y mongodb-org - 启动,
systemctl start mongod - 开机启动,
systemctl enable mongod - 测试外网能力,
mongo --host xxxx --port 27017 - 修改,
/etc/mongod.conf的bindIp, bindIp: 0.0.0.0 - 重启mongo,
systemctl restart mongod
开启replica set身份验证(Keyfiles)
- 生成keyfile,
openssl rand -base64 756 > path-to-keyfilechmod 400 path-to-keyfile - 拷贝keyfile到每台服务器相同位置
- 配置每台mongo服务器的keyfile,修改
/etc/mongod.conf,删除security前的#,增加配置项,keyFile: /etc/mongo/yxkeyfile - 开启replication, 修改
/etc/mongod.conf,删除replication前的#,增加配置项,replSetName: test - 重启mongo,
systemctl restart mongod - 选择一台主机作为primary,执行
rs.initiate( {_id : "yxrep",members: [ { _id : 0, host : "10.10.10.161:27017" } ]}) - 添加secondary,
rs.add("10.10.10.162:27017") - 执行mongo命令
- 创建管理员:
admin = db.getSiblingDB("admin")admin.createUser({user: "admin",pwd: "admin$magic",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}) 管理员登录:
db.getSiblingDB("admin").auth("admin", "admin$123" )或者 `mongo -u "admin" -p "admin$123" --authenticationDatabase "admin"`创建DB读写用户
use dashboarddb.createUser({user: "test",pwd: "test$123",roles: [ { role: "readWrite", db: "dashboard" },{ role: "read", db: "dashboard" } ]})- 用户登录
mongo --port 27017 -u "test" -p --authenticationDatabase "dashboard"