SQL Datenbanken Replizieren MYSQL

Metzlor

Lt. Commander
Registriert
Juni 2006
Beiträge
1.101
Hallo,

ich möchte mehrere Datenbanken replizieren.
Folgende Situation:
Es gibt 3 (oder mehr) Server, mit jeweils einer Datenbank, jetzt soll Datenbank1 (DB1) sich von DB2 und von DB3 die Datenbanken abholen. So das später auf allen 3 Server 3 Datenbanken existieren.
Eine Komplettsicherung ist nicht möglich, da die Datenmengen zu groß sind und es möglichst aktuell gehalten werden sollte. Batch scipte wollte ich nicht verwenden. Am besten ein eigenes Programm, was ich jederzeit erweitern kann. Nur wie stelle ich dies möglichst effizient an.

Mfg
Metzlor
 
Wenn auf allen 3 Server die Datenbanken von allen 3 Servern existieren sollen, der Datenspeicher aber dafür nicht ausreicht wiederspricht sich das doch -.-

Eventuell solltest du noch den Zweck deiner Aktion beschreiben: Backups? Sharding? Cluster?
 
@
"Eine Komplettsicherung ist nicht möglich, da die Datenmengen zu groß sind.." Was jetzt?
 
Die Server sind über das Internet miteinander verbunden, ein komplettes Backup würde zu lange dauern.

Später will ich daraus eine Art Clusterlösung machen, die aber auf einen speziellen Weg zu implementieren ist. Mysql Cluster ist dafür keine Lösung. Da einige Server auch mal länger aus sein können.
 
Zuletzt bearbeitet:
Und was spricht gegen ein rsync in Verbindung mit einem Cronjob, der ein Batch-Script ausführt?
In welcher Sprache soll das "Programm" denn geschrieben sein? Java? C? Und nochmal: warum kein einfaches Batch-Script?

Wie groß sind die Datenbanken?
 
Metzlor schrieb:
Die Server sind über das Internet miteinander verbunden, ein komplettes Backup würde zu lange dauern.
wie sind die Daten auf die Server verteilt? Jeder Server hat andere Daten? Warum würde es zu lange dauern? Stehen die Daten der verschiedenen Server im Verhältnis zueinander oder sind diese komplett unabhängig? Wenn sie zusammengehören, muss unter allen Umständen die Datenkonsistenz gewährleistet sein?
Du solltest schon deutlich mehr Infos mitteilen, oder man wird dir einfach nur miserabel unpassende Lösungen vorschlagen.

Metzlor schrieb:
Später will ich daraus eine Art Clusterlösung machen, die aber auf einen speziellen Weg zu implementieren ist. Mysql Cluster ist dafür keine Lösung. Da einige Server auch mal länger aus sein können.

vergiss gleich die Schnapsidee eine Cluster- oder Synchronisierungslösung selbst zu implementieren ;)
Nichtmal die eingebaute MySQL-Replikation läuft fehlerfrei, denn selbst da treten Dateninkonsistenzen bei den Slaves auf.
Das sinnvollste was ich dir zum aktuellen Zeitpunkt vorschlagen kann, ist der "Galera Cluster", eine Cluster-Lösung auf Basis für MySQL die aktuell, die beste MySQL-Cluster-Lösung auf InnoDB-Basis ist, wenn wirklich jeder Server miteinander synchron sein soll. Das Server längere Zeit offline sind wird dort auch bedacht, ließ dich einfach mal rein.
 
Also mein Vorhaben:
Die Felder der Datenbanken sind gleich, es können aber updates eingespielt werden, wo Felder nicht mit repliziert werden. Ich programmiere mit dem .net Framework.

1) Da in vielen Tabellen nur inserts passieren,habe ich dies mit zusammengesetzten primär schlüssel, der sich aus server + id zusammensetzt gelöst.

2) Jetzt muß ich mich nur noch um ein paar tabellen kümmern, wo neben inserts auch updates vorkommen.

zu 1, das habe ich jetzt auch gelöst mit Dotconnect. Dazu benutze ich dort mysqldump, als function, so kann ich fehler besser abfangen.
 
Zurück
Oben