Hallo Forum!
Ich habe mich schon - wie ich meine - intensiv mit Slony-I befasst und komme jetzt einfach nicht mehr weiter.
Ich wollte eigentlich 2 Datenbanken auf unterschiedlichen Rechnern (Windows 2003 Server und Suse Linux) synchron halten. Leider gelingt es mir immer nur in eine Richtung.
Hier ist mein Script:
cluster name = slonycluster;
node 1 admin conninfo = 'dbname=datenbank1 host=ip1 user=slony';
node 2 admin conninfo = 'dbname=datenbank2 host=ip2 user=slony';
try { # schema auf dem master server erstellen
echo 'Initializing the cluster Master';
init cluster (id = 1, comment = 'Master');
}
on error {
echo 'Could not initialize the cluster!';
exit -1;
}
echo 'Database cluster initialized as Node 1 Master';
try { # schema auf dem slave server erstellen
echo 'Storing node 2';
store node (id = 2, comment = 'Slave');
}
on error {
echo 'Could not create Node 2!';
exit -1;
}
echo 'Node 2 created Slave';
try {
echo 'Creating store paths';
store path ( server = 1, client = 2,
conninfo = 'dbname=datenbank1 host=ip1 user=slony');
store path ( server = 2, client = 1,
conninfo = 'dbname=datenbank2 host=ip2 user=slony');
}
on error {
echo 'Could not create store paths!';
exit -1;
}
echo 'Store paths created';
try {
echo 'Storing listen network';
store listen (origin = 1, provider = 1, receiver = 2);
store listen (origin = 2, provider = 2, receiver = 1);
}
on error {
echo 'Could not store listen network!';
exit -1;
}
echo 'listen network stored';
try {
create set ( id = 1, origin = 1, comment = 'Alle Tabellen' );
}
on error {
echo 'Could not create subscription set!';
exit -1;
}
echo 'Subscription set created';
set add table ( set id = 1, origin = 1, id = 1,
full qualified name = 'public.t1', comment = 't1' );
set add table ( set id = 1, origin = 1, id = 2,
full qualified name = 'public.t2', comment = 't2' );
set add table ( set id = 1, origin = 1, id = 3,
full qualified name = 'public.t3', comment = 't3' );
set add table ( set id = 1, origin = 1, id = 4,
full qualified name = 'public.t4', comment = 't4' );
Wenn ich dann im pgAdmin ein Abo erstelle
Bereitsteller: 1 - Master
Empfänger: 2 - Slave
dann werden die Daten vom Master auf den Slave übertragen. Läuft wunderbar. Nur leider kann ich nichts am Slave verändern.
Wenn ich kein Abo einstelle, dann kann ich verändern was ich will, aber die Server sind unterschiedlich!
Leider klappt das ganze auch noch nicht über einen Dienst bzw. Daemon. Deswegen Starte ich (zumindest denke ich das) die Replikation so:
Windows:
slon slonycluster "dbname=datenbank1 host=localhost user=slony
Linux:
slon slonycluster "dbname=datenbank2 host=localhost user=slony
Ich hoffe ihr könnt mir helfen.
Vielen Dank!
David