无标题文章

MongoDB集群环境部署监控及备份配置

1、环境介绍

MongoDB复制集是一个带有故障转移的主从集群。是从现有的主从模式演变而来,增加了自动故障转移和节点成员自动恢复。MongoDB复制集模式中没有固定的主结点,在启动后,多个服务节点间将自动选举产生一个主结点。该主结点被称为primary,一个或多个从结点被称为secondaries。primary结点基本上就是master结点,不同之处在于primary结点在不同时间可能是不同的服务器。如果当前的主结点失效了,复制集中的其余结点将会试图选出一个新的主结点。

参照下图,本文我们搭建Mongo副本集集群环境

2、环境准备

IP名称主机名安装软件

155.155.1.184masterMongo01MongoDB-hsblog、MongoDB-CDA、MMS-auth-agent

155.155.1.116backup01Mongo02MongoDB-hsblog、MongoDB-CDA、MMS-auth-agent

155.155.2.12backup02Mongo03backup01MongoDB-hsblog、MongoDB-CDA、MMS-auth-agent

155.155.2.13MongoMMSMongoMMSMongo- MMS、MongoDB-MMS、MMS-auth-agent

一共4台服务器,master、backup01、backup02分别安装两个mongoDB-hsblog和MongoDB-CDA数据库,以端口来区分,MongoMMS安装ops工具以及MMS数据库

数据库环境安装参照mongoDB数据库安装部署文档,此处不再展开说明

3、Mongo集群环境搭建

3.1、系统初始化

3.1.1增加主机名映射

在每台服务器下执行下面命令

echo155.155.1.184 Mongo01 >>/etc/hosts

echo155.155.1.116 Mongo02 >>/etc/hosts

echo155.155.2.12 Mongo03 >>/etc/hosts

echo155.155.2.13 MongoMMS >>/etc/hosts

3.1.2开通防火墙端口8080、8081、8443、27017、28017

在每台服务器下执行下面命令

firewall-cmd--zone=public--add-port=8080/tcp--permanent

firewall-cmd--zone=public--add-port=8081/tcp--permanent

firewall-cmd--zone=public--add-port=8443/tcp--permanent

firewall-cmd--zone=public--add-port=27017/tcp--permanent

firewall-cmd--zone=public--add-port=28017/tcp--permanent

firewall-cmd--reload

3.1.3依赖包安装

每台服务器上都要安装

yum install cyrus-sasl cyrus-sasl-gssapi \

    cyrus-sasl-plain krb5-libs libcurl net-snmp \

net-snmp-libs openldapopensslxz-libs-y

3.1.4 开启日志文件记录

mongo副本集和mms连接数据库需要开启journal=true的认证,之前做单机是没有开启的,否则后面会进行报错

每台服务器上的每个mongodb.conf都要进行修改

要先关闭mongod进程

/data/mongo/mongodb-hsblog/bin/mongod -shutdown --config /data/mongo/mongodb-hsblog/etc/mongodb.conf

/data/mongo/mongodb-cda/bin/mongod -shutdown --config /data/mongo/mongodb-cda/etc/mongodb.conf

/data/mongo/mongodb-mms/bin/mongod -shutdown --config /data/mongo/mongodb-mms/etc/mongodb.conf

vim /data/mongo/mongodb-mms/etc/mongodb.conf

把journal=false 改成 journal=true 然后启动

3.1.5关闭hugepage服务

官方建议关闭hugepage服务,在每台服务器上都要执行

hugepage服务就是允许hugepage可以动态分配,而不是系统启动时预先分配,对内存消耗很大的服务都不喜欢它.

这个配置会在多个服务上都是坑elasticsearch ,mongodb ,oracle ,官方推荐默认系统初始化就关掉。

临时关闭,重启后失效

echonever > /sys/kernel/mm/transparent_hugepage/enabled

永久关闭

编辑开启加载文件

vim/etc/rc.local

增加下列内容

iftest-f/sys/kernel/mm/transparent_hugepage/enabled;then

echonever > /sys/kernel/mm/transparent_hugepage/enabled

fi

iftest-f/sys/kernel/mm/transparent_hugepage/defrag;then

echonever > /sys/kernel/mm/transparent_hugepage/defrag

fi

授权

chmod+x /etc/rc.local

3.2、集群环境搭建

3.2.1创建集群key认证文件

在master 服务器上执行命令,生成key文件后,然后拷贝到backup01,backup02服务器相同的路径

