# MongoDB运维事件处理
# 运维事件发生-部署MongoDB服务
# 事件描述
需要在测试环境主机上部署MongoDB服务,同时添加mongo的环境变量。
# 事件处理
# 切换到app目录
[root@TEST ~]# cd /app
# 使用wget指令下载mongodb
[root@TEST app]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.4.27.tgz
# 解压缩到/app/mongodb目录下
[root@TEST app]# tar -zxvf mongodb-linux-x86_64-ubuntu1604-4.4.27.tgz -C /app/mongodb/
# 切换到mongodb目录
[root@TEST app]# cd mongodb
# 存放mongo配置文件
[root@TEST mongodb] mkdir conf
# 存放mongo日志
[root@TEST mongodb] mkdir logs
# 存放mongo数据
[root@TEST mongodb] mkdir mongodata
# 切换到conf目录
[root@TEST mongodb]# cd conf
# 创建配置文件,同时vim该文件,将下列配置写入
[root@TEST conf]# > mongodb.cnf
# 这里仅查看,实际是要用vim指令写入
[root@TEST conf]# cat mongodb.cnf
net:
bindIp: 0.0.0.0
port: 27017
processManagement:
fork: "true"
#security:
# authorization: enabled
storage:
dbPath: /app/mongodb/mongodata/
journal:
enabled: true
directoryPerDB: true
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 3
systemLog:
destination: file
path: /app/mongodb/logs/mongodb.log
logAppend: true
# 启动MongoDB
[root@TEST ~]# /app/mongodb/mongodb-4.4.27/bin/mongod -f /app/mongodb/conf/mongodb.cnf
# 添加Mongo启动脚本到环境变量中
[root@TEST ~] vim /etc/profile
export PATH=/app/mongodb/mongodb-4.4.27/bin:$JAVA_HOME/bin:$PATH
# 验证Mongo的启动
## 可以看到mongo进程正常开启
[root@TEST ~]# ps aux | grep mongo
root 8189 4.1 1.2 1478972 86252 ? Sl 16:40 0:01 /app/mongodb/mongodb-4.4.27/bin/mongod -f /app/mongodb/conf/mongodb.cnf
root 8260 0.0 0.0 213132 884 pts/0 S+ 16:41 0:00 grep mongo
## 输入mongo指令进入mongo,如可以进入,即安装完成。
[root@TEST ~]# mongo
MongoDB shell version v4.4.27
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("37680433-585d-4f86-ac73-73167668b51b") }
MongoDB server version: 4.4.27
---
The server generated these startup warnings when booting:
2024-01-24T14:15:34.976+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
2024-01-24T14:15:34.976+08:00: You are running this process as the root user, which is not recommended
2024-01-24T14:15:34.976+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
---
>
## 创建root账号
### 这一步很重要,必须要执行,且必须要妥善保管root账号的密码
> use admin
switched to db admin
> db.createUser({user:"root",pwd:"Dn@0Gx1g",roles:[{role:"root",db:"admin"}]});
# 运维事件发生-MongoDB迁移
# 事件描述
测试环境需要在新主机上部署MongoDB,同时将旧主机上的MongoDB相关数据迁移到新主机上。
# 事件处理
将任务项拆解为部署mongodb服务,旧库信息查询,旧库数据备份,新库创建以及用户创建,还原旧库数据,验证迁移结果这几个步骤来进行。
# 部署MongoDB服务
部署MongoDB服务参照运维事件发生-部署MongoDB服务来操作即可。
# 旧库信息查询
查询旧库里的数据库信息:
# 旧库操作,查看库里有哪些数据库,可以看到我们需要创建3个数据库
> show dbs;
# admin为默认库
admin 0.000GB
# config为默认库
config 0.000GB
# 要迁移的数据库
gravitee 0.006GB
# 要迁移的数据库
gravitee-am 0.002GB
# 要迁移的数据库
gravitee-log 0.763GB
# local为默认库
local 0.000GB
查询gravitee的用户信息:
# 使用gravitee库
> use gravitee;
switched to db gravitee
# 查看该库下的用户,可以看到下面只有一个gravitee用户
> show users;
{
"_id" : "gravitee.gravitee",
"user" : "gravitee",
"db" : "gravitee",
"roles" : [
{
"role" : "readWrite",
"db" : "gravitee"
},
{
"role" : "dbAdmin",
"db" : "gravitee"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
查询gravitee-am库的用户信息:
> use gravitee-am;
switched to db gravitee-am
> show users;
{
"_id" : "gravitee-am.gravitee",
"user" : "gravitee",
"db" : "gravitee-am",
"roles" : [
{
"role" : "readWrite",
"db" : "gravitee-am"
},
{
"role" : "dbAdmin",
"db" : "gravitee-am"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
查询gravitee-log库的用户信息:
> show users;
{
"_id" : "gravitee-log.gravitee",
"user" : "gravitee",
"db" : "gravitee-log",
"customData" : {
},
"roles" : [
{
"role" : "readWrite",
"db" : "gravitee-log"
},
{
"role" : "dbAdmin",
"db" : "gravitee-log"
}
],
"mechanisms" : [
"SCRAM-SHA-1"
]
}
# 旧库数据备份
备份gravitee库:
root@TEST:~# cd /app/mongodb/mongodb-4.2.21/bin
root@TEST:/app/mongodb/mongodb-4.2.21/bin# ./mongodump -h 127.0.0.1:27017 -d gravitee -o /data/gravitee-20240124.json
备份gravitee-am库:
root@TEST:~# cd /app/mongodb/mongodb-4.2.21/bin
root@TEST:/app/mongodb/mongodb-4.2.21/bin# ./mongodump -h 127.0.0.1:27017 -d gravitee-am -o /data/gravitee-am-20240124.json
备份gravitee-log库:
root@TEST:/data# cd /app/mongodb/mongodb-4.2.21/bin
root@TEST:/app/mongodb/mongodb-4.2.21/bin# ./mongodump -h 127.0.0.1:27017 -d gravitee-log -o /data/gravitee-log-20240124.json
2024-01-25T10:12:36.197+0800 writing gravitee-log.log to /data/gravitee-log-20240124.json/gravitee-log/log.bson
2024-01-25T10:12:39.184+0800 [........................] gravitee-log.log 14554/1196687 (1.2%)
2024-01-25T10:12:42.184+0800 [........................] gravitee-log.log 26194/1196687 (2.2%)
2024-01-25T10:12:45.184+0800 [#.......................] gravitee-log.log 51046/1196687 (4.3%)
2024-01-25T10:12:48.184+0800 [#.......................] gravitee-log.log 66203/1196687 (5.5%)
2024-01-25T10:12:51.184+0800 [#.......................] gravitee-log.log 88460/1196687 (7.4%)
2024-01-25T10:12:54.184+0800 [##......................] gravitee-log.log 99962/1196687 (8.4%)
2024-01-25T10:12:57.184+0800 [##......................] gravitee-log.log 108756/1196687 (9.1%)
2024-01-25T10:13:00.184+0800 [##......................] gravitee-log.log 127491/1196687 (10.7%)
2024-01-25T10:13:03.184+0800 [###.....................] gravitee-log.log 167715/1196687 (14.0%)
2024-01-25T10:13:06.184+0800 [####....................] gravitee-log.log 199795/1196687 (16.7%)
2024-01-25T10:13:09.184+0800 [####....................] gravitee-log.log 228360/1196687 (19.1%)
2024-01-25T10:13:12.184+0800 [#####...................] gravitee-log.log 258670/1196687 (21.6%)
2024-01-25T10:13:15.184+0800 [######..................] gravitee-log.log 330684/1196687 (27.6%)
2024-01-25T10:13:18.184+0800 [#######.................] gravitee-log.log 374414/1196687 (31.3%)
2024-01-25T10:13:21.184+0800 [########................] gravitee-log.log 419996/1196687 (35.1%)
2024-01-25T10:13:24.184+0800 [#########...............] gravitee-log.log 476410/1196687 (39.8%)
2024-01-25T10:13:27.184+0800 [##########..............] gravitee-log.log 519393/1196687 (43.4%)
2024-01-25T10:13:30.184+0800 [###########.............] gravitee-log.log 584076/1196687 (48.8%)
2024-01-25T10:13:33.184+0800 [##############..........] gravitee-log.log 709507/1196687 (59.3%)
2024-01-25T10:13:36.191+0800 [################........] gravitee-log.log 844027/1196687 (70.5%)
2024-01-25T10:13:39.184+0800 [###################.....] gravitee-log.log 956539/1196687 (79.9%)
2024-01-25T10:13:42.184+0800 [####################....] gravitee-log.log 1006823/1196687 (84.1%)
2024-01-25T10:13:45.184+0800 [######################..] gravitee-log.log 1137580/1196687 (95.1%)
2024-01-25T10:13:48.043+0800 [########################] gravitee-log.log 1196687/1196687 (100.0%)
2024-01-25T10:13:48.045+0800 done dumping gravitee-log.log (1196687 documents)
# 新库创建以及用户创建
创建gravitee库以及gravitee用户:
# 如果gravitee库不存在,会自动创建该库
> use gravitee;
switched to db gravitee
# 为gravitee库添加用户,同时给用户设置密码,添加权限
> db.createUser({user:"gravitee",pwd:"vnk@1X0J",roles:["readWrite","dbAdmin"]});
# 测试鉴权
> db.auth('gravitee','vnk@1X0J');
# 返回1,代表鉴权成功,返回0代表鉴权失败
1
创建gravitee-am库以及gravitee用户:
# 如果gravitee-am库不存在,会自动创建该库
> use gravitee-am;
switched to db gravitee-am
# 为gravitee库添加用户,同时给用户设置密码,添加权限
> db.createUser({user:"gravitee",pwd:"vnk@1X0J",roles:["readWrite","dbAdmin"]});
# 测试鉴权
> db.auth('gravitee','vnk@1X0J');
# 返回1,代表鉴权成功,返回0代表鉴权失败
1
创建gravitee-log库以及gravitee用户:
> use gravitee-log;
switched to db gravitee-log
> db.createUser({user:"gravitee",pwd:"vnk@1X0J",roles:["readWrite","dbAdmin"]});
Successfully added user: { "user" : "gravitee", "roles" : [ "readWrite", "dbAdmin" ] }
> show users;
{
"_id" : "gravitee-log.gravitee",
"userId" : UUID("097f5303-d3b2-4cac-b73f-fe09cd3f4139"),
"user" : "gravitee",
"db" : "gravitee-log",
"roles" : [
{
"role" : "readWrite",
"db" : "gravitee-log"
},
{
"role" : "dbAdmin",
"db" : "gravitee-log"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
# 测试鉴权
> db.auth('gravitee','vnk@1X0J');
# 返回1,代表鉴权成功,返回0代表鉴权失败
1
# 还原旧库数据
还原gravitee库的数据:
[root@TEST ~]# cd /apptools/mongodb-tools/bin
[root@TEST bin]# ./mongorestore -h 127.0.0.1 --port 27017 -u root -p 'Dn@0Gx1g' /data/gravitee-20240124.json
还原gravitee-am库的数据:
[root@TEST ~]# cd /apptools/mongodb-tools/bin
[root@TEST bin]# ./mongorestore -h 127.0.0.1 --port 27017 -u root -p 'Dn@0Gx1g' /data/gravitee-am-20240124.json
还原gravitee-log库的数据:
[root@TEST ~]# cd /apptools/mongodb-tools/bin
# 这里还原的是库里某一个集合,这个库里就一个集合
# 这里恢复的是log这一个集合。
[root@TEST bin]# ./mongorestore -h 127.0.0.1:27017 --nsInclude=gravitee-log.log /data/gravitee-log-20240124.json
2024-01-25T10:54:25.439+0800 preparing collections to restore from
2024-01-25T10:54:25.440+0800 reading metadata for gravitee-log.log from /data/gravitee-log-20240124.json/gravitee-log/log.metadata.json
2024-01-25T10:54:25.477+0800 restoring gravitee-log.log from /data/gravitee-log-20240124.json/gravitee-log/log.bson
2024-01-25T10:54:28.614+0800 [##......................] gravitee-log.log 145MB/1.57GB (9.0%)
2024-01-25T10:54:31.440+0800 [###.....................] gravitee-log.log 225MB/1.57GB (14.0%)
2024-01-25T10:54:34.440+0800 [######..................] gravitee-log.log 424MB/1.57GB (26.4%)
2024-01-25T10:54:37.443+0800 [########................] gravitee-log.log 537MB/1.57GB (33.5%)
2024-01-25T10:54:40.439+0800 [##########..............] gravitee-log.log 673MB/1.57GB (41.9%)
2024-01-25T10:54:43.439+0800 [############............] gravitee-log.log 826MB/1.57GB (51.4%)
2024-01-25T10:54:46.440+0800 [##############..........] gravitee-log.log 943MB/1.57GB (58.8%)
2024-01-25T10:54:49.505+0800 [###############.........] gravitee-log.log 1.01GB/1.57GB (64.7%)
2024-01-25T10:54:53.362+0800 [################........] gravitee-log.log 1.05GB/1.57GB (67.2%)
2024-01-25T10:54:56.604+0800 [#################.......] gravitee-log.log 1.14GB/1.57GB (72.5%)
2024-01-25T10:54:58.440+0800 [##################......] gravitee-log.log 1.21GB/1.57GB (77.4%)
2024-01-25T10:55:01.439+0800 [####################....] gravitee-log.log 1.32GB/1.57GB (84.2%)
2024-01-25T10:55:04.439+0800 [#####################...] gravitee-log.log 1.42GB/1.57GB (90.7%)
2024-01-25T10:55:07.439+0800 [######################..] gravitee-log.log 1.50GB/1.57GB (95.8%)
2024-01-25T10:55:09.087+0800 [########################] gravitee-log.log 1.57GB/1.57GB (100.0%)
2024-01-25T10:55:09.087+0800 finished restoring gravitee-log.log (1196687 documents, 0 failures)
2024-01-25T10:55:09.087+0800 no indexes to restore for collection gravitee-log.log
2024-01-25T10:55:09.087+0800 1196687 document(s) restored successfully. 0 document(s) failed to restore.
# 验证迁移结果
这里以gravitee库为例,验证迁移结果:
# 使用gravitee库
> use gravitee
switched to db gravitee
# 查看库中的所有集合
> show collections
apiheaders
audits
events
metadata
roles
views
# 查看某一个具体的集合,这里查看的是roles这个集合的数据
> db.roles.find();
{ "_id" : { "scope" : 1, "name" : "API_PUBLISHER" }, "description" : "Management Role. Created by Gravitee.io.", "defaultRole" : false, "system" : false, "permissions" : [ 1604, 1804, 1204, 1715, 1515, 1304, 1404 ], "createdAt" : ISODate("2024-01-23T08:52:12.078Z"), "updatedAt" : ISODate("2024-01-23T08:52:12.078Z"), "_class" : "io.gravitee.repository.mongodb.management.internal.model.RoleMongo" }
{ "_id" : { "scope" : 1, "name" : "USER" }, "description" : "Default Management Role. Created by Gravitee.io.", "defaultRole" : true, "system" : false, "permissions" : [ 1604, 1204, 1715, 1504 ], "createdAt" : ISODate("2024-01-23T08:52:12.158Z"), "updatedAt" : ISODate("2024-01-23T08:52:12.158Z"), "_class" : "io.gravitee.repository.mongodb.management.internal.model.RoleMongo" }