PSS(推荐) PSA
复制集架构

环境准备
版本4.4.9
端口28017/28018/28019
初始化环境(用脚本)
创建目录
mkdir -p /data/db{1,2,3}
touch /data/db1/mongo.log
创建配置文件
vi /data/db1/mongod.conf
systemLog:
destination: file
path: /data/db1/mongo.log # log path
logAppend: true
storage:
dbPath: /data/db1/ # data directory
engine: wiredTiger #存储引擎
journal: #是否启用journal日志 100ms
enabled: true
net:
bindIp: 0.0.0.0
port: 28017 # port
replcation:
replSetName: rs0
processManagement:
fork: true
touch /data/db2/mongo.log
创建配置文件
vi /data/db2/mongod.conf
systemLog:
destination: file
path: /data/db2/mongo.log # log path
logAppend: true
storage:
dbPath: /data/db2/ # data directory
engine: wiredTiger #存储引擎
journal: #是否启用journal日志 100ms
enabled: true
net:
bindIp: 0.0.0.0
port: 28018 # port
replcation:
replSetName: rs0
processManagement:
fork: true
touch /data/db3/mongo.log
创建配置文件
vi /data/db3/mongod.conf
systemLog:
destination: file
path: /data/db3/mongo.log # log path
logAppend: true
storage:
dbPath: /data/db3/ # data directory
engine: wiredTiger #存储引擎
journal: #是否启用journal日志 100ms
enabled: true
net:
bindIp: 0.0.0.0
port: 28019 # port
replcation:
replSetName: rs0
processManagement:
fork: true
启动服务
mongod -f /data/db1/mongod.conf
mongod -f /data/db2/mongod.conf
mongod -f /data/db3/mongod.conf
关闭服务
mongod -f /data/db1/mongod.conf shutdown
配置复制集
mongo --port 28017
方法一
初始化复制集
rs.initiate()
rs.add("HOSTNAME:28018")
rs.add("HOSTNAME:28019")
方法二
rs.initiate({
_id: "rs0",
members: [{
_id: 0,
host: "192.168.65.174:28017"
},{
_id: 1,
host: "192.168.65.174:28018"
},{
_id: 2,
host: "192.168.65.174:28019"
}]
})
查看复制集整体状态
rs.status()
查看当前节点角色
db.isMaster()
查看oplog信息
返回一个汇总的各Secondary同步延迟信息
rs.printSecondaryReplicationInfo()
返回oplog大小,保留时长,起始时间等信息
rs.printReplicationInfo()
rs.slaveOk() --早期版本开机从节点读操作
rs.secondaryOk()
db.user.find()
db.user.remove({name:"fox"})
安全认证
在主节点服务器上
use admin
#创建用户
db.createUser({
user: "fox",
pwd: "fox",
roles: [ { role: "clusterAdmin", db: "admin" },
{ role: "userAdminAnyDatabase", db: "admin"},
{ role: "userAdminAnyDatabase", db: "admin"},
{ role: "readWriteAnyDatabase", db: "admin"},
})
创建keyFile文件
keyFile文件的作用: 集群之间的安全认证,增加安全认证机制KeyFile(开启keyfile认证就
默认开启了auth认证了)。
mongo.key采用随机算法生成,用作节点内部通信的密钥文件。
openssl rand -base64 756 > /data/mongo.key
权限必须是600
chmod 600 /data/mongo.key
注意:创建keyFile前,需要先停掉复制集中所有主从节点的mongod服务,然后再创建,
否则有可能出现服务启动不了的情况。
将主节点中的keyfile文件拷贝到复制集其他从节点服务器中,路径地址对应
mongo.conf配置文件中的keyFile字段地址,并设置keyfile权限为600
启动mongod
#启动mongod
mongod ‐f /data/db1/mongod.conf --keyFile /data/mongo.key
mongod ‐f /data/db2/mongod.conf --keyFile /data/mongo.key
mongod ‐f /data/db3/mongod.conf --keyFile /data/mongo.key
测试
进入主节点
mongo --port 28017
db.user.find() #无法读取
进入主节点
mongo --port 28017 -ufox -pfox --authenticationDatabase=admin
db.user.find()
db.user.insert({name:"fox"})
进入从节点
mongo --port 28019 -ufox -pfox --authenticationDatabase=admin
rs.secondaryOk()
db.user.find()
网友评论