cd /data/mongo

openssl rand -base64 756 > energy-rc.key

chmod 400 energy-rc.key

scp -r energy-rc.key root@155.155.1.116:/data/mongo/

scp -r energy-rc.key root@155.155.2.12:/data/mongo/

在每台服务器下都执行,把生成的key添加到mongodb.conf配置文件中,开启key认证

echo keyFile=/data/mongo/energy-rc.key >>/data/mongo/mongodb-hsblog/etc/mongodb.conf

echo keyFile=/data/mongo/energy-rc.key >>/data/mongo/mongodb-cda/etc/mongodb.conf

3.2.2在配置文件中增加集群名称

在master、backup01、backup02服务器上执行,命令

echo replSet=rs0 >>/data/mongo/mongodb-hsblog/etc/mongodb.conf

echo replSet=rs1 >>/data/mongo/mongodb-cda/etc/mongodb.conf

增加后需要重新启动数据库生效,在master、backup01、backup02服务器上执行命令

# 关闭数据库

/data/mongo/mongodb-hsblog/bin/mongod -shutdown --config /data/mongo/mongodb-hsblog/etc/mongodb.conf

/data/mongo/mongodb-cda/bin/mongod -shutdown --config /data/mongo/mongodb-cda/etc/mongodb.conf

# 启动数据库

/data/mongo/mongodb-hsblog/bin/mongod  --config /data/mongo/mongodb-hsblog/etc/mongodb.conf

/data/mongo/mongodb-cda/bin/mongod  --config /data/mongo/mongodb-cda/etc/mongodb.conf

3.2.3在主库上进行集群初始化

启动三台mongo-hsblog数据库

/data/mongo/mongodb-hsblog/bin/mongod  --config /data/mongo/mongodb-hsblog/etc/mongodb.conf

在master上进行操作,启动mongo程序

/data/mongo/mongodb-hsblog/bin/mongo 127.0.0.1:27017

输入用户名密码认证

use admin

db.auth("admin","Zaq12wsx")

输入数据库基本配置信息

config = {  _id : "configs",   

        members : [       

                {_id : 0, host : "155.155.1.184:27017" },       

                {_id : 1, host : "155.155.1.116:27017" },       

                {_id : 2, host : "155.155.2.12:27017" }   

            ]  }

继续输入初始化命令

rs.initiate( {

  _id : "rs0",

  members: [

      { _id: 0, host: "155.155.1.184:27017" },

      { _id: 1, host: "155.155.1.116:27017" },

      { _id: 2, host: "155.155.2.12:27017" }

  ]

})

之后使用exit退出 再重新登录

/data/mongo/mongodb-hsblog/bin/mongo 127.0.0.1:27017

可以看到master服务器上的mongo服务已经变成PRIMARY主节点

输入用户密码认证

use admin

db.auth("admin","Zaq12wsx")

查看集群配置信息

rs.conf()

返回下列内容:

MongoDB Enterprise rs0:PRIMARY> rs.conf()

{

"_id" : "rs0",

"version" : 1,

"term" : 2,

"members" : [

{

"_id" : 0,

"host" : "155.155.1.184:27017",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 1,

"tags" : {

},

"secondaryDelaySecs" : NumberLong(0),

"votes" : 1

},

{

"_id" : 1,

"host" : "155.155.1.116:27017",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 1,

"tags" : {

},

"secondaryDelaySecs" : NumberLong(0),

"votes" : 1

},

{

"_id" : 2,

"host" : "155.155.2.12:27017",

"arbiterOnly" : false,

"buildIndexes" : true,

"hidden" : false,

"priority" : 1,

"tags" : {

},

"secondaryDelaySecs" : NumberLong(0),

"votes" : 1

}

],

"protocolVersion" : NumberLong(1),

"writeConcernMajorityJournalDefault" : true,

"settings" : {

"chainingAllowed" : true,

"heartbeatIntervalMillis" : 2000,

"heartbeatTimeoutSecs" : 10,

"electionTimeoutMillis" : 10000,

"catchUpTimeoutMillis" : -1,

"catchUpTakeoverDelayMillis" : 30000,

"getLastErrorModes" : {

},

"getLastErrorDefaults" : {

"w" : 1,

"wtimeout" : 0

},

"replicaSetId" : ObjectId("62b1eb80013710ba0dd00cf9")

}

}

