Synchronisation zwischen zwei Datenbanken

Konfiguration des PostgreSQL Datenbankservers.

Synchronisation zwischen zwei Datenbanken

Beitragvon MasterEvil » Do 18. Jan 2007, 10:54

Hiho, ich habe mich hier schon ein bisschen durchgewühlt und schon ein paar Beiträge zum Thema gelesen aber die meisten Lösungen scheinen mir zu aufwendig für mein simples Anliegen.

Ich habe zwei Datenbanken an zwei verschiedenen Orten welche sich halt immer synchron halten sollen. Problem ist das die Internetverbindung nicht all zu berauschend ist. Es steht gerade eine DSL 1000 Leitung zur Synchronisation zur Verfügung.

Momentan haben wir eine Datenbank auf einem Server, die Verbindungsgeschwindigkeit ist aber extrem langsam. Daher die Überlegung an jedem Standort eine Datenbank zu installieren welche sich dann selbst synchronisieren. Zumindest die Lesezugriffe sollten dann wieder angemessene Geschwindigkeit haben.

Ist das möglich dass sich 2 Datenbanken synchronisieren?
PGCluster hatte ich mir schon angeguckt, ist dieser für mein Vorhaben überhaupt geeignet?
MasterEvil
Benutzer
 
Beiträge: 34
Registriert: Do 18. Jan 2007, 10:25

Beitragvon akretschmer » Do 18. Jan 2007, 11:15

MasterEvil hat geschrieben:Hiho, ich habe mich hier schon ein bisschen durchgewühlt und schon ein paar Beiträge zum Thema gelesen aber die meisten Lösungen scheinen mir zu aufwendig für mein simples Anliegen.

Ich habe zwei Datenbanken an zwei verschiedenen Orten welche sich halt immer synchron halten sollen. Problem ist das die Internetverbindung nicht all zu berauschend ist. Es steht gerade eine DSL 1000 Leitung zur Synchronisation zur Verfügung.

Momentan haben wir eine Datenbank auf einem Server, die Verbindungsgeschwindigkeit ist aber extrem langsam. Daher die Überlegung an jedem Standort eine Datenbank zu installieren welche sich dann selbst synchronisieren. Zumindest die Lesezugriffe sollten dann wieder angemessene Geschwindigkeit haben.

Ist das möglich dass sich 2 Datenbanken synchronisieren?
PGCluster hatte ich mir schon angeguckt, ist dieser für mein Vorhaben überhaupt geeignet?



Was Du suchst klingt nach Multi-Master-Replikation über eine lahme Leitung, und die Antwort ist NEIN, da gibt es meines Wissens nach nix.

Slony ist eine Single-Master to Multiple Slave - Replikation.

Es gibt ein Projekt, welches eine Multimaster-Replikation verspricht: http://www.postgres-r.org/
der Maintainer davon ist, tätä, ein deutsch-sprechender. (Markus Schiltknecht). Du kannst auch mal auf http://www.postgresql.at/ gehen, die haben angeblich eine funktionierende Multi-Master-Lösung, auch http://www.enterprisedb.com/ hat da wohl was.
Aber ich bin mir recht sicher, daß all das an Deiner Leitung scheitern wird. Und es sind wohl kommerzielle Lösungen, kosten also was, falls das bei Dir eine Rolle spielt.


Was vielleicht gehen wird: Eine Master und eine Read-Only-Slave-DB. Dann mußt Du aber Sorge tragen, daß auf dem Slave wirklich nix geschrieben wird. Das wäre dann eine Sache für Slony.


Aber mal eine Frage:

Du sprichst von lahmen Lesegeschwindigkeiten: vielleicht kann man ja auch die Abfragen optimieren. Aber dazu müßte man etwas mehr über das Szenario wissen und genau schauen, wo der Flaschenhals ist.

Andreas
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon MasterEvil » Do 18. Jan 2007, 13:29

nja, bei uns läuft eine JavaSoftware welche mittels JDBC Kundendaten etc. verarbeitet.
Wenn jemand alleine arbeitet ist die Geschwindigkeit OK aber bei 20 Mann wirds dann sehr langsam so das man fast 30 Sekunden warten muss bis einem ein simpler Brief angezeigt wird. Bei den Abfragen habe ich schon so weit mir möglich alles vereinfacht und in Sichten ausgelagert.
Das einzige BackUp dass du jemals brauchen wirst ist jenes, welches du nicht gemacht hast!
MasterEvil
Benutzer
 
Beiträge: 34
Registriert: Do 18. Jan 2007, 10:25

Beitragvon ads » Do 18. Jan 2007, 13:49

Also dadurch, das du etwas in Sichten (Views) auslagerst, hast du exakt gar nichts für die Datenbank vereinfacht.

Ein View ist nichts anderes als ein gespeicherter Query, im Endeffekt wird also der gleiche Query wie vorher ausgeführt, nur siehst du in deiner Applikation davon nicht mehr so viel.

Ich möchte fast wetten, eure Probleme sind anderer Natur. Wie groß ist so ein Brief, wieviele Datenmengen müssen dafür effektiv übertragen werden? Und über eine DSL 1000 Leitung passen selbst über den Rückkanal wieviele Bytes in der Sekunde? Genau ... da stimmt etwas nicht.

Kann es sein, das hier vielleicht zu viele Anfragen gestellt werden, das einzelne Anfragen optimiert werden können, das zu viele Daten zurück übertragen werden (SELECT * als Beispiel, statt nur benötigte Daten zu selecten). Versuch doch mal herauszufinden, welche Daten wirkllich übertragen werden und welche davon benötigt werden.

