25 November 2013

Kritischer Fehler in PostgreSQL®

In den aktuellen Versionen von PostgreSQL® hat sich ein kritischer Fehler eingeschlichen.

Betroffen sind alle aktuellen Versionen der Hauptzweige 9.0, 9.1, 9.2 und alle Versionen für 9.3. Dies sind im einzelnen

  • 9.0.14
  • 9.1.10
  • 9.2.5
  • 9.3.0 und 9.3.1

Der Fehler an sich ist relativ schwer zu diagnostizieren und betrifft ausschließlich Standbyserver, die mit dem Parameter hot_standby=on betrieben werden. Betroffene Standbyserver können folgende Symptome aufweisen:

  • Fehlende Zeilen in Tabellen auf dem Standbyserver
  • Zeilen sind auf dem Standby noch vorhanden obwohl auf dem Master gelöscht
  • Alte Werte tauchen in den Zeilen auf Standbyserver auf, obwohl diese auf dem Master aktualisiert wurden
  • Index und Constraint Fehler (teilweise auch als Folgefehler)

Durch sogenannte Hintbits können diese Symptome verdeckt werden, so dass die Fehler erst viel später erkannt werden. Die Fehlerbedingung wird durch (Neu-)Starten des Standbyservers ausgelöst, während des Startens werden fälschlicherweise bereits bestätigte Transaktionen als Uncommitted markiert. Auch müssen sehr viele Schreibaktionen innerhalb einer bestimmten Zeit aufgelaufen sein, um diesen Bug auszulösen. Nutzer der Versionen 9.0.13, 9.1.9 und 9.2.4 sollten die nächste Version überspringen und auf die aktualisierten Versionen 9.0.15, 9.1.11 und 9.2.6 warten. Diese werden in der ersten Dezemberwoche veröffentlicht.

Wurde bereits auf ein betroffenes Release aktualisiert, so sollte für die Standbyserver mit den Versionen aus den 9.0, 9.1 und 9.2 Zweigen unbedingt ein Downgrade in Erwägung gezogen werden. Ein anschließendes neues Aufsetzen des Standby ist angeraten. Alternativ kann auch mit einem bereits aktualisiertem Standby nach erneutem Basebackup und Neuaufsetzen der Betrieb fortgesetzt werden. Voraussetzung ist, dass während der Basissicherung für den Standby und bis zu dessem Start keinerlei Schreibaktivität auf dem Primary stattfindet. Der Fehler wird nur während des Starts des Standby ausgelöst, dies bedeutet jedoch eine Downtime für den Master. Anschließend sollte ein Neustart des Standby bei gleichzeitig hohem Schreibaufkommen auf dem Master unbedingt vermieden werden.

Wer auf Leseabfragen verzichten kann, sollte bis zur Verfügbarkeit einer neuen fehlerbereinigten Version auf jeden Fall auch das Abschalten des Parameters hot_standby in Erwägung ziehen. Dies ist auch für alle Versionen des 9.3 Zweiges angeraten, da hier der Fehler in allen verfügbaren Versionen enthalten ist. Auch hier gilt, dass der Standby komplett ohne Schreibaktivität auf dem Master neu aufgebaut werden sollte, um Korruption vorzubeugen.

Nutzer, die direkt aus den Quelltext ihre Systeme aufbauen, können den Patch direkt aus dem git Master in ihre Buildumgebung integrieren. Weiterführende Informationen findet sich auch auf einer eigenen Seite im PostgresQL Wiki.

Sollten Sie unsere Unterstüzung benötigen, dann hilft Ihnen unser Open Source Support Center gerne weiter.

Kategorien: Aktuelles
Tags: PostgreSQL® Sicherheit

BH

über den Autor

Bernd Helmle

Technischer Leiter Datenbanken

zur Person

Bernd Helmle arbeitet als Datenbankberater und -entwickler für die credativ GmbH, Deutschland. Er verfügt über umfassende Erfahrung in der PostgreSQL<sup>®</sup>-Administration, Hochverfügbarkeitslösungen und PostgreSQL<sup>®</sup>-Optimierung und Performance-Tuning. Außerdem war er an verschiedenen Migrationsprojekten von anderen Datenbanken zu PostgreSQL<sup>®</sup> beteiligt. Bernd Helmle entwickelte und betreut die Informix Foreign Data Wrapper Erweiterung für PostgreSQL<sup>®</sup>.

Beiträge ansehen


Beitrag teilen: