Product

Wöchentliches Produkt-Update: Upgrade auf MongoDB 2.4.1

Diese Woche haben wir uns auf Backend-Verbesserungen konzentriert, um Mailgun leistungsstärker, zuverlässiger und skalierbarer zu machen. Weiterlesen...
Bild für Wöchentliches Produkt-Update: Upgrade auf MongoDB 2.4.1

Ursprünglich veröffentlicht am 12. April 2013.

Diese Woche haben wir uns auf Backend-Verbesserungen konzentriert, um Mailgun leistungsstärker, zuverlässiger und skalierbarer zu machen. Viel langweiliges Zeug, aber hoffentlich spüren Sie den Unterschied.

Eine der Maßnahmen war insbesondere das Upgrade von MongoDB Version 2.2 auf 2.4.1. Wir sind hier bei Mailgun große Fans von MongoDB. Der ausführlichere Beitrag „Warum MongoDB“ ist längst überfällig. In der Zwischenzeit geben wir Ihnen ein paar Einblicke in unsere Erfahrungen beim Upgrade auf die neueste MongoDB-Version. Außerdem haben wir ein Upgrade auf die neueste Version von pymongo vorgenommen: den MongoDB-Python-Treiber.

Upgrade von 2.2 auf MongoDB 2.4.1

Wir empfehlen diesen Versionssprung allen, die MongoDB produktiv nutzen. Während Sie die vollständige Liste der Neuerungen in 2.4.1 auf der 10Gen-Website einsehen können, finden Sie unten die Liste der Funktionen und Verbesserungen, die wir bei der Evaluierung in unserer Staging-Umgebung als besonders vorteilhaft empfunden haben:

  • Neue Klassen für MongoClient und MongoReplicaSet. Sie führen den neuen sicheren Standard ein: das Warten auf Schreibbestätigungen.
  • Fehlerbehebungen, die nach der Einführung von 2.4 vorgenommen wurden.

Unser Infrastruktur-Team hat das Upgrade auf einem stark ausgelasteten Live-System ohne jegliche Probleme durchgeführt.

Upgrade der PyMongo-Version

Nun, standardmäßig werden die Tests nicht erfolgreich sein.  Sie müssen einige Importfehler beheben. Zum Beispiel wurde das objectidmodule von pymongo in das bson-Paket verschoben. Ansonsten ist das Upgrade ziemlich sicher, da das neue Standardverhalten nur in den neuen Verbindungsklassen vorhanden ist.

Es gibt jedoch einen wichtigen Vorbehalt zu beachten: In dieser Version hat 10Gen das Konzept von Requests eingeführt. Die Verbindungsobjekte, die Sie von pymongo erhalten, sind nun standardmäßig an ihren aufrufenden Thread gebunden. Unsere Tests zeigten einen Leistungsabfall um den Faktor 3. Ihre Erfahrungen können abweichen, aber so oder so ist es eine sehr gravierende Änderung des Standardverhaltens. Wir wünschten, 10Gen wäre hierbei deutlicher gewesen.

Upgrade der Server

Sie sollten MongoDB nicht ohne Replica-Sets verwenden. Dies gibt Ihnen nicht nur die Möglichkeit, widerstandsfähig gegenüber Hardwareausfällen zu sein, sondern ermöglicht es auch, Versions-Upgrades der Datenbank im laufenden Betrieb durchzuführen. Dies sind die Schritte, die wir befolgen:

  • Stellen Sie natürlich sicher, dass Sie ein aktuelles Backup Ihrer Daten haben. Wir erstellen Backups, indem wir einen der sekundären Knoten herunterfahren, dessen Datenbank komprimieren und die Tar-Datei des DB-Verzeichnisses senden an Rackspace Cloud Files.
  • Nehmen Sie das Upgrade jeweils für einen sekundären Knoten vor, während Sie den Status eines Replica-Sets überwachen.
  • Stufen Sie abschließend den primären Knoten zurück.
  • Nehmen Sie das Upgrade für den primären Knoten vor.

Alles in allem ein sehr langweiliger und ereignisloser Vorgang. Genau so, wie wir es bei Datenbanken mögen.

Bis nächste Woche.

Viel Spaß beim E-Mail-Versand,
Ihr Mailgun-Team