Mailinglisten-Archive |
Hallo, > > Ich habe seit etwa 1 Jahr eine verteilte DB mit 6 Server am laufen. Bei > > der Konfiguration hat mir die Doku von MySQL > > (http://www.mysql.de/doc/de/) sehr gut geholfen. > > Ich habe eine Master:Slave Installation vorgenommen, > über ein internes Giganetz, allerdings hat es bei mir, Mysql 4.013 > nie wirklich funktioniert, daher läuft es jetzt auch nicht mehr! Um hier ein Statement abzugeben, müsste man wissen, wo es konkret Probleme gab ;-) > Ich hab auch das Handbuch zu hilfe genommen, aber zu viele > Schreibfehler auf dem Salve haben mich wieder davon abgebracht! Was meinst Du mit Schreibfehler? Schreibfehler in der Doku oder tatsächlich auf dem Slave-Server? Wenn zweites, Festplattenfehler oder SQL-Fehler IN der Datenbank? > Aber wenn du mal tipps ausgeben kannst, wieso es bei dir ohne Problem > läuft wäre ich dir wirklich sehr, sehr, sehr dankbar ;-) Nun, was mich sehr viel weiter gebracht hat - Ich habe zunächst alles mit Auszügen aus der Live-DB auf einem Testsystem aufgebaut. Ich habe mit Hilfe von VMWare mehrere DBs aufgebaut und dann verschiedene Situationen durchgetestet. Als ich mir dann sicher war, dass ich das ganze managen und einrichten kann, habe ich das komplette System auf meine Liveserver übertragen und nach und nach produktiv geschalten. Ich habe mir kleine Batch-Skripts geschrieben, mit denen ich viele Aktionen in der Administration schneller erledigen kann. Das Monitoring mache ich mit dem Perl-Skript mytop. Wenn mich nicht alles täuscht, wurde dieses Tool von einem Entwickler von Yahoo geschrieben, da die auch Systeme mit MySQL laufen haben. Ausserdem verwende ich noch einige eigene Skripte, mit denen der LVS-Director den Datenbankzustand überwacht. Ich habe den Programmcode meiner Clients angepasst. So gibt es in der verteilten DB keine Autoincrementfelder mehr. Ich verwende stattdessen Checksummen oder md5 verschlüsselte IDs. Ich denke, dass es auch hilfreich war, dass ich schon mit Adabas verteilte Datenbanken aufgebaut habe. > Ach ja, auch über das i_net hatte ich es mal gemacht, allerdings kannst du > das vollkommen vergessen, wenn der Master nicht an den slave senden kann, > bleibt der slave stehen Das stimmt, aber er nimmt die Verbindung zum Master automatisch wieder auf, sobald dieser wieder erreichbar ist. Also ich kann einen oder auch mehrere Server aus dem Netz nehmen und wieder hinzufügen und es läuft hinterher wieder automatisch weiter. Das wird von MySQL selbst geregelt und ich muss nur in den seltensten Fällen von Hand (SLAVE START) nachhelfen. Auch dass hatte ich in der Anfangsphase genutzt. Ein Server (der 1. DB-Server, der die Originaldaten hatte) bei 1&1 und 3 neue Server bei einem anderen Provider. > und antwortet nicht auf anfragen! bis er wieder von master bedient wird, > allerdings war das noch mit der ersten 4. Version Das kann ich gar nicht nachvollziehen. Wenn ein Slave seinen Master verliert, dann arbeitet der Slave dennoch ganz normal weiter und beantwortet die Anfragen ganz normal weiter und gibt als Master auch seine Änderungen an einen weiteren möglichen Slave weiter. ;-) Erst gestern, habe ich noch meine lokale DB mit einer Live-DB im inet verbunden. So kann ich jetzt die Artikelpflege lokal durchführen und auch die Statistiken lokal auswerten. Das ganze geht über eine 128k Standleitung von meinem Netz zu meinem Provider. Interessant wäre noch zu erwähnen, dass auf dem Datenbankserver draussen gleichzeitig ZWEI verteilte Datenbanken laufen. ----------- | lokal:DB2 | ----------- | | | | | | --------------- | DB-Master:DB2 | =============== | DB-Master:DB1 | --------------- | | ------ ------ | DB-1 | | DB-5 | ------ ------ | | ------ ------ | DB-2 | | DB-4 | ------ ------ | | ------ | | DB-3 |---- ------ Alles in allem, es ist - befolgt man die Hinweise in der Doku - relativ einfach eine verteilte DB mit MySQL zu realisieren. Voraussetzung ist aber auch, dass man mit dem grundlegenden Umgang von MySQL vertraut ist und man auch im Klaren ist, was bei der Distribution der DBs so passiert. Es ist sehr hilfreich, wenn man auch mit den einzelnen Tools, die dem normalen Paketen beiliegen, umgehen kann. Weiterhin sollte man auch mit den Logdateien von MySQL umgehen können. Ich bin mir jetzt aber nicht ganz sicher, ob meine Ausführungen überhaupt jemandem weiterhelfen. Vielleicht reichen sie zumindest als Beleg dafür, dass es funktioniert. Hier noch ein paar praktische Tipps: - Der Ausgangszustand einer verteilten DB MUSS konsistent sein. - Auf allen beteiligten Servern sollte die gleiche MySQL Version verwendet werden. Zumindest aber MÜSSEN alle beteiligten Server entweder eine hohe 3er- oder eine 4er-Version installiert haben. Eine gemischte Installation Version 3 und Version 4 funktionieren nicht. - Für die Replikation sollte ein spezieller User eingerichtet werden. Der Slave muss volle Leserechte auf dem Master haben. - Die Server IDs müssen eindeutig sein. - Binlog muss auf jedem Server aktiviert sein. - Je nach Datenbankgrösse muss genügend Platz für die Relay-Logdatei vorhanden sein. (erst ab Version 4) - die Dateien master.info und (seit Version 4) realay.info dürfen nicht manuell bearbeitet werden. Gruss HaPe -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive