Replikationsserver Torsten Witt Letzte Änderung: 22.04.09 Vorbereitungen – MySQL auf 2 Rechnern installieren – MySQL-Versionen sollten identisch sein. Wenn nicht, hier gibt es Hinweise: – http://dev.mysql.com/doc/refman/5.1/de/replication-compatibility.html – Generell gilt: – neuer Slave alter Master geht – neuer Master alter Slave geht nicht Grundsätzliche Schritte: – – – – – – – – Master anhalten Datenbank des Server auf den Slave importieren master weiter laufen lassen Die Daten zusätzlich sichern my.cnf beider Server anpassen Den Server wieder starten Dem Slave die notwendigen Informationen geben Slave starten Master konfigurieren – Netzwerk erlauben – eventuell steht in der my.cnf folgendes drin, falls ja, auskommentieren! – Skip-networking bind-address = 127.0.0.1 my.cnf vorbereiten – Unter dem Abschnitt [mysqld] – log-bin=mysql-bin – binlog-do-db=slave (slave ist die Datenbank, die repliziert werden soll) (Sollten mehrere Datenbanken repliziert werden, so ist eine weitere Zeile anzufügen.) – server-id=1 (Die 1 ist für den Master notwendig, Master=Nummer1) – Server neu starten! – Root-Nutzer anpassen: – Host: %(jeder) – Replikationsnutzer einrichten – Name: replikant – Host: % (jeder) – Passwort: replikant – Globale Rechte: SELECT, RELOAD, SUPER, REPLICATION SLAVE – Master anhalten – Nutzen des MySQL-QueryBrowsers – betreffende Datenbank vor Änderungen schützen durch SQL-Anweisung: – – FLUSH TABLES WITH READ LOCK; RESET MASTER; Replikationsserver 2/4 – QueryBrowser nicht schließen!! Der Schreibschutz wird beim Schließen des Clients aufgehoben! – Daten sichern – Wechseln in das Verzeichnis(unter Windows mit XAMPP): – Windows: /xampp/mysql/data – Ordner sichern, z. B. Als Zip ODER mittels mysqldump – Master status notieren: – SQL-Befehl: show master status; Das Ergebnis sieht in etwa so aus: – notieren von File und Position – Datenbanken wieder frei geben: – SQL-Befehl: unlock tables; SLAVE konfigurieren – Datenbank namens slave anlegen (Die Datenbank, die repliziert werden soll). – Dann den Dump importieren – Oder Datenbankdateieneinspielen, dann ist die Datenbank mit angelegt. – my.cnf konfigurieren – Unter Abschnitt [mysqld] folgendes eintragen: – server-id=2 (größere Zahl als Master!!) – master-host=192.169.10.176 – master-user=replikant – master-password=replikant – master-connect-retry=60 – replicate-do-db=slave – folgenden SQL-Befehl absetzen um in den SLAVE-Status zu wechseln: CHANGE MASTER TO MASTER_HOST='master_host_name IP geht auch!!', MASTER_USER='replication_user_name', MASTER_PASSWORD='replication_password', MASTER_LOG_FILE='recorded_log_file_name', MASTER_LOG_POS=recorded_log_position; - ACHTUNG!! – Mit dem obigen Befehl werden alle Tabelle repliziert – sollte in der Konfigurationsdatei folgender Eintrag stehen: – replicate-do-db = <Datenbakname> – Dann wird auch nur diese repliziert. – Also bevor der Slave gestartet wird, diesen Eintrag anpassen, weitere Datenbanken durch nochmaliges Einfügen einer Zeile mit entsprechendem Inhalt hinzufügen – folgenden SQL-Befehl absetzen um SLAVE zu starten – start slave; Replikationsserver 3/4 Wie weiß ich ob alles läuft? Auf beiden Systemen empfiehlt es sich die laufenden Prozesse auf dem MySQL-Servern zu überprüfen. Dies geschieht mittels SQL: show processlist; Auf dem Master sollte folgender Prozesse laufen: Auf dem Slave sollten folgende Prozesse laufen: Wenn nun Änderungen in der Datenbank des Masterservers getätigt werden, sollten diese in kürzester zeit auch auf dem Slave erscheinen. Replikationsserver 4/4