Mungo liest nicht aus der Mongo-Sekundärdatenbank

8

Ich habe einen Replikatsatz implementiert, den ich global verwende. Ich habe meinen Master in Oregon, USA und 4 Secondaries. Kalifornien und Virginia, Frankfurt und Sydney. Ich habe auch Webserver in diesen Regionen. Diese Webserver verbinden sich mit Mungo mit Mongo:

%Vor%

Mein Problem ist, dass mein Client eine höhere Latenz in der Datenbank hat, je nachdem wie weit er vom Master entfernt ist. Kalifornien bekommt 40ms, während Sydney 400ms bekommt. Ich verstehe nicht, warum dies geschieht, da sie die Sekundärdatenbank in ihrer Region ablesen sollten.

Ich verstehe, dass Schreibvorgänge mit dem primären durchgeführt werden müssen, aber selbst wenn ich einen Fund ausführe, sollte es dann nicht auf der sekundären Region durchgeführt werden und ziemlich schnell zurückkehren?

Mir ist klar, dass es einige redundante Optionen in dieser Konfiguration gibt, aber ich bin verzweifelt. Ich habe auch die Option "ReadPreference.NEAREST" ohne Erfolg versucht.

    
Josh Elias 12.07.2015, 16:13
quelle

3 Antworten

3

Versuchen Sie es mit den folgenden Optionen:

%Vor%

Obwohl in der Dokumentation ping als Standardstrategie angegeben ist, scheint es Mongoose-Mandaten zu geben, dass Sie eine angeben, wenn Sie readPreference verwenden.

Beachten Sie auch, dass secondaryPreferred nicht dasselbe ist wie nearest . secondaryPreferred liest unabhängig von der Netzwerklatenz sekundäre Mitglieder aus (wie der Name schon sagt), wobei nearest die Lesevorgänge für das Mitglied mit der geringsten Netzwerklatenz priorisiert.

Stellen Sie vor einer Fehlkonfiguration in Ihrer Replikatgruppe sicher, dass Ihre Primärdatenbank online und erreichbar ist. Standardmäßig wird Mongoose die Verwendung einer Sekundärdatenbank verweigern, wenn die Primärdatenbank offline ist.

    
jduncanator 21.07.2015, 04:26
quelle
3

Bearbeiten

Versuchen Sie, die Leseeinstellung für die Verbindungszeichenfolge selbst mit mongodb://connection/db/?readPreference=secondary und nicht in den dbOptions einzustellen. Ich kann nichts in der node-mongodb-native finden, die besagt, dass eine Lesevoreinstellung zur replset-Konfiguration hinzugefügt werden kann. Ссылка

Alte Antwort

Sie müssen die Einstellung möglicherweise auf den nächsten und nicht auf den zweiten bevorzugten Wert festlegen. Ссылка

    
ThrowsException 12.07.2015 19:06
quelle
0
%Vor%

Das hat für mich funktioniert

    
Saif 01.09.2017 13:36
quelle