MySQL-Replikation

Moin,

ich habe die Aufgabe bekommen eine Replikation zwischen zwei MySQL-Servern (MySQL 5.1 unter Debian Lenny) einzurichten. So weit, so gut. Das Problem ist nur, dass ich kein Experte bin was die Konfiguration des MySQL-Servers an sich angeht.

Die eigentlichen Parameter, die für die Replikation nötig sind, erscheinen mir recht einfach und verständlich, aber ich bekomme keine „Grundkonfiguration“ auf die Beine gestellt und im Internet finde ich auch nur Teile und keine vollständige my.cnf.

Wenn ich die my.cnf benutze, die mit MySQL installiert wird und die Änderungen vornehme, die in den Tutorials für die Replikation stehen, wird keine Verbindung hergestellt. Den Bind-Adress Hab ich rausgenommen und auch sonst sehe ich direkt nichts, was die Kommunikation unterbinden könnte.

Wenn einfach irgendwer, der eine Replikation laufen hat, seine beiden my.cnf KOMPLETT hier posten könnte (natürlich ohne Passwörter o.ä.), würde mir das eine Menge bringen.

Danke

Björn

Hi,

die my.cnf kann ich nicht bieten (das Projekt ist abgeschlossen und der Testrechner inzwischen neu installiert), aber ich habe damals eine Anleitung geschrieben. Fragen und Anregungen sind willkommen :wink:

**Das Wichtigste vorab: Verschiedene Datenbankversionen haben ihre Konfiguration an verschiedenen Orten. Version 5.0.x benötigt die my.cnf, welche sich im bin-Verzeichnis von MySQL befindet. Version 5.1.x hat die Konfiguration in der my.ini im bin-Verzeichnis von MySQL.

Voraussetzung: Ein Master-Server, von dem die Datenbank repliziert werden soll und mindestens ein Slave-Server, der sich die benötigten Informationen vom Master-Server holt. Diese beiden Server müssen natürlich eine Verbindung zueinander haben.

  1. User auf dem Master-Server anlegen
    Auf dem Master-Server muss ein User angelegt werden, der ausschließlich für die Replikation benötigt wird.
    Folgende Rechte muss dieser Benutzer haben
    a. Daten-Rechte:
    SELECT
    b. Struktur:
    keine
    c. Administration:
    SUPER
    RELOAD
    SHOW DATABASES
    REFERENCES
    REPLICATION CLIENT
    REPLICATION SLAVE
  2. Konfiguration des Master-Servers
    a. Folgende Zeilen auskommentieren, falls noch nicht geschehen:

skip-networking

bind-address = 127.0.0.1

b. Folgende Zeilen einfügen:
log-bin = {Pfad + Dateiname (Beispiel: /log/mysql-bin.log}
binlog-do-db = {Datenbankname (Beispiel: exampledb}
server-id = 1 (Der Master hat immer '1’)
c. MySQL neu starten
d. Falls auf dem Server irgendwann schon einmal eine Replikation durchgeführt wurde, muss he-rausgefunden werden, wo der nächste Einsprungpunkt ist:
i. Start der MySQL-Konsole: mysql –u {username} –p{password (falls gesetzt, kein Leer-zeichen zwischen –p und dem Passwort}
ii. FLUSH TABLES WITH READ LOCK;
iii. SHOW MASTER STATUS;
iv. Jetzt den Dateinamen und die aufgezeigte Zahl unter „Position“ aufschreiben
3. Konfiguration des Slave-Servers
a. Folgende Zeilen einfügen, bzw. vom Kommentarzeichen befreien:
server-id=2 (Der Slave hat eine Zahl von 2 bis n, sie muss eindeutig sein)
master-host=192.168.0.100 (IP-Adresse des Master-Servers)
master-user={username}
master-password={passwort}
master-connect-retry=60
replicate-do-db=exampledb
b. zu replizierende Datenbank anlegen
c. MySQL auf dem Slave neu starten
d. Nun kann man mit LOAD DATA FROM MASTER; die Datenbanken auf den gleichen Stand be-kommen. Während dieser Befehl ausgeführt wird, ist die Datenbank auf dem Master schreibgeschützt.
e. Eingabe des Befehls STOP SLAVE;
f. Jetzt die Befehle mit den aufgeschriebenen Daten ausführen:
MASTER_LOG_FILE=’{Dateiname}’, MASTER_LOG_POS=’{Position}’;
g. Eingabe des Befehls START SLAVE;**

LG

DA

Ups, da ist noch ein Fehler drin, die Anleitung war für Xampp, dementsprechend für Windows. Daher ist bei einer Version von MySQL die cnf im Windows-Verzeichnis…

Die Konfiguration selbst sollte aber plattformunabhängig sein und auch unter Linux funzen.

LG

DA

Vielen Dank für die Antwort. Ich dachte schon da würde sich keiner rantrauen :smiley:
Ich habe es jetzt geschafft eine Ringreplikation mit drei Rechnern aufzubauen und habe meinen vorherigen Fehler gefunden. Das Problem war, dass ich irgendwas bei der rechtervergabe falsch gemacht habe. So hatte das Replikationskonto die nötigen Rechte auf dem jeweiligen Server, jedoch nicht beim Zugriff auf den nächsten Server :smile:

Schön, dass ich helfen konnte.
Bin leider nicht jeden Tag on, so kann eine Antwort etwas dauern.

LG

DA