Replikation für MyISAM-Tabellen einrichten?

7

Vor dem Einrichten einer Replikation in MySQL müssen die Daten zunächst an den Slave übertragen werden.

Da MyISAM-Tabellen als Dateien kopiert werden können. Wäre es in Ordnung, MyISAM-Dateien, .myd .myi .frm, auf den Slave zu kopieren? Wäre dies ausreichend, um die Replikation zu starten?

Haluk
quelle

Antworten:

7

Da alles MyISAM ist, müssen Sie Folgendes tun

SCHRITT 01) Konfigurieren Sie den Master als Replikationsmaster

Wenn Sie server-idin /etc/my.cnf nicht definiert haben, fügen Sie eine hinzu

[mysqld]
server-id=1

und service mysql restart

SCHRITT 02) Überprüfen Sie die binäre Protokollierung am Master

Wenn die binäre Protokollierung auf dem Master aktiv ist, tun Sie dies

RESET MASTER;

um alle binären Protokolle zu zappen und neu zu starten.

Wenn die binäre Protokollierung nicht aktiv ist, führen Sie dies aus

  • Fügen Sie log-bin=mysql-binunter [mysqld]in /etc/my.cnf hinzu
  • Service MySQL Neustart

SCHRITT 03) Kopieren /var/lib/mysql

Sie können rsync so einstellen , dass eine byteweise Brute-Force-Kopie Ihrer MyISAM-Tabellen von /var/lib/mysqleinem Server /var/lib/mysqlauf einen anderen Server ausgeführt wird. Sie hätten bis zum letzten Rsync mehrere Rsyncs ausgeführt, was sehr schnell geht. Dann würden Sie MySQL vollständig herunterfahren und einen weiteren rsync ausführen. Starten Sie MySQL sowohl auf Master als auch auf Slave.

SCHRITT 04) Erstellen Sie einen Replikationsbenutzer auf dem Slave

GRANT REPLICATION CLIENT,REPLICATION SLAVE
ON *.* TO replicator@'PrivateIPofSlave' IDENTIFIED BY 'r3pl1cAt0r';

SCHRITT 05) Richten Sie die Replikation ein

Führen Sie diesen Befehl auf dem Slave aus

CHANGE MASTER TO
MASTER_HOST='PrivateIPofMaster',
MASTER_PORT=3306,
MASTER_USER='replicator',
MASTER_PASSWORD='r3pl1cAt0r',
MASTER_LOG_FILE='XXXX',
MASTER_LOG_POS=YYYY;
START SLAVE;

Was ist XXXX und JJJJ ???

  • XXXXist die letzte binäre Protokolldatei zum Zeitpunkt der endgültigen Ausführung von rsync. Auf dem Slave befindet sich eine Kopie dieser Datei in / var / lib / mysql. Führen Sie einfach ls -l /var/lib/mysql/mysql-bin.0*den Slave aus und verwenden Sie das letzte Binärprotokoll.
  • YYYYist die Position der letzten binären Protokolldatei zum Zeitpunkt der endgültigen Ausführung von rsync. Interessanterweise ist die Position auch die Dateigröße des Binärprotokolls. Führen Sie einfach ls -l /var/lib/mysql/mysql-bin.0*den Slave aus und nehmen Sie die Dateigröße des letzten Binärprotokolls als Position YYYY.

SCHRITT 06) Überprüfen Sie die Replikation

Führen Sie dies aus

SHOW SLAVE STATUS\G

Wenn Slave_IO_Runningist Yesund Slave_SQL_Runningist Yes, Glückwunsch, Sie sind fertig !!!

Ich habe ähnliche Beiträge zur Verwendung von rsync wie folgt geschrieben:

RolandoMySQLDBA
quelle
Dies ist eine großartige Antwort. Ich habe nur nach (3) gefragt, aber der Rest wird sehr hilfreich sein. Diese Antwort wird wahrscheinlich ein endgültiger Leitfaden für die Myisam-Replikation sein.
Haluk
Ein Hinweis für andere Replikationsanfänger wie mich: Das Bestimmen von XXXX und YYYY wird in Abschnitt (3) beschrieben, kurz bevor die Server neu gestartet werden.
Haluk