Bei physischer Replikation ist das auch wirklich so: man erstellt eine exakte 1:1 Kopie der Quelle. Unter Strich werden dabei - sehr vereinfacht ausgedrückt - die Blöcke aus dem Dateisystem des einen Servers zu dem anderen kopiert, dabei kann aber nicht gefiltert werden.-
Bei logischer Replikation werden aber einzelne Datensätze (bzw. Änderungen an diesen) repliziert. Im Grunde wir der SQL Befehl (UPDATE, DELETE usw) einfach auf dem anderen Server nochmal ausgeführt. Damit kann man nur bestimmte Tabelle replizieren. Und die Zieldatenbank darf zum Schreiben anderer Daten verwendet werden.
Grundsätzlich ist ein Setup wie Du es Dir vorstellst, am einfachsten zu lösen, wenn für alle Tabelle Primärschlüssel verwendet werden, die “global” eindeutig sind - z.B. UUIDs
Wenn man Daten in zwei Richtungen replizieren will, bekommt man ja ganz schnell das Problem, dass potentiell der gleiche Datensatz auf beiden Seiten angelegt wird. Wenn dieser dann repliziert wird, dann knallt es halt. Dann muss man sich überlegen wie man mit diesen Konflikten umgeht.
Ein global eindeutiger Schlüssel vermeidet erstmal diesen technischen Fehler. Dann hat man allerdings immer noch das Problem, dass logisch/fachlich der gleichen Datensatz zweimal existiert - welcher ist denn nur “der richtige”?
Wenn das System aber so gestaltet ist, dass dieser logische Fehler nicht auftreten kann, dann kann man mit UUIDs den technischen Fehler vermeiden. Nimmt man hingegen “normale” Integer Werte die über eine Sequenz erstellt werden, wird es mit Sicherheit über kurz oder lang ein Problem geben. Hauptsächlich weil das Ändern einer Sequenz auf keinen Fall repliziert wird. Häufig behilft man sich hier mit Nummernkreisen, das eine System nimmt nur gerade Zahlen, das andere nur ungerade (die entsprechende Sequenz wird dann mit increment by 2
definiert.
Bi-direktionale Replikation ist immer kompliziert und auch die Anwendung sollte darauf vorbereitet sein.
Wenn es nur darum geht, dass das eine System auf die Daten des anderen zugreifen kann, sind vielleicht “foreign tables” eine Alternative. Dabei werden gar keine Daten repliziert, sondern Tabellen angelegt, die (unsichtbar für den Aufrufer) die Daten halt nicht von dem “aktuellen” Server holen sondern von dem anderen.
Ihr solltet aber trotzdem mal mit eurem Kunden ein Wörtchen reden: Software die keine Sicherheitsupdates mehr bekommt sollte man einfach nicht produktiv einsetzen. Ein Upgrade auf eine aktuelle Version ist dringend angeraten (und dann auch gleich auf die 14, sonst habt ihr in 10 Monaten wieder das gleiche Problem - dann wird nämlich die Unterstützung für die 10er Version eingestellt).