Dann umgehst du vielleicht auch dein Problem, alles syncronisieren zu müssen.

Ach, noch eine Idee: akretschmer hat ja schon geschrieben, das Master-Slave Lösungen gut funktionieren. Wenn man also viel liest und nur wenig schreibt, könnte man in der Zentrale einen Master stehen haben, der Änderungen an den Slave schiebt. Die Aussenstelle liest halt vom Slave und schreibt Änderungen auf den Master.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören Bild

Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

PostgreSQL Service & Support
ads
Erfahrener Benutzer
 
Beiträge: 4147
Registriert: Mi 8. Feb 2006, 11:58
Wohnort: MD

Beitragvon MasterEvil » Do 18. Jan 2007, 16:57

Ich meinte ja dass ich Sichten benutze also mir so eh nur die Daten hole die ich auch nur benötige. Der reine Datentransfer zwischen Client und Datenbank habe ich schon soweit optimiert das wirklich nur die Daten transferiert werden die wirklich benötigt werden.
Sicherlich könnte man bei den eigentlichen Abfragen noch einiges optimieren aber die Geschwindigkeit in der die Datenbank die Daten liefert ist mehr als ausreichend.
Das mit dem Brief war jetzt auch nen bisschen übertrieben aber teilweise müssen eben schon große Datenmengen abgefragt werden, im Gegensatz dazu eher weniger Daten gespeichert.
Ich glaube ich werde also versuchen solch ein Master/Slave System aufzubauen, werde mich also gleich mal schlau machen was ich dazu alles brauche.
Kennt vieleicht jemand ein schönes Tutorial welches den Werdegang einfach beschreibt?
Das einzige BackUp dass du jemals brauchen wirst ist jenes, welches du nicht gemacht hast!
MasterEvil
Benutzer
 
Beiträge: 34
Registriert: Do 18. Jan 2007, 10:25

Beitragvon akretschmer » Do 18. Jan 2007, 16:59

MasterEvil hat geschrieben:Ich glaube ich werde also versuchen solch ein Master/Slave System aufzubauen, werde mich also gleich mal schlau machen was ich dazu alles brauche.
Kennt vieleicht jemand ein schönes Tutorial welches den Werdegang einfach beschreibt?


http://linuxfinances.info/info/slonyadmin.html

Andreas
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon MasterEvil » Do 18. Jan 2007, 17:01

Besten Dank :)
Ging ja schneller als selber suchen *hrrhrr*
Das einzige BackUp dass du jemals brauchen wirst ist jenes, welches du nicht gemacht hast!
MasterEvil
Benutzer
 
Beiträge: 34
Registriert: Do 18. Jan 2007, 10:25

Beitragvon MasterEvil » Mi 24. Jan 2007, 18:21

So .. bin jetzt beim installieren und konfigurieren und hab mal noch ne Frage zur Synchronisation.
Synchronisieren sich die Datenbanken nur wenn folgender Befehl ausgeführt wird?
Code: Alles auswählen
subscribe set ( id = 1, provider = 1, receiver = 2, forward = no );

Oder kann man das auch so hinbiegen das nach jeder Änderung am Master automatisch mit dem Slave abgeglichen wird?
Das einzige BackUp dass du jemals brauchen wirst ist jenes, welches du nicht gemacht hast!
MasterEvil
Benutzer
 
Beiträge: 34
Registriert: Do 18. Jan 2007, 10:25

Beitragvon akretschmer » Mi 24. Jan 2007, 18:41

MasterEvil hat geschrieben:So .. bin jetzt beim installieren und konfigurieren und hab mal noch ne Frage zur Synchronisation.
Synchronisieren sich die Datenbanken nur wenn folgender Befehl ausgeführt wird?
Code: Alles auswählen
subscribe set ( id = 1, provider = 1, receiver = 2, forward = no );

Oder kann man das auch so hinbiegen das nach jeder Änderung am Master automatisch mit dem Slave abgeglichen wird?


Um zu wissen, was zu tun ist, muß das halt definiert werden.
Man definiert Sets, fügt diesen tables zu (set add table) und meldet diese an (subscribe set ).

Slony arbeitet Trigger-basiert, diese Trigger müssen erst mal für die zu replizierenden Tabellen erzeugt werden. Dazu dienen halt u.a. diese Kommandos.

Andreas
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon MasterEvil » Do 25. Jan 2007, 14:32

So .. ich nähere mich meinem Ziel immer mehr, eine funktionierende Replikation hab ich schon am laufen :)

Eine Frage noch zu den Angaben bei den Adressen für Master/Slave, ist es möglich dort dynamische Adressen zu verwenden?

Beispiel:
Code: Alles auswählen
node 1 admin conninfo = 'dbname=database host=master.dyndns.org user=foo';


Wenn sich jetzt während des Betriebes die IP ändert wird die dynamsiche Adresse ja aktualisiert, verwendet Slony ab diesen Zeitpunkt auch die neue IP oder wird die direkt beim initialiseren einmal aufgelöst und dann während der ganzen Laufzeit verwendet?

Kann mir da einer was zu sagen?
Das einzige BackUp dass du jemals brauchen wirst ist jenes, welches du nicht gemacht hast!
MasterEvil
Benutzer
 
Beiträge: 34
Registriert: Do 18. Jan 2007, 10:25

Nächste

Zurück zu Konfiguration

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste