Replikationslösung

Hallo, beschäftige mich seit etwa einer Woche mit Postgres.
Habe mitlerweile zwei Enterprise Postgres auf Ubuntu aufgesetzt und mich pgAdmin3 und SQL Manager verbunden.
Jetzt frage ich mich wenn ich hier meine zwei bis drei Server hab, wie kann ich die Replizieren?
Was ist hier die übliche vorgehensweise?
Hab jetzt schon von pgpool2 gehört.
Was empfehlt Ihr?

Einen Blick in die Doku werfen?

PostgreSQL: Documentation: Manuals: PostgreSQL 8.4: High Availability, Load Balancing, and Replication


Auf 9.0 warten?

select * from depesz; » Blog Archive » Waiting for 9.0 – Streaming replication
select * from depesz; » Blog Archive » Waiting for 8.5 – Hot Standby

Andreas

wie sieht es mit der enterprisedb aus? liefert die nicht ein master to master replications tool mit?
hat vielleicht hiertu einer eine doku?

Wo genau steht das?

Das einzige, was ich dazu kenne, steht beim Advanced Server:
EnterpriseDB: Postgres Plus Advanced Server Overview

Ja das meine ich auch, den xDB Replication Server.
Bin jetztz nur am schauen ob und wie das denn überkaukt funktioniert.
Hier steht nämlich was mit Replication zwischen Oracle und Postgres, ob das aber Postgres zu Postgres master to master geht bin ich mir noch nicht sicher.

Du verwechselst da wohl grundsätzlich einige Begrifflichkeiten.

Die Postgres Plus Replication ist kein Master-Master, das ist eine reine Master-Slave Lösung.

Gibt es denn überhaupt eine master master lösung?

Nein. Jedenfalls keine, die nicht auf die Mitwirkung der Anwendung setzt.

Hmm…, was macht man denn dann wenn man an zwei Standorten die gleiche DB braucht?

Hab mir schon das Slony I angeschaut, aber hier kann ja auch nur auf den Master geschrieben werden.
Vorallem kann es vorkommen das die Netzwerkverbindung mal ein paar Minuten nicht zur verfügung steht und ich will nicht immer erst wieder ein Backup machen, so das beide DBs wieder auf dem selben Stand sind.

Ich bräuchte etwas wo die DBs nicht immer auf eine Verbindung untereinander angewiesen sind.
So das sie sich nachdem wieder Netzwerk da ist automatisch replizieren.
In dem Szenario währe natürlich eine Master Slave variante doch schon sinnvoll.
Sonst hätte ich ja unter umständen doppelte Daten.

Ps: hab mir mal die EnterpriseDB installiert und konnte nur ein Replicationstool von Oracle zu Postgres. aber nicht von postgres zu postgres.

Solche Probleme - speziell wenn die Netzwerkverbindung weg ist - wickelt man mit anderen Lösungen ab,

Eine reine Master-Master Replikation wäre in deinem Fall sogar kontraproduktiv: wenn die Netzwerkverbindung weg ist, kann der Master seine Daten nicht auf die anderen Maschinen verteilen und alles steht.

Erst vor kurzem hatte ich das in der Planungsphase: theoretisch ist hier eine Mischung aus Master-Slave und Master-Master sinnvoll, je nachdem, welche Daten genau repliziert werden. Das ist dann aber fallabhängig und müsste im einzelnen durchgesprochen werden.

Welche Möglichkeiten gäbe es denn dann?
Ich habe hier gerade eine Postgres 9.0 Installation auf einem Windows-Server, die ich gerne in regelmäßigen Abständen mit einer lokalen PG 9.0 Datenbank synchronisieren würde. Dann könnte ich mit meinem Geo-Informationssystem auch beim Kunden immer die aktuellsten Daten darstellen und die Zugriffe sind natürlich auch schneller.
Slony scheint auszuscheiden, weil die Kombination pgAdminIII, Postgres 9 und Slony für Windows nicht funktioniert (Stichwort: pg_listener).
Gibt es eine, auch für normale Anwender handhabbare, Möglichkeit, die Datenbanken zu synchronisieren?

Danke,
Michi

Das klingt für mich so, als ob da keine permanente Verbindung zwischen den 2 Server wäre. In diesem Falle kannst Du Lösungen wie Slony oder Streaming Replication vergessen. Hier brauchst Du Logig in einer Applikation, die z.B. anhand von timestamps oder UUID’s die ‘Replikation’ durchführt, wenn eine Verbindung besteht. Eine fertige Lösung ist mir dafür nicht bekannt, wohl aber Firmen, die sowas für $OBULUS Dir hinstellen.

Dann könnte ich mit meinem Geo-Informationssystem auch beim Kunden immer die aktuellsten Daten darstellen und die Zugriffe sind natürlich auch schneller.

Warum gehst Du nicht zu einem $HOSTER und stellst da eine PostgreSQL/GIS - DB hin? Ich kenne da einen Hoster, der sowas anbietet …

Andreas

Wenn die lokale DB nicht laufend aktualisiert werden muss und Du lokale Änderungen nicht wieder zurückspielen musst, sollte doch ein einfaches dump/restore zum Gewünschten Ergebnis führen. Das kann man auch problemlos in eine Batchdatei verpacken und somit automatisiert ausführen.

Danke Euch beiden, auch wenn beide Antworten mir nur bedingt weiterhelfen.
Eine Synchronisationslösung extern einzukaufen kommt nicht in Frage. Allenfalls könnten wir selbst eine Lösung über uuids basteln. Ich habe auch mal kurzzeitig überlegt, ob die xmin-Spalte da nicht ein Notnagel wäre…
Hosten könnte unser Server wohl auch selbst. Allerdings würde die Bandbreite nicht ausreichen, um sinnvoll mit dem GIS arbeiten zu können (als Beispiel: Openstreetmap Deutschland belegt derzeit 10 GB).
Ähnlich ärgerlich ist daher ein dump/restore, auch wenn es wohl darauf hinauslaufen wird.

Michi

Du siehst nur die xmin Spalte deines gerade sichtbaren Wertes …