MySQL Replikation aufsetzen

Eine Datenbank zu replizieren macht das Leben eines Administrators nicht unbedingt einfacher, denn es bedeutet min. den doppelten administrativen Aufwand bzgl. Wartung und Pflege der „Replikanten“. Auch birgt eine Replikation die Gefahr von inkonsistenten Datenbeständen, sollte die Replikation nicht funktionieren und der Slave keine Updates vom Master erhalten.

Ein simples Beispiel: Ein Benutzer hinterlässt in einem Forum einen Beitrag. Die Daten werden auf den Master geschrieben, jedoch nicht auf den Slave gepusht. Je nach Konfiguration der Forensoftware (Lesezugriff über den Slave) ist dieser Beitrag für niemanden aufzufinden. Ebenso sollte eine Replikation nicht als Backup gesehen werden. Denn, wird auf dem Master ein Datensatz gelöscht, ist dieser auf dem Slave ebenso gelöscht. Ein regelmäßiges Backup der Datenbank(en) bleibt also nicht aus.

Dennoch überwiegen die Vorteile, denn durch eine Replikation erhöht sich nicht nur die Verfügbarkeit, sollte ein Datenbankserver ausfallen, durch verteile Lesezugriffe steigert sie  die Performance und dient bei verteilten Abfragen der Entlastung der Server.

Ich beschreibe hier die Replikation einer Datenbank in einer Master-Master Konfiguration, bedeutet, dass am Ende eine Konfiguration steht, in der auf beiden Server geschrieben werden kann und die Daten auf Server 1 und Server 2 gleichermaßen aktualisiert werden.

Für eine Replikation mit MySQL benötigt man mindestens zwei Server gleichen Versionsstand, auf jedem Server einen Benutzer für die Replikation mit Zugriff auf den anderen Server. In meinem kleinen Tutorial nutze ich Debian Squeeze und die aktuelle Version von MySQL aus dem Reprosity. Die Server heissen sql1.local.net (192.168.0.1) und sql2.local.net (192.168.0.2). Eine Datenbank besteht noch nicht.

Installation und Grundkonfiguration

Die folgenden Installationen werden auf beiden Servern durchgeführt.

Beginnen wir mit der Installation von MySQL durch apt-get und folgen dem Assistenten bei der Grundkonfiguration (root-Passwort):

sql1 / sql2

apt-get update
apt-get upgrade 
apt-get install mysql-server

Ab diesem Zeitpunkt ist auf jedem Server der SQL-Server voll funktionsfähig, jedoch nur auf dem lokalen Host. Für die Replikation auf zwei Servern muss jedoch ein Zugriff vom Netzwerk möglich sein. Wir editieren die Konfigurationsdatei my.conf:

sql1 / sql2

nano /etc/mysql/my.cnf

Hier kommentieren wir den Eintrag aus, speichern die Datei und starten beide MySQL-Dämonen neu.

bind-address           = 127.0.0.1
#bind-address           = 127.0.0.1
 /etc/init.d/mysql restart

Um sicher zu gehen, dass die Konfiguration übernommen wurde, prüfen wir mit netstat an dieser Stelle, ob MySQL auf allen Ports lauscht. Das Ergebnis von dem Komando

netstat -tap | grep mysql

sollte ähnlich aussehen:

tcp        0      0 *:mysql                 *:*                     LISTEN      4694/mysqld

In Bearbeitung…

Schreibe einen Kommentar

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