MySQL – Master/Slave Replikation mit mariaDB unter Centos 7

Mariadb-seal-flat-browntextHeute widmen wir uns mal dem Thema MySQL etwas mehr. Ich will euch hier im Artikel zeigen, wie man eine Master/Slave Replikation mit CentOS 7 und mariaDB baut.
Benötigt werden dafür zwei Server, auf den CentOS 7 bereits installiert ist.

Schritt 1: mariaDB installieren

Um eine Master/Slave Replikation zu implementieren, müssen wir zuerst auf beiden Servern mariaDB installieren. Dies ist relativ einfach und mit dem folgenden Befehl schnell gemacht.

Anschließend wir der mariadb Service auf dem Server gestartet.

Dies getan, setzten wir noch ein Passwort für den root User.

MEIN_ROOT_PASSWORT muss durch unser root Passwort ersetzt werden.

Anschließend auf dem Slave System mariadb wieder stoppen

Schritt 2: Master Konfiguration

Nun wollen wir damit weiter machen, den Master Server zu konfigurieren. Dafür müssen wir zuerst ein paar Einstellungen in /etc/my.cnf ändern. Dafür öffnen wir die Datei mit einem Editor unserer Wahl

Hier suchen wir die Sektion [mysqld] heraus und ergänzen es um die folgenden Zeilen

Anschließend muss mariaDB neugestartet werden.

Dies getan, prüfen wir die binary logs des masters

Die Ausgabe sollte dann so aussehen

Jetzt brauchen wir noch einen User für die Replikation.

Der User heißt in diesem Fall repl. SECRET muss noch durch ein Passwort für die Replikation ersetzt werden.

Nun prüfen wir noch den User in der Datenbank.

Die Ausgabe sollte dann wie folgt aussehen.

Jetzt müssen wir noch einen Datenbank Dump erstellen, den wir auf dem Slave dann einbinden könne.

Dafür sperren wir zuerst den Zugriff auf die Datenbank

Nun müssen wir noch einen Dump der aktuellen Installation erstellen:

Diesen Dump kopieren wir anschließend auf den Slave in das Homeverzeichnis unseres Users:

 Schritt 3: Slave Konfiguration

Auch beim Slave müssen wir als erstes die my.cnf anpassen.

Dem Slave geben wir hier die Server ID 2

Danach starten wir mariadb.

Jetzt spielen wir den zuvor kopierten mysql Dump auf dem Slave ein.

Anschließend loggen wir uns in die Datenbank ein

In der Datenbank muss nun hinterlegt werden, dass die Daten von einem anderen Server komme.

Anschließend starten wir den Slave Modus.

Diesen prüfen wir anschließend noch.

Die Ausgabe sollte dann wie folgt aussehen:

Damit haben wir erfolgreich eine Master/Slave Replikation aufgesetzt

Mögliche Probleme

Da ich komplett neue Systeme für dieses Tutorial verwendet habe, hatte ich noch folgendes Problem. Bei der Eingabe von show slave status\G habe ich die folgende Ausgabe erhalten

Bei Last IO Error sehen wir, dass es Probleme mit der Verbindung gibt. Darauf hin habe ich einen telnet auf den Port 3306 gemacht und dabei festgestellt, dass dieser nicht offen ist. Mit den folgenden zwei firewalld Befehlen lässt sich das ganz einfach lösen.

Sollte das System produktiv eingesetzt werden, macht es Sinn hier eine DMZ Zone hinzuzufügen und die Regel feiner zu definieren.

About Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Comments

  1. Hallo,

    danke für den Artikel! Ich habe noch ein paar Ergänzungen:

    Es kann sein, dass der Dateiname für den Binary Log angepasst werden muss. Auf dem Master findet man das so heraus:

    MariaDB [(none)]> show binary logs;
    +——————+———–+
    | Log_name | File_size |
    +——————+———–+
    | mysql-bin.000001 | 529 |
    | mysql-bin.000002 | 1239 |
    | mysql-bin.000003 | 1328 |
    | mysql-bin.000004 | 589 |
    | mysql-bin.000005 | 245 |
    +——————+———–+
    5 rows in set (0.00 sec)

    MariaDB [(none)]>

    Außerdem gibt es diesen merkwürdigen Passwort Bug:

    http://blogs.n1zyy.com/n1zyy/2010/08/29/mysql-replication-permission-denied-errors/

    Mebus

Speak Your Mind

*