MongoDB Enterprise rs0:PRIMARY>

查看成员状态信息

rs.status()

返回下列内容

MongoDB Enterprise rs0:PRIMARY> rs.status()

{

"set" : "rs0",

"date" : ISODate("2022-06-21T16:11:45.795Z"),

"myState" : 1,

"term" : NumberLong(2),

"syncSourceHost" : "",

"syncSourceId" : -1,

"heartbeatIntervalMillis" : NumberLong(2000),

"majorityVoteCount" : 2,

"writeMajorityCount" : 2,

"votingMembersCount" : 3,

"writableVotingMembersCount" : 3,

"optimes" : {

"lastCommittedOpTime" : {

"ts" : Timestamp(1655827329, 1),

"t" : NumberLong(-1)

},

"lastCommittedWallTime" : ISODate("2022-06-21T16:02:09.013Z"),

"readConcernMajorityOpTime" : {

"ts" : Timestamp(1655827329, 1),

"t" : NumberLong(-1)

},

"appliedOpTime" : {

"ts" : Timestamp(1655827900, 1),

"t" : NumberLong(2)

},

"durableOpTime" : {

"ts" : Timestamp(1655827900, 1),

"t" : NumberLong(2)

},

"lastAppliedWallTime" : ISODate("2022-06-21T16:11:40.012Z"),

"lastDurableWallTime" : ISODate("2022-06-21T16:11:40.012Z")

},

"lastStableRecoveryTimestamp" : Timestamp(1655827329, 1),

"electionCandidateMetrics" : {

"lastElectionReason" : "electionTimeout",

"lastElectionDate" : ISODate("2022-06-21T16:06:49.952Z"),

"electionTerm" : NumberLong(2),

"lastCommittedOpTimeAtElection" : {

"ts" : Timestamp(1655827329, 1),

"t" : NumberLong(-1)

},

"lastSeenOpTimeAtElection" : {

"ts" : Timestamp(1655827598, 1),

"t" : NumberLong(1)

},

"numVotesNeeded" : 2,

"priorityAtElection" : 1,

"electionTimeoutMillis" : NumberLong(10000),

"numCatchUpOps" : NumberLong(0),

"newTermStartDate" : ISODate("2022-06-21T16:06:50.006Z")

},

"members" : [

{

"_id" : 0,

"name" : "155.155.1.184:27017",

"health" : 1,

"state" : 1,

"stateStr" : "PRIMARY",

"uptime" : 705,

"optime" : {

"ts" : Timestamp(1655827900, 1),

"t" : NumberLong(2)

},

"optimeDate" : ISODate("2022-06-21T16:11:40Z"),

"lastAppliedWallTime" : ISODate("2022-06-21T16:11:40.012Z"),

"lastDurableWallTime" : ISODate("2022-06-21T16:11:40.012Z"),

"syncSourceHost" : "",

"syncSourceId" : -1,

"infoMessage" : "",

"electionTime" : Timestamp(1655827609, 1),

"electionDate" : ISODate("2022-06-21T16:06:49Z"),

"configVersion" : 1,

"configTerm" : 2,

"self" : true,

"lastHeartbeatMessage" : ""

},

{

"_id" : 1,

"name" : "155.155.1.116:27017",

"health" : 1,

"state" : 5,

"stateStr" : "STARTUP2",

"uptime" : 306,

"optime" : {

"ts" : Timestamp(0, 0),

"t" : NumberLong(-1)

},

"optimeDurable" : {

"ts" : Timestamp(0, 0),

"t" : NumberLong(-1)

},

"optimeDate" : ISODate("1970-01-01T00:00:00Z"),

"optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),

"lastAppliedWallTime" : ISODate("1970-01-01T00:00:00Z"),

"lastDurableWallTime" : ISODate("1970-01-01T00:00:00Z"),

"lastHeartbeat" : ISODate("2022-06-21T16:11:44.008Z"),

"lastHeartbeatRecv" : ISODate("2022-06-21T16:11:44.043Z"),

"pingMs" : NumberLong(0),

"lastHeartbeatMessage" : "",

"syncSourceHost" : "155.155.1.184:27017",

"syncSourceId" : 0,

"infoMessage" : "",

"configVersion" : 1,

"configTerm" : 2

},

{

"_id" : 2,

"name" : "155.155.2.12:27017",

"health" : 1,

"state" : 5,

"stateStr" : "STARTUP2",

"uptime" : 306,

"optime" : {

"ts" : Timestamp(0, 0),

"t" : NumberLong(-1)

},

"optimeDurable" : {

"ts" : Timestamp(0, 0),

"t" : NumberLong(-1)

},

"optimeDate" : ISODate("1970-01-01T00:00:00Z"),

"optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),

"lastAppliedWallTime" : ISODate("1970-01-01T00:00:00Z"),

"lastDurableWallTime" : ISODate("1970-01-01T00:00:00Z"),

"lastHeartbeat" : ISODate("2022-06-21T16:11:44.510Z"),

"lastHeartbeatRecv" : ISODate("2022-06-21T16:11:44.608Z"),

"pingMs" : NumberLong(0),

"lastHeartbeatMessage" : "",

"syncSourceHost" : "155.155.1.184:27017",

"syncSourceId" : 0,

"infoMessage" : "",

"configVersion" : 1,

"configTerm" : 2

}

],

"ok" : 1

}

