PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PostgreSQL-Datenbanken abgleichen



pibi
12.05.16, 16:24
Hallo zusammen

Gegeben sind zwei Datenbanken "PostgreSQL 9.4" auf zwei Servern (Debian7 und Debian8). Die Inhalte (immer ganze Schemata) sollen zu unterschiedlichen Zeiten von Server1 nach Server2 kopiert werden. Tools wie die PG-interne Replication (und auch slony, wenn ich das richtig verstanden habe) scheiden aus, weil sie immer sofort synchronisieren. Koennt Ihr mir Tools empfehlen, die so etwas koennen? Also etwa so:
Schema1 um 20:00 von Server1 auf Server2 synchronisieren
Schema2 um 23:00 Uhr von Server1 nach Server2 synchronisieren
Schema3 alle 30min. von Server1 nach Server2 synchronisieren
Schema4 beim Erreichen eines bestimmten Ereignisses von Server1 nach Server2 synchronisieren

Letzteres ware ein "nice-to-have".

Die Alternative waere, dass ich verschiedene Scripts zusammenkloepple, die einen pg_dump in ein File ausfuehre, dieses File dann auf die andere Maschine kopiere, dann dort alle Tabellen truncate und neu befuelle. Auch koennte man das ganze Schema loeschen und aus dem Dump neu erstellen.

Aber wenn es so etwas schon fertig gibt, koennte ich mir die Arbeit ersparen;-)

Danke fuer Tips und Gruss
Pit.

fork
12.05.16, 18:04
Wenn ich da so nach google, dann ist da eine Möglichkeit den walsender abzuschalten und wieder neu zu starten auf dem Slave. Ob das was dann dabei rauskommt allerdings konsistente Datenbanken sind, dass weiss ich jetzt nicht.

Im übrigen muss man die Dumps ja noch nicht mal kopieren. Profi-Tip: psql ist Netzwerkfähig!

marce
12.05.16, 19:00
die interner Replikation hält immer den kompletten Server konsistent - damit dürfte das gewünschte nicht erreicht werden können. Konsistent wären die Daten, wenn genügend WAL-Segmente vorhanden sind.

Ob pgdump + Import "passt" - hängt von den Datenmengen ab.

Ich könnte mir vorstellen, daß man sowas über einen SQL-Proxy erreichen könnte - fertig wüsste ich aber nichts, den Anwendungsfall sehe ich als zu exotisch.

pibi
14.05.16, 15:20
Hallo zusammen

Danke erstmal fuer die bisherigen Antworten. Was mich mich noch speziell interessiert ist die Frage, ob slony-I ebenfalls sofort synchronisiert oder ob man dort auch eine Art "Zeitfenster" vorgeben kann. Ich bis aus der Doku nicht ganz schlau geworden. Vielleicht habe ich auch nur die falschen Suchbegriffe verwendet;-)

Gibt es hier in diesem Forum Admins, die slony-I einsetzen?

Gruss Pit.

marce
14.05.16, 16:35
Nö, wir ham' hier nur normale Master-Slave-Replicas am laufen.

Slony könnte Dir haber helfen, ggf.auch in Verbindung mit http://stackoverflow.com/questions/29291854/how-to-introduce-delay-in-postgresql-9-3-replication - und evtl. ein paar Ideen von http://stackoverflow.com/questions/6365710/database-content-versioning und Artverwandltem

Evtl - so hart das klingt - ist aber vielleicht auch eine "normale" Datenbank nicht die beste Methode das zu erreichen, weil in denen Stände / Historie und Konsorten meist nicht oder nur sehr schwach implementiert sind. Da wären andere Tools evtl. die bessere Wahl, evtl. was Richtung Hadoop oder ElasticSearch...