Opel Olympia Rekord R3

Stefan

pauker.at

Schwedisch Deutsch
letzte Änderung 07.05.2008
Seite empfehlen

Datenbank Replikation

Datenbankreplikation mit mysql

Weil ich gerade mit Datenbankreplikation kämpfe, hier ein paar Erfahrungen:

So geht's

Originaldoku: http://dev.mysql.com/doc/refman/4.1/en/replication.html
Verständlichere Doku: http://howtoforge.com/mysql_database_replication

Probleme mit denen ich gekämpft habe:

Berechtigung

Mit mysql_fix_privilege_tables kann man das Berechtigungssystem up-to-date bekommen. Das ist notwendig, wenn man die Datenbank von älteren Releases upgegraded hat.

Wenn dieser Fehler auftaucht:
ERROR 2002 (HY000): Can't connect to local MySQL? server through socket '/var/run/...'
  • Socket finden: netstat -ln | grep mysql
  • mysql_fix_privilege_tables mit --socket=... aufrufen

Zusätzlich zur Beschreibung in howtoforge muss man dem "slave_user" SUPER, RELOAD, and SELECT privilege granten.

Netzwerkverbindung

Wenn die Netzwerkverbindung nicht zu klappen scheint. Prüfen, ob
bind-address = 127.0.0.1

noch drinsteht. Wenn ja, auskommentieren.

LOAD DATA FROM MASTER

Ich wollte das gemäß Beschreibung in howtoforge machen und bekam diesen Fehler:

ERROR 1189 (08S01): Net error reading from master

... leider geht die Methode nur mit MyISAM? Tabellen.

http://dev.mysql.com/doc/refman/4.1/en/load-data-from-master.html

logrotate

.. dumm auch, wenn logrotate die binären logs zu schnell weglöscht.

Bei meiner debian Installation ist das in /etc/mysql/debian-log-rotate.conf geregelt:

  1. da sollte eine genügend hohe Zahl stehen, damit der SLAVE die log files zum synchronisieren noch findet...

KEEP_BINARY_LOGS=10

Fehler ignorieren

in der my.cnf kann festlegen, dass der Replikationsprozess Fehler ignoriert:

slave-skip-errors=all

Replikation bei pauker.at

Die Replikation verwende ich, um die down-time möglichst gering zu halten.

Ich plane das backup nur noch vom Slave zu machen, dann haben alle Brasilianer ihr Deutsch-Portugiesisch Wörterbuch auch zur backup-Zeit zur Verfügung.

Problem

Das größte Problem bleibt die Initialisierung eines mysql slaves.

Die erste Kopie mit mysqldump und der Start des binary logs müssen zeitlich übereinstimmen, sonst bekommt man Probleme mit auto_increment Tabellen.

Den pauker einfach mal 2 Stunden abschalten - das will ich nicht machen.

Auch finde ich es nicht gut, dass Kommandos wie insert .. createdon=now() einfach so übertragen werden. Dadurch kann die Slave-DB ja nie den gleichen Stand haben.

Fazit

Mysql bietet nicht genügend Möglichkeiten meine Datenbank sauber zu replizieren.

Auf Urheberrechtsvorwurf antworten