MongoDB: как обеспечить чтение с определенного вторичного сервера из кластера осколков?

Здесь у меня есть настройка кластера монго с двумя серверами конфигурации, двумя осколками, каждый из которых имеет 3 узла и один сервер монго. Например,

Серверы конфигурации IP1 configsvr1 IP2 configsvr2

Осколок 1 IP3 shardsvr1 (основной) IP4 shardsvr2 (дополнительный) IP5 shardsvr3 (дополнительный)

Осколок 2 IP6 shardsvr4 (основной) IP7 shardsvr5 (дополнительный) IP8 shardsvr6 (дополнительный)

IP9 монго

Теперь, возможно ли сделать все операции чтения на определенном узле каждого осколка, скажем -

Все операции чтения должны выполняться в сегменте 1 через узел shardsvr3 и в сегменте 2 через shardsvr6.

Пожалуйста, поделитесь своими мыслями!

Заранее спасибо,


person Vijayr32    schedule 16.10.2018    source источник
comment
я не уверен, говорите ли вы читать с определенного вторичного или члена, потому что вторичный может быть выбран в качестве основного, но если вы хотите, чтобы этот участник всегда был вторичным, отметьте его как член с приоритетом 0   -  person Arun Pratap Singh    schedule 03.05.2020


Ответы (1)


После изучения я узнал, что можно выполнять все операции чтения на определенном вторичном узле.

Вот несколько шагов, чтобы сделать это -

  • Добавить тег во вторичный узел conf = rs.conf() conf.members[0].tags = {"use": "production" } rs.reconfig(conf)
  • установить вторичное предпочтение чтения db.getMongo().setReadPref('secondary')
  • Теперь запросите, передав тег в строке запроса

Использование spring-data-mongodb

MongoClientOptions mongoClientOptions = MongoClientOptions.builder() .connectTimeout(connectionTimeoutInterval) .socketTimeout(socketTimeoutInterval) .serverSelectionTimeout(serverSelectionTimeoutInterval) .readPreference(TaggableReadPreference.secondary(new TagSet(createTagList())))) .build();

вернуть новый MongoClient (новый ServerAddress (хост, порт), Collections.singletonList (MongoCredential.createCredential (dbUserName, databaseName, dbPassword.toCharArray ())), mongoClientOptions);

person Vijayr32    schedule 29.05.2019