MongoDB Enterprise rs0:PRIMARY>

详细说明如下:

"_id" :  #集群中节点编号

"name" :  #成员服务器名称及端口

"health" :  #表示成员中的健康状态(0:down;1:up)

"state" :  #为0~10,表示成员的当前状态

"stateStr" :  #描述该成员是主库(PRIMARY)还是备库(SECONDARY)

"uptime" :  #该成员在线时间(秒)

"optime" :  #成员最后一次应用日志(oplog)的信息

"optimeDate" :  #成员最后一次应用日志(oplog)的时间

"electionTime" :  #当前primary从操作日志中选举信息

"electionDate" :  #当前primary被选定为primary的日期

"configVersion" :  #mongodb版本

"self" :  #为true 表示当前节点

登录其他节点的mongo查看,可以看到节点已经改变

接着我们在cda库的集群上也进行同样的操作(补充)

./mongo 127.0.0.1:28017

#通过验证

use admin

db.auth("admin","SdMgDb_@05");

#输入集群配置信息

config = {  _id : "configs",   

        members : [       

                {_id : 0, host : "155.155.1.184:28017" },       

                {_id : 1, host : "155.155.1.116:28017" },       

                {_id : 2, host : "155.155.2.12:28017" }   

            ]  }

#集群初始化配置

rs.initiate( {

  _id : "rs1",

  members: [

      { _id: 0, host: "155.155.1.184:28017" },

      { _id: 1, host: "155.155.1.116:28017" },

      { _id: 2, host: "155.155.2.12:28017" }

  ]

})

#退出重新登录

exit

./mongo 127.0.0.1:28017

use admin

db.auth("admin","SdMgDb_@05");

#查看状态

rs.status()

#集群配置信息

rs.conf()

3.2.4集群数据初始化同步说明

集群状态说明,通过上面可以看到,backup01和back02的节点是other,通过用户和密码认证之后可以看到显示为startup02,如下图

状态说明

状态号状态名称释义说明

0STARTUP启动尚未成为任何集群的活跃成员。所有成员都以这种状态启动。 mongod在启动时会解析

1PRIMARY主处于primary状态的成员是唯一可接受写操作的成员。有资格投票。

2SECONDARY辅助处于secondary状态的成员正在复制数据存储。有资格投票。

3RECOVERING恢复成员执行启动自检,或从 完成回滚或重新同步 过渡。有资格投票。

5STARTUP2启动2该成员已加入集群,并且正在运行初始同步。有资格投票。

6UNKNOWN未知从集群中另一个成员的角度看,该成员的状态未知。

7ARBITER仲裁仲裁不复制数据,仅存在于选举中。有资格投票。

8DOWN掉线从该集群的另一个成员看,该成员无法访问。

9ROLLBACK回滚该成员正在积极执行回滚。有资格投票。无法从该成员读取数据。从4.2版开始,当成员进入ROLLBACK状态时,MongoDB将终止所有正在进行的用户操作。

10REMOVED已删除此成员曾经在副本集中,但随后被删除

由于生产环境300多个G的数据存储,startup2代表主库正在和其他成员的库进行数据初始化同步,副本集中的每个数据承载成员都会进入STARTUP2状态这时它将成为副本集中的活跃成员并可以投票。然后,成员决定是否进行初始同步。如果成员开始初始同步,则该成员将保留在STARTUP2中,直到复制所有数据并构建所有索引为止。之后,成员转换为RECOVERING。

