#mongod.conf文件内容
net:
port: 27000
bindIpAll: true
security:
keyFile: /data/configdb/keyFile
# authorization: enabled
#replication:
# replSetName: rs
#storage:
# wiredTiger:
# engineConfig:
# cacheSizeGB: 0.2
#复制集开启安全认证,keyFile可以使用以下命令生成
openssl rand -base64 128 > /app/keyFile
#keyFile权限必须是600
chmod 600 /app/keyFile
#keyFile文件内容
hpdJhSX1QTZPTWfLKVgvFhqSQyTP4aRRsP8fial42htUu0H7lmYuddYGDxlBYhoh
GS49jLZI1HskRxJ3CbD9Qz7FEzns0Zfm9DOFewHDbJWgrq9HZtIZDOslE0P7obLj
kQKE+C7WBavI6BqPdqR1zvk/XbvYQS+j2SIFlNhuVR0=
#复制keyFile到所有参与集群的主机的配置挂载目录下(例如:/app/mongodb44-0/configdb),并配置mongod.conf配置文件中的keyFile属性
security:
keyFile: /data/configdb/keyFile
#创建MongoDB-0文件目录
mkdir -p /app/mongodb44-0/db
mkdir -p /app/mongodb44-0/configdb
chmod -R 777 /app/mongodb44-0/db
chmod -R 777 /app/mongodb44-0/configdb
#安装MongoDB-0
docker run -d \
--network host \
--restart=always \
-v /app/mongodb44-0/db:/data/db \
-v /app/mongodb44-0/configdb:/data/configdb \
-v /etc/localtime:/etc/localtime:ro \
--name mongodb44-0 mongo:4.4 mongod -f /data/configdb/mongod.conf
#进入MongoDB-0容器
docker exec -it mongodb44-0 /bin/bash
#登录MongoDB-0
mongo --port 27000
#切换到admin库
use admin
#MongoDB-0创建超级管理员命令
db.createUser(
{
user: "admin",
pwd: "123456",
roles: [ { role: "root", db: "admin" } ]
}
);
#进行登录认证
db.auth('admin','123456')
#MongoDB-0初始化复制集(这一步必须先完成其他节点的启动,并开启配置文件中的replication配置)
#其中priority属性表示选为主节点的优先级
#arbiterOnly: true 表示该节点只作为仲裁节点
#priority: 100 表示该节点作为master的权重
rs.initiate(
{
_id: "rs",
members: [
{ _id : 0, host : "192.168.1.9:27000", priority: 100 },
{ _id : 1, host : "192.168.1.9:27001", priority: 50 },
{ _id : 2, host : "192.168.1.9:27002", arbiterOnly: true}
]
}
)
#如果需要重新配置,使用下面的命令
rs.reconfig({
_id: "rs",
members: [
{ _id : 0, host : "192.168.1.9:27000", priority: 100 },
{ _id : 1, host : "192.168.1.9:27001", priority: 50 },
{ _id : 2, host : "192.168.1.9:27002", arbiterOnly: true}
]
})
#创建MongoDB-1文件目录
mkdir -p /app/mongodb44-1/db
mkdir -p /app/mongodb44-1/configdb
chmod -R 777 /app/mongodb44-1/db
chmod -R 777 /app/mongodb44-1/configdb
docker run -d \
--network host \
--restart=always \
-v /app/mongodb44-1/db:/data/db \
-v /app/mongodb44-1/configdb:/data/configdb \
-v /etc/localtime:/etc/localtime:ro \
--name mongodb44-1 mongo:4.4 mongod -f /data/configdb/mongod.conf
chmod -R 777 /app/mongodb44-1/configdb
#安装MongoDB-1
#创建MongoDB-2文件目录
mkdir -p /app/mongodb44-2/db
mkdir -p /app/mongodb44-2/configdb
chmod -R 777 /app/mongodb44-2/db
chmod -R 777 /app/mongodb44-2/configdb
#安装MongoDB-2
docker run -d \
--network host \
--restart=always \
-v /app/mongodb44-2/db:/data/db \
-v /app/mongodb44-2/configdb:/data/configdb \
-v /etc/localtime:/etc/localtime:ro \
--name mongodb44-2 mongo:4.4 mongod -f /data/configdb/mongod.conf
#新增单个节点操作
rs.add({host:"192.168.1.123:27003",arbiterOnly:true})
#删除单个节点操作
rs.remove('ip:port')
#如果报错,可以尝试强行覆盖
rs.reconfig(config,{force,true})
#后记----->
#MongoDB启动log提示相关警告,可以执行以下语句
sudo echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
sudo echo "never" > /sys/kernel/mm/transparent_hugepage/defrag