Re: Probleme Replikation aufzusetzen

Andreas Kretschmer <[email protected]> Wed, 31 Jan 2018 08:36:53 +0100
Newsgroups gmane.comp.db.postgresql.german
Message-ID <[email protected]>
Moin,



Am 30.01.2018 um 22:58 schrieb Thiemo Kellner:
>
>
>>> Hmpf, schau mer mal. Muss erst mal noch folgendes Problem lösen:
>>> "database system identifier differs between the primary and standby"
>>
>> wie ist der standby erstellt worden? Via pg_basebackup?
>
> Ich hatte einfach zwei leere Datenbanken gemacht und die eine in die 
> andere versucht zu synchronisieren. Ich habe nicht gedacht, dass die 
> Empfänger-DB ein Klon sein muss.


Nun haben wir die Ursache. Passiert. Bitte schreibe noch in der engl. 
Mailingliste, daß das Thema gelöst ist - nicht alle von *dort* lesen 
auch *hier* mit.

Mit Deinem Vorgehen zeigst Du, daß das Grundprinzip der streaming 
Replication (die besser physical replication sich nennen sollte) nicht 
völlig verstanden ist. Hier ist wichtig zu verstehen, was im 
Transaktionslog (bis einschl. 9.6 pg_xlog, ab PG10 pg_wal) steht. Da 
stehen eben nicht logische Befehle (Insert hier, delete dort), sondern 
rein binäre Änderungen an den Dateien im Filesystem.
Deine 'Vermutung', einfach mit zwei leeren datenbanken zu arbeiten, 
würde mit einer logischen Replikation (die trigger-basierten wie Slony, 
londiste, bucardo) sowie mit logical replication in PG10 sowie mit 
pg_logical & BDR am 9.4 stimmen, nicht aber mit physical (streaming) 
replication. Mit dieser Replikation (physical oder streaming) wird alles 
übertragen, einschließlich Vacuum-Änderungen.




>
> Die Synchronisation funktioniert nun nach dem Base-Backup ein 
> bisschen. D. h., das erste Kommando wird übertragen, aber dann klemmt 
> es und ich muss das Testskript mittels ctrl-c abbrechen.

Hier passiert das, was ich schon sagte: mit synchr. physical replication 
muß der Master warten, bis der Standby die Transaktion bestätigt hat. 
Offenbar erkennt der Master nicht den Standby als 'main2'.

Setze mal im connection-string des Standbys noch name=main2, damit der 
Master erkennen kann, daß sich dieser da connected.


Andreas

-- 
2ndQuadrant - The PostgreSQL Support Company.
www.2ndQuadrant.com