当副本集的成员尚未准备好接受读取时,它将进入RECOVERING状态。 RECOVERING状态可能在正常操作期间发生,并不一定反映错误情况。处于RECOVERING状态的成员有资格在选举中投票,但没有资格进入PRIMARY状态。

在复制了足够的数据以保证用于客户端读取的数据的一致视图之后,成员从RECOVERING过渡到SECONDARY。 RECOVERING和SECONDARY状态之间的唯一区别是RECOVERING禁止客户端读取,而SECONDARY允许它们读取。 SECONDARY状态不能保证任何有关主数据过时问题。

此时可以通过命令看到,mongodb的数据存储目录db是一直递增的,证明正在进行数据初始化同步

ll -h | grep  total

耐心等待之后,进入mongoshell,可以看到节点状态已经变成SECONDARY,证明集群环境已经恢复正常,可以继续进行集群环境测试

3.2.5集群环境测试

3.2.5.1数据同步测试

使用robo3t工具链接每台mongod,使用robo3t工具链接mongod集群,如图

在主库上增加数据进行测试,选中集合,点击右键,insert document,插入文档,可以看到主库现在已经被推选为2.12服务,所以i我们在2.12上进行新增数据

选中对应的集合,右键点击插入文档

数据内容

{


    "updateDate" : ISODate("2021-12-15T13:22:25.950Z"),

    "logScecode" : "CheckAppInfoAdd",

    "updateBy" : "HIIP",

    "logData" : "{\"resourceType\":\"ServiceRequest\",\"meta\":{\"versionId\":\"1\",\"lastUpdated\":\"2021-12-15T21:22:25.996\",\"source\":\"\"},\"identifier\":[{\"use\":\"usual\"}]}",

    "logSorcode" : "RIS",

    "createDate" : ISODate("2021-12-15T13:22:25.950Z"),

    "logTimeMsgout" : ISODate("2021-12-15T13:22:25.997Z"),

    "logTarcode" : "TechRM",

    "logSeq" : "2",

    "logSvcname" : "HIIP_CSB_HL7v3",

    "logMsgid" : "SJTBCS0000000000001",

    "logRequestid" : "11D08CE2-7B94-49B4-9A0C-2D5C8D8A2372",

    "createBy" : "HIIP",

    "logTimeMsgin" : ISODate("2021-12-15T13:22:25.950Z")

}

点击save插入数据。

查询展示

db.getCollection('CSBBusinessLog').find({'logMsgid':'SJTBCS0000000000001'})

PRIMARY

SECONDARY

可以看到,在PRIMARY 插入数据后,剩下的两个SECONDARY已经自动同步数据

接下来CDA库的集群我们同样进行如上的测试操作,此处不在展开说明

3.2.5.2高可用测试

接下来我们分别停止PRIMARY 和SECONDARY模拟业务down机情况,查看集群环境是否运行

停止PRIMARY 库测试

在PRIMARY 服务器上操作

/data/mongo/mongodb-hsblog/bin/mongod -shutdown --config /data/mongo/mongodb-hsblog/etc/mongodb.conf

主库已经停止,接下来我们使用工具分别连接集群和单机测试

使用robo3t单机连接测试,可以看到数据库已经连接不上。

使用集群连接,可以看到PRIMARY 已经从2.12变成1.184,数据也可以正常查询显示。

恢复正常环境后,SECONDARY节点down机测试

/data/mongo/mongodb-hsblog/bin/mongod -shutdown --config /data/mongo/mongodb-hsblog/etc/mongodb.conf

通过robo3t工具可以看到SECONDARY节点down机,对集群环境不产生影响

接下来CDA库的集群我们同样进行如上的测试操作,此处不在展开说明

3.2.6推举某个库为主节点(补充)

链接地址:Adjust Priority for Replica Set Member — MongoDB Manual

4、监控工具MMS安装配置

4.1MMS介绍

MMS全称 MongoDB Management Service,MongoDB早期叫法,新版本叫做MongoDB Ops Manager运维管理器,实质上MMS和MongoDB Ops Manager可以理解是一个同一个程序。

MongoDB Ops Manager运维管理器有三个大的功能,自动化、监视、备份。

自动化是指通过配置实现对进行Mongo节点和集群监控、备份、还原、部署等自动化作业。在每个MongoDB主机上使用自动化的MongoDB代理可以维护您的MongoDB部署。您可以安装MongoDB代理。自动化可以以及[部署和升级新的或现有的群集。

监视是指Ops Manager 监控提供有关关键数据库和硬件指标的实时报告、可视化和警报。当在MongoDB主机上激活监控时,监控会从MongoDB部署中的节点收集统计信息。代理将数据库统计信息传输回运维管,实时报告部署状态。您可以对所选指标设置警报。

备份是指Ops Manager Backup提供MongoDB副本集和[分片集群的计划快照和时间点恢复。当为MongoDB部署激活备份时,备份会从您指定的MongoDB进程中获取数据的快照。

本文中后面会用到监视、备份两大功能。

MMS可以理解为Mongo官方基于java开发的一个集自动化、监控、备份功能的一个程序,也是需要连接数据mongo数据库的,建议和要生产库分开,否则后面开启监控后会产生上百个库,容易和生成的搞混。另外MMS的库还存储的有副本集环境的OPLOG相当于归档日志,用于数据恢复。

4.2安装MMS运维管理工具

4.2.1上传MMS的压缩包到/data/mongo/目录下

cd /data/mongo/

对压缩包进行解压,并重命名

tar -zxf mongodb-mms-5.0.11.100.20220602T1040Z-1.x86_64.tar.gz

mv mongodb-mms-5.0.11.100.20220602T1040Z-1.x86_64/ mms

4.2.2生成key文件

到对应路径下运行mms-gen-key程序,运行后会在/etc/se 路径下生成key认证文件,mms进程启动的时候会用到

cd /data/mongo/mms/bin/

ll /etc/mongodb-mms/gen.key

4.2.3配置文件修改

修改数据库链接信息

vim /data/mongo/mms/conf/conf-mms.properties

修改数据库链接信息

增加一行

tlsAllowInvalidCertificates=false

mongo.mongoUri=mongodb://admin:admin1234@127.0.0.1:27017/?maxPoolSize=150&retryWrites=false&retryReads=false

注意此处密码带有特殊符号@ :/等需要进行转义,否则后面启动mms进程会报空指针异常,官网上有对照说明

连接字符串 URI 格式 — MongoDB 手册

4.2.4默认端口修改

mms默认web端口是8080和tomcat端口冲突,修改成8081

编辑文件,找到 BASE_PORT=8080 修改成 BASE_PORT=8081

vim /data/mongo/mms/conf/mms.conf

4.2.6启动MMS

启动会比较占用内存资源,根据服务器性能启动的效率会受影响

cd /data/mongo/mms/bin

# 启动命令

./mongodb-mms start

# 停止命令

./mongodb-mms stop

注意要确认Backup Daemon 备份守护进程是否启动,如果mms连接的是副本集数据库,默认不会启动的,需要手动启动./mongodb-mms-backup-daemon  start  ,只有mms连接单实例数据库才会跟随mongodb-mms一起启动

4.2.7初始化配置MMS

通过浏览器访问链接,首次登录需要注册账号

http://155.155.2.13:8081/account/login

点击登记注册账号,根据提示输入邮箱账号密码

注册完成登记之后进行运维管理器配置

运维管理器配置需要邮件服务器,如果内网有的话就根据提示配置,如果没有也无妨,因为是必填项就随机填写以下为例,其他的选项给空就可以

URL To Access Ops Manager *  http://155.155.2.13:8081/

"From" Email Address *  root@localhost

"Reply To" Email Address * root@localhost

Admin Email Address * root@localhost

Email Delivery Method Configuration *  SMTP Email Server

Transport * smtp

SMTP Server Hostname * mongo03

SMTP Server Port * 23

接着点击继续加载到下一页,全部默认点击继续

点击继续

点击继续

在mms服务器上创建目录

mkdir -p /opt/mongodb/mms/mongodb-releases/

接着点击继续

以上这些配置,我们用到的时候再从管理页面上进行修改

最后我们进入到web页面

5、MMS-auth-agent安装配置

5.1、MMS-auth-代理介绍配置

MongoDB代理作为单个二进制文件运行,监测、备份、自动化这三个功能都是基于代理实现的。

使用运维管理器 UI 激活监控和/或备份功能。

创建新集群或导入现有集群时激活自动化。

当在MMS启动的实话,会启动一个8443端口用于和其他服务器的mms-auto-agent代理程序进行通讯,收集监控数据,实现备份、自动化传输等功能。

5.2、MMS-auth-代理安装配置

登录运维管理工具MMS,点击代理=> 下载设置=》选择对应的linux版本,我们这里选择linux7的tar版本

他会自动弹出下载安装命令,我们这里根据提示操作

点击这里 下面会生成一个key,这个key只有首次生成的时候会出现,我们要把他记下来

mmsGroupId=62b1b717e36e174a392e01fb

mmsApiKey=62b1bf19e36e174a392e0776a66caab6807f68c27bb705911001873c

mmsBaseUrl=http://155.155.2.13:8081

5.3、通过shell进行安装MMS代理

由于我们需要在每一台装mongo的服务器上进行代理安装配置,此处我们选择用shell在服务器上进行安装

在mms服务器上创建sprict目录用于存放shell

mkdir -p /opt/sprict

vim /opt/sprict/mongo-auth-agent-install

输入下列内容

#! /bin/bash

#下载安装重命名

cd /data/mongo/

curl -OL http://155.155.2.13:8081/download/agent/automation/mongodb-mms-automation-agent-11.0.16.7080-1.rhel7_x86_64.tar.gz >> /data/mongo/mongo-mms-auto-agent-install.log

sleep 2

tar -xvf mongodb-mms-automation-agent-11.0.16.7080-1.rhel7_x86_64.tar.gz >> /data/mongo/mongo-mms-auto-agent-install.log

mv  mongodb-mms-automation-agent-11.0.16.7080-1.rhel7_x86_64 mongodb-mms-automation-agent

#修改配置文件

sed -i 's/mmsGroupId=/mmsGroupId=62b1b717e36e174a392e01fb/g' /data/mongo/mongodb-mms-automation-agent/local.config

sed -i 's/mmsApiKey=/mmsApiKey=62b1bf19e36e174a392e0776a66caab6807f68c27bb705911001873c/g' /data/mongo/mongodb-mms-automation-agent/local.config

sed -i 's/mmsBaseUrl=/mmsBaseUrl=http:\/\/155.155.2.13:8081/g' /data/mongo/mongodb-mms-automation-agent/local.config

#创建相关目录

mkdir -p  /var/lib/mongodb-mms-automation

mkdir -p /var/log/mongodb-mms-automation-agent

#单词script拼写错误目录调整,后续项目安装调整

mkdir -p /opt/sprict/

#创建启动脚本

echo "#! /bin/bash" >> /opt/sprict/mongo-mms-auto.start

echo "cd /data/mongo/mongodb-mms-automation-agent" >> /opt/sprict/mongo-mms-auto.start

echo "nohup ./mongodb-mms-automation-agent --config=local.config >> /var/log/mongodb-mms-automation-agent/automation-agent-fatal.log 2>&1 &" >> /opt/sprict/mongo-mms-auto.start

chmod +x /opt/sprict/mongo-mms-auto.start

#创建软链接并执行

ln -s /opt/sprict/mongo-mms-auto.start /data/mongo/mongodb-mms-automation-agent/mongo-mms-auto.start

/data/mongo/mongodb-mms-automation-agent/mongo-mms-auto.start >> /data/mongo/mongo-mms-auto-agent-install.log

授予执行权限,并执行

chmod +x /opt/sprict/mongo-auth-agent-install

/opt/sprict/mongo-auth-agent-install

执行完成之后查看mongo进程,可以看到mongodb-mms-automation-agent --config=local.config  已经启动

通过scp 将mms代理安装脚本拷贝到http服务器上,(http服务配置参照《Linux系统yum源软件安装环境配置20220304更新.docx》文档)

scp -r /opt/sprict/mongo-auth-agent-install root@155.155.1.56:/var/www/html/sprictshell/

在master、backup01、backup02服务器上分别执行

curl http://155.155.1.56/sprictshell/mongo-auth-agent-install | bash

ps aux|grep mongodb-mms

5.4通过运维管理工具查看安装的代理服务

代理安装完成之后在页面Servers可以看到安装的代理服务

6、MMS-代理以及备份配置

6.1单机数据库代理配置

点击添加新的=》现有的MongoDB部署,如图

前面已经安装过代理,点击继续

点击继续

输入主机名、mms数据库的端口、选择启用身份验证、申请验证机制选择用户名和密码,输入相对于的数据库用户名和密码,点击继续,耐心等待

提示找到部署之后点击继续

配置完成后可以在servers页面里面看到代理服务上跑的数据库、端口 以及版本信息

点击Processes页面还可以看到监控的数据,包括数据库大小,连接数等

接着点击METRICS可以看到详细的数据库监控

点击页面尾部的+-号指标按钮,可以在增加或者显示相关的指标数据

说明,这些数据都是由通过代理收集后,存储在mongodb-mms库中,同时mongodb也会创建上百个库,来存储这些监控的数据。可以通过robo3t工具进行查看,库比较多此处不在一一列举。

6.2集群数据库代理配置

6.2.1开启集群认证,否则后面无法进行数据库备份作业

依次点击安全、Authenticxxxation & TLS、编辑设置

我们采用5.0.9版本,根据提示 选择第二项 用户名和密码设置,点击下一个

继续点击下一个

勾选代理身份验证机制,其他的都不用操作,点击save

完成之后,可以看到备份身份验证已经开启

6.2.2集群数据库代理及配置

集群数据库代理配置参照单机版本,过程类似,点击添加新的=》现有的MongoDB部署,如图

输入mongo服务的端口设置,点击继续后耐心等待,直到下面提示发现部署后,点击继续按钮

点击继续按钮

这里选择不,只是监视器,自动化需要连接外网的mongo依赖库去下载脚本等。

接下来回到主页面就可以看到集群的配置信息,同样点击过程,也可以看到监控的数据,和单机操作类似。

接下来点击这里,激活监控和激活备份功能,每个代理都要开启。

接下来横幅上面会有操作审查,只有通过审核后功能才能真正开启,我们可以把多个动作一起审查,点击确认和部署

备注此处添加了的代理hsblogdb的集群id为rs0的代理配置,cda集群的代理配置此处不在展开说明。

6.3集群数据库备份配置

6.3.1备份作业创建

在页面上点击连续备份

点击配置备份模块

在mongo-mms服务器上创建目录,并填写上去,点击设置

mkdir -p /data/mongo/heads/

等待找到备份守护程序后,点击启动守护程序

选择配置文件存储系统

在mongomms里面创建目录并填写,点击保存

mkdir -p /data/mongo/heads/fileback

输入mongomms库的连接信息,并点击保存

接下来点击返回项目,再次选择连续备份,点击开始设置,进行定时备份配置

点击 下一个

代理前面已经安装配置成功,我们继续点击下一个

这里选择副本集rs0,点击开始备份

作业已经创建成功

备注此处添加了的代理hsblogdb的集群id为rs0的备份作业创建,cda集群的备份作业创建此处不在展开说明。

6.3.2备份作业配置

如图,依次点击 ... 数据库凭据配置

在右侧弹框中输入要备份库的数据库用户名和密码,点击提交

继续点击快照计划,可以进行快照备份的时间设置

如下图

接下来我们查看备份作业运行情况,点击右上角的admin,依次点击备份、工作、搜索可以看到备份的作业

点击作业时间表可以查看详细的情况

备份作业首次配置完成之后,WT checkpoint 之后默认会进行第一次快照备份,由于生产环境数据量较大,耐心即可。

备注此处添加了的代理hsblogdb的集群id为rs0的备份作业配置,cda集群的备份作业配置此处不在展开说明。

经过一段时间时间再次查看定时任务和OPLOG已经执行

从admin 管理页面进去查看备份作业

7、备份恢复

备份恢复,获取快照有两种方法,一种是通过页面网页进行下载,另外一种方法是去对应存储目录下进行拷贝。紧急情况下第一种方法受限于网络传输效率,通常采用第二种方法,效率高一点。

到对应的MMS服务器的存放快照的目录下

目录说明62b1b717e36e174a392e01fb 是项目的项目id,接下来rs0和rs1是集群的名称,62b322560b5d061415e08046是集群快照的id

cd /data/mongo/heads/fileback/62b1b717e36e174a392e01fb/rs0/62b322560b5d061415e08046/

接下来重新安装配置一个MongoD实例,把/data/mongo/heads/fileback/62b1b717e36e174a392e01fb/rs0/62b322560b5d061415e08046/ 目录下的数据文件拷贝到新安装配置的MongoD实例下的db文件夹,然后启动实例就可以了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,490评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,581评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,830评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,957评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,974评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,754评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,464评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,847评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,995评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,137评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,819评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,482评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,023评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,149评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,409评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,086评论 2 355

推荐阅读更多精彩内容