搭建副本集:一主一副一仲裁
- 一个主节点
- 一个从节点。 从节点可以再选举中成为主节点。
- 一个监督者成员。监督者只能在选举中投票。
新建配置文件:mongodb.conf
#数据库路径
dbpath=/root/install/mongodb3.6.5/data/db
#日志输出文件路径
logpath=/root/install/mongodb3.6.5/logs/mongo.log
#错误日志采用追加模式
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#端口号 默认为27017
port=27017
#副本集名称
replSet=chainSet
#后台运行,默认false
fork=true
#开启用户认证,默认false
auth=true
#指定存储身份验证信息的**文件的路径。默认缺省
keyFile=/root/install/mongodb3.6.5/keyfile
#绑定地址,进程绑定和监听来自这个地址上的应用连接。对远程连接暂时不做ip限制。
bind_ip=0.0.0.0
2、启动&&初始化
mongod --config mongodb.conf //启动mongodb
mongo ip:port/dbname -u user -p pwd //远程连接
#初始化副本集信息 199.187.153.121为主,199.187.153.122仲裁节点,199.187.153.123副节点
rs.initiate({"_id":"chainSet",
members:[{"_id":1,"host":"199.187.153.121:27017",priority:9},
{"_id":2,"host":"199.187.153.122:27017", arbiterOnly:true },
{"_id":3,"host":"199.187.153.123:27017",priority:3}]})
"_id": 副本集的名称
"members": 副本集的服务器列表
"_id": 服务器的唯一ID
"host": 服务器主机
"priority": 是优先级,默认为1,优先级0为被动节点,不能成为活跃节点。优先级不位0则按照有大到小选出活跃节点。
"arbiterOnly": 仲裁节点,只参与投票,不接收数据,也不能成为活跃节点。
#查询集群状态
rs.status()
#查看数据库
show dbs
#查看表
use testdb //使用testdb数据库
show tables 或 show collections
#创建表
db.createCollection("testCon")
#查询表
db.testCon.find()
后续动态修改集群:
rs.add("99.187.153.124:27017")//增加节点,即 SECONDARY
rs.addArb("99.187.153.124:27017");/把增加的结点设置为仲裁节点
rs.remove("199.187.153.124:27017")//删除节点
注意事项:
1)刚开始启动副本集时把以下两行注释掉,副本集初始化以及用户创建完毕,在打开注释。
#开启用户认证,默认false
auth=true
#指定存储身份验证信息的**文件的路径。默认缺省
keyFile=/root/install/mongodb3.6.5/keyfile
2)keyfile文件生成
openssl rand -base64 666> /usr/local/mongodb/mongo-keyfile
3、创建用户:
管理员用户:
use admin //切换数据库
db.createUser({user:"admin",pwd:"admin",roles:["root"]})//创建管理员用户
db.auth("admin", "admin") //认证
数据库用户:
use test //.切换数据库
db.createUser({user: "test", pwd: "test", roles: [{ role: "dbOwner", db: "test" }]})//创建用户
db.auth("test", "test") //认证
4、遇到的坑:
1)、初始化副本集信息时不能在仲裁节点执行,否则报错
2)、keyfile文件的权限必须是600,chmod 600 keyfile
资料:
1、https://www.cnblogs.com/xbq8080/p/7231548.html