mongodb 副本集安装样例
节点信息
10.10.167.188
10.10.167.190
10.10.167.191
安装文件
1
2
3
4
5
6
7
8
| # 在三个节点运行以安装文件
wget "http://url_to_get_software/mongodb-linux-x86_64-rhel70-4.4.4.tgz"
tar -zxvf mongodb-linux-x86_64-rhel70-4.4.4.tgz
mkdir /data/mongodata
mv mongodb-linux-x86_64-rhel70-4.4.4 /usr/local/
|
配置文件
根据实际情况修改三个节点的配置文件 /etc/mongod.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| processManagement: #
fork: true #
net: #
bindIp: # 必须修改 127+内网 “,”分隔
port: 27017 # 根据实际情况改
maxIncomingConnections: 65536 #
storage: #
dbPath: /data/mongodata #
engine: wiredTiger #
wiredTiger: #
engineConfig: #
cacheSizeGB: 2 # 根据实际情况改 #默认1/2物理内存
systemLog: #
destination: file #
path: "/data/mongodata/mongodb.log" #
logAppend: true #
storage: #
journal: #
enabled: true #
replication: #
replSetName: 7road_mongodb_replset # 根据实际情况改
oplogSizeMB: 51200 # 根据实际情况改 #默认5%磁盘
security: #
authorization: disabled # 只用于第一次启动,创建账号后注释
# authorization: enabled # 第一次启动不使用
# clusterAuthMode: keyFile # 第一次启动不使用
# keyFile: /data/mongodata/mongodb.key # 第一次启动不使用
|
启动三个节点
1
2
| cd /usr/local/mongodb-linux-x86_64-rhel70-4.4.4
bin/mongod -f /etc/mongod.conf
|
设置副本集
1
2
| # 进入主节点交互模式
bin/mongo 10.10.167.188:27017/admin
|
1
2
3
4
| // 在主节点的交互命令行设置副本集
rs.initiate()
rs.add("10.10.167.190:27017")
rs.add("10.10.167.191:27017")
|
创建管理员账号
1
2
3
4
5
6
7
8
9
| // 在主节点的交互命令行创建管理员账号以便之后用认证模式
use admin;
db.createUser(
{
user: "dba",
pwd: "my_mongodb_passwd",
roles: [ { role: "root", db: "admin" } ]
}
)
|
重启集群
关闭集群
1
2
| # 先关闭副本,再关闭主,防止架构发生变化
bin/mongod --shutdown -f /etc/mongod.conf
|
修改配置文件
1
2
3
4
5
6
7
8
| # 创建key文件
openssl rand -base64 756 > /data/mongodata/mongodb.key
# 复制key文件到每一个节点,启用认证时副本集必须
chmod 400 /data/mongodata/mongodb.key # 必须更改文件权限,否则文件权限过高启动会报错
vim /etc/mongod.conf # 修改配置文件以启用认证模式
|
重新启动
1
2
3
| # 先启动主,再启动副本
cd /usr/local/mongodb-linux-x86_64-rhel70-4.4.4
bin/mongod -f /etc/mongod.conf
|
其他操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| // 在哪个库下创建账号,则必须在那个库下认证
use admin;
db.auth('dba','my_mongodb_passwd')
// 创建业务账号 基本只给指定库的读写权限即可
use my_db;
db.createUser(
{
user: "my_account",
pwd: "my_account_passwd",
roles: [ { role: "readWrite", db: "my_db" } ]
}
)
// 在SECONDARY节点时必须先运行以下才能进行其他操作,每次连接都需要操作。只能在PRIMARY节点进行更改操作。
rs.secondaryOk()
// 查看集群的节点信息
rs.isMaster()
|