Mongo 副本集负载管理

问题描述

目前我有两个使用 mongo 副本集的节点应用程序(1 个主节点和 6 个辅助节点)。目前,一个应用程序的读取查询会导致 mongo 负载并影响另一个应用程序的性能。因此,我想划分辅助节点,以便 1 个应用程序使用主要成员和 4 个辅助成员,另一个应用程序使用主要成员和其他 2 个辅助成员。我不希望一个应用程序的负载影响另一个。我如何实现相同的目标?

解决方法

您可以为每个应用程序设置不同的标签,并从每个定义的标签的 SECONDARY 成员中读取,例如:

app1--> db.collection.find({}).readPref( "secondary",[ { "app": "app1" } ] )
app2--> db.collection.find({}).readPref( "secondary",[ { "app": "app2" } ] )

您是否有以下副本集:

{
"_id" : "myrs","version" : 2,"members" : [
         {
                 "_id" : 0,"host" : "host1:27017","tags" : {
                         "app": "app1"
                 }
         },{
                 "_id" : 1,"host" : "host2:27017",{
                 "_id" : 2,"host" : "host3:27017",{
                 "_id" : 3,"host" : "host4:27017","tags" : {
                         "app": "app2"

                 }
         },{
                 "_id" : 4,"tags" : {
                         "app": "app2"

                 }
         }           
]
}

如何添加标签:

conf = rs.conf();
conf.members[0].tags = { "app": "app1" };
conf.members[1].tags = { "app": "app1" };
conf.members[2].tags = { "app": "app2" };
conf.members[3].tags = { "app": "app2" };
conf.members[4].tags = { "app": "app2" };
rs.reconfig(conf);