Replikationsarten in MongoDB





Hallo Khabrovites! Wir haben für Sie einen Teil des MongoDB-Tutorials von Evgeny Aristov, einem 20-jährigen Entwickler und Autor des Online-Kurses "Non-Relational Databases", dekodiert . Das Material ist wie der Kurs selbst nützlich für Spezialisten, die auf NoSQL stoßen und lernen möchten, wie sie ihre Datenbanken optimieren und mit ihnen arbeiten können.



Warum replizieren?



  1. Hohe Verfügbarkeit. Ein Backup ist gut, aber die Bereitstellung dauert einige Zeit.
  2. Horizontale Skalierung. In dem Fall, in dem dem Server die physischen Kerne und der Speicher ausgehen.
  3. Es ist besser, ein Backup von einem Replikat zu erstellen, nicht von einem Master.
  4. Geoverteilung laden.


In MongoDB gibt es nicht viele sofort einsatzbereite Replikationsarten: Die derzeit relevanteste ist Replicaset, und die zweite ist Master-Slave, die auf Version 3.6 beschränkt ist und in diesem Artikel nicht ausführlich behandelt wird.



# 1. Schreiben und Lesen vom Hauptserver



Wir haben einen Clientanwendungstreiber, der auf den Primärknoten liest und schreibt. Ferner werden gemäß dem Replikationsprotokoll die Informationen, die in den Primärknoten geschrieben werden, an die Sekundärknoten gesendet.







# 2. Lesen aus einem Stichwort



Eine Alternative zum Lesen und Schreiben von Primary ist, wenn der Fahrer Informationen von Secondary lesen kann. In diesem Fall können die Einstellungen unterschiedlich sein, z. B. "Es ist vorzuziehen, Informationen von Secondary und dann von Primary zu lesen" oder "Informationen vom nächsten Knoten auf der Netzwerkkarte zu lesen" usw. Solche Konfigurationsoptionen werden häufiger verwendet als die erste Replikationsoption, bei der alles über die primäre Option erfolgt.







3 Möglichkeiten, eine Replik lesbar zu machen:



  • Angeben db.slaveOk()
  • Geben Sie die erforderlichen Parameter in der Treiberverbindungszeichenfolge an
  • Geben Sie alles an und schreiben Sie dann genauer in die Abfrage selbst, z. B. aus Secondary in der Region South: db.collection.find({}).readPref( “secondary”, [ { “region”: “South”} ] )


Probleme beim Lesen von Replikaten



  1. Da die Aufzeichnung asynchron ist, kann sie bereits auf der Primärdatenbank erstellt werden, erreicht jedoch nicht die Sekundärdatenbank, sodass alte Daten von der Sekundärdatenbank gelesen werden.
  2. , , .

    , . MongoDB , , , .
  3. , () — «».




A) Knoten "hören" einander zu, diese Verbindung wird als Heartbeat bezeichnet. Das heißt, jeder Knoten wird ständig von anderen auf das Thema "Leben / Nichtleben" überprüft, um Maßnahmen zu ergreifen, wenn etwas passiert.







B) Ein Sekundärknoten wird in Arbiter geändert. Dies ist eine sehr leichte Anwendung, die als Mongo ausgeführt wird, praktisch keine Ressourcen verbraucht und dafür verantwortlich ist, zu bestimmen, welcher Knoten zum Zeitpunkt der Abstimmung den Hauptknoten erkennt. Dies ist im Allgemeinen die empfohlene Konfiguration.







Die Hauptmerkmale dieser Konfiguration



  • Asynchrone Replikation
  • Der Arbiter ist datenfrei und daher sehr leicht
  • Primär kann Sekundär werden und umgekehrt. Der Schiedsrichter kann weder primär noch sekundär werden
  • Die maximale Anzahl von Antworten beträgt 50 und nur 7 von ihnen sind wahlberechtigt
  • Arbiter Primary Secondary, , .. , Arbiter .


Wenn Sie mehr über die Clustering-Funktionen von MongoDB erfahren möchten, können Sie hier eine Aufzeichnung der gesamten Demo-Lektion ansehen . In der Lektion demonstriert Evgeny Aristov die Unterschiede zwischen Replicaset und Master-Slave, erklärt den Quorum-Prozess, die Skalierung, das Sharding und die richtige Auswahl des Schlüssels für das Sharding.



Das Erkunden der Funktionen von MongoDB ist Teil des Online-Kurses für nicht relationale Datenbanken. Der Kurs richtet sich an Entwickler, Administratoren und andere Fachleute, die auf NoSQL stoßen. Im Klassenzimmer beherrschen die Schüler in der Praxis heute die wichtigsten Werkzeuge: Cassandra, MongoDB, Redis, ClickHouse, Tarantool, Kafka, Neo4j, RabbitMQ.



Der Start ist bereits am 30. September, aber im ersten Monat können Sie der Gruppe beitreten. Studieren Sie das Programm, gehen Sie durchEingangstest und mitmachen!



All Articles