So konfigurieren Sie das automatische automatische Failover von PostgreSQL Hotstandby

7

Ich habe zwei PostgreSQL-Server so konfiguriert, dass sie durch Streaming Hot Standby haben.

Wie kann ich es so konfigurieren, dass der Slave-Server automatisch zum neuen Master wird, wenn der Master-Server ausfällt?

Colin 't Hart
quelle
Ich bin verwirrt, dass ich den Beitrag eines anderen bearbeiten kann. Wer kann mir sagen warum?
Franken

Antworten:

12

Failover - automatisch oder anderweitig - wird nicht direkt von PostgreSQL bereitgestellt.

Sie benötigen externe Tools wie repmgr .

Das neu veröffentlichte repmgr 2.0 unterstützt Autofailover. Ich empfehle jedoch, sehr gründlich darüber nachzudenken, ob Sie es tatsächlich verwenden sollten. Automatisiertes manuell ausgelöstes Failover ist normalerweise viel sicherer.

Wenn Sie sich für die Verwendung von Autofailover entscheiden, sollten Sie sicherstellen, dass Autofailover im Rahmen des normalen Betriebs erzwungen werden, um sicherzustellen, dass sie in Ihrer Umgebung wirklich funktionieren. Andernfalls ist es nur ein falsches Sicherheitsgefühl, und wenn etwas tatsächlich kaputt geht, wird es wahrscheinlich das gesamte System in Unordnung bringen.

Sie sollten jedes Failover-Setup natürlich regelmäßig testen, aber zumindest bei manuell ausgelöstem Failover wissen Sie, dass es passieren wird, und sind bereit, bei Problemen einzugreifen.

Es geht auch nicht nur darum, den Server zu promoten und den alten Master als Replikat neu zu erstellen. Sie müssen sich auch mit der Notwendigkeit befassen, Clientverbindungen auf den neuen Server umzustellen (mithilfe von PgBouncer, PgPool-II oder HAProxy). Sie müssen den alten Server auch zuverlässig beenden, damit es nicht zu Abweichungen kommt, bei denen beide Server glauben, sie seien Master, und einige Clients schreiben an jeden von ihnen.

Zu all dem gibt es in der PostgreSQL-Dokumentation und im Wiki einiges an Informationen. Ich schlage vor, dass Sie dort anfangen.

Craig Ringer
quelle
Hallo, welche gängigen automatischen Failover-Lösungen verwenden Sie in der Produktionsumgebung? PgPool? oder pgbouncer + repmgr?
Franken
Normalerweise pgbouncer + repmgr, wobei repmgr so eingerichtet ist, dass die Verbindungseinstellungen von pgbouncer geändert und beim Failover neu gestartet werden. pg_hba.conf und / oder Firewall sind so eingestellt, dass Clients keine direkte Verbindung zu einem der DB-Server herstellen können, sondern nur zu pgbouncer.
Craig Ringer
Vielen Dank für Ihre Antwort. Wenn Sie pgbouncer + repmgr verwenden, benötigen wir ein Skript, um das Failover zu verwalten? Vielleicht sollte ein Skript schreiben, um die pgbouncer-Konfigurationsdatei zu ändern? Hast du einen Blog darüber? Vielen Dank !
Franken
Ich fürchte, ich habe nichts zur Hand. Ich werde es meiner Themenliste hinzufügen und versuchen, einen Moment zum Schreiben zu finden.
Craig Ringer
@CraigRinger Können Sie bitte klarstellen, dass ein automatisiertes manuell ausgelöstes Failover normalerweise viel sicherer ist.
www.tyme-it.com
0

Ab PostgreSQL 9.3+ können Sie auch PAF verwenden . Das Starten / Stoppen / Heraufstufen Ihrer Datenbank erfolgt über eine Ressource in einem Pacemaker-Cluster.

kubanczyk
quelle