mysql Replikation einrichten – Master/Slave Replikation

fehlt wasgeht sogutsehr guthat geholfen (No Ratings Yet)
Loading ... Loading ...
Werbung




MySQL Replikation als Backup und Lastenausgleich

Die Replikation bietet eine gute Realtime Backup Möglichkeit. Besitzt man 2 Server, kann hier schnell und einfach die komplette MySQL Datenbank auf einen 2. Server repliziert werden und somit ein Backup in Echtzeit realisieren.

Sinnvoll kann eine Replikation auch als Lastenverringerung des Haupt-SQL Servers dienen. Änderungen werden auf den Master geschrieben, Lesevorgänge erfolgen aber vom Slave / von den Slaves. Somit wird der Master imens entlastet.

MySQL Replikation einrichten

Auf dem Master bereiten wir nun die Replikation vor. Hierzu muss ein Benutzer für den Slave-Server eingerichtet werden.
Dieser benötigt lediglich die Berechtigung REPLICATION SLAVE

Wir legen also einen Slave-Benutzer an:

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%.domain.tld' IDENTIFIED BY 'slavepass';

Hier wird ein Benutzer slave@domain.tld” mit dem Passwort “slavepass” mit der Berechtigung “Replication Slave” angelegt.
Nun muss der Master- SQL Server beendet werden:

# /etc/init.d/mysql stop

Konfigurieren wir den Master als Master-Replikations-Server. Hierzu mus die my.cnf Datei editiert werden:

# vi /etc/mysql/my.cnf

In dieser Dateien müssen folgende Zeilen in der [mysqld] Sektion vorhanden sein:

[mysqld]
log-bin=mysql-bin
server-id=1

Wichtig ist, dass hier server-id = 1 angegeben wird, die id darf nur einmal vorkommen, der Slave wird also die 2 bekommen. Auch ist wichtig, dass log-bin mit angegeben wird. Denn nur so schreibt der MySQL Server ein Bin-Log, das vom Slave abegfrat werden kann.

Nun muss der Slave-Server beendet werden:

# /etc/init.d/mysql stop

und auch hier die my.cnf Datei bearbeitet werden:

# vi /etc/mysql/my.cnf

Ebenfalls in der [mysqld] Sektion muss die server-id eingetragen werden:

[mysqld]
server-id=2

Nun muss ein Backup der Tabellen vom Master Server erzeugt werden. Dazu wird ein tar Archiv auf dem Master erzeugt:

# /var/lib/mysql> tar cvfz /sql.tgz .

Hierbei ist anzumerken, dass auch die “mysql”-Tabelle mitgesichert wird. Normalerweise legt Debian hier einen separaten User mit generiertem Passwort für start/restart/stop an. Man sollte also aufpassen, auf dem Slave-Server die Datenbank zu sichern um diese wiederherstellen zu können.

Auf dem Slave Server muss das hinkopierte tar-Paket wieder entpackt werden:
{code}# /var/lib/mysql> tar xvfz /sql.tgz .[/html]
und unter Umständen die “mysql”-Tabelle wiederher gestellt werden. Auch sollte auf dem Slave die Dateien “master.info” und “relay-log.bin” gelöscht werden.

Nun kann der Master und Slave Server wieder gestartet werden. Derzeit sind beide Server gleichgesetzt. Neue Änderungen schreibt der Master schon in ein Log, was vom Slave dann abgefragt wird. Server starten (Master und Slave):

# /etc/init.d/mysql start

Den Slave muss nun noch mitgeteilt werden, wer der Master ist:

CHANGE MASTER TO MASTER_HOST='master_host_name', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password'

und versetzen den MySQL Server in den Slave-Modus:

START SLAVE;

Beendet. Der Slave sollte nun alle Änderungen automatisch vom Master abholen und ausführen. Dies kann recht einfach getestet werden, indem auf dem Master eine Tabelle angelegt wird. Diese sollte dann auch automatisch auf dem Slave Server angelegt werden.



Werbung


Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>