Arbeitsprinzipdiagramm:
Prinzip der Master-Slave-Replikation:
ist in synchrone Replikation und asynchrone Replikation unterteilt. Der größte Teil der tatsächlichen Replikationsarchitektur ist asynchrone Replikation. Der grundlegende Prozess der Replikation ist wie folgt:
1 Der IO-Prozess auf dem Slave stellt eine Verbindung zum Master her und fordert den Protokollinhalt von der angegebenen Position der angegebenen Protokolldatei (oder vom Anfang des Protokolls an). );
2). Nachdem der Master die Anfrage vom IO-Prozess des Slaves erhalten hat, liest der für die Replikation zuständige IO-Prozess die Protokollinformationen nach dem angegebenen Protokollspeicherort entsprechend den Anforderungsinformationen und gibt sie an den Slave zurück IO-Prozess. Zusätzlich zu den im Protokoll enthaltenen Informationen umfassen die zurückgegebenen Informationen auch den Namen der Bin-Log-Datei und den Speicherort des Bin-Logs, den die zurückgegebenen Informationen auf der Master-Seite erreicht haben;
3) . Der E/A-Prozess des Slaves empfängt nach dem Empfang der Informationen den empfangenen Protokollinhalt am Ende der Relay-Log-Datei auf der Slave-Seite und zeichnet den Dateinamen und den Speicherort des gelesenen Bin-Logs auf der Master-Seite auf Master-Info-Datei, damit sie beim nächsten Abruf gelesen werden kann, können Sie dem Master klar mitteilen: „Ich muss von der Stelle in einem bestimmten Bin-Protokoll ausgehen, um den folgenden Inhalt zu protokollieren. Bitte senden Sie ihn mir.“ 🎜>
4). auf sich selbst hin ausgeführt.Umgebungsbeschreibung
1. Master Ab der Installation von MySQL ist die Version konsistent
Wir haben MySQL-5.5.30.tar.gz installiert, hier weggelassen...2 Master- und Slave-Server
master服务器配置: vi /usr/local/mysql/etc/my.cnf [mysqld] server-id=202 #设置服务器唯一的id,默认是1,我们设置ip最后一段,slave设置203 log-bin=mysql-bin # 启用二进制日志 binlog-ignore-db = mysql,information_schema #忽略写入binlog的库 slave服务器配置: vi /usr/local/mysql/etc/my.cnf [mysqld] server-id=203 replicate-do-db = abc #只同步abc库 slave-skip-errors = all #忽略因复制出现的所有错误
3. Starten Sie den Master-Slave-Server MySQL neu
/etc/init.d/mysqld restart
4. Erstellen Sie ein Konto auf dem Master-Server und Slave autorisieren
mysql> mysql -u root -p123.com mysql> GRANT REPLICATION SLAVE ON *.* to ‘sync’@‘192.168.1.2’ identified by ‘1234.com’; #replication:复制
5. Überprüfen Sie den Status der Master-Datenbank
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 263 | | | +------------------+----------+--------------+------------------+
6 >
mysql> change master to -> master_host='192.168.0.202', -> master_user='sync', -> master_password='1234.com', -> master_log_file='mysql-bin.000002', -> master_log_pos=263; #Log和pos是master上随机获取的。这段也可以写到my.cnf里面。7. Starten Sie den Slave-Synchronisierungsprozess und überprüfen Sie den Status
mysql> start slave;
Die Werte von Slave_IO_Running und Slave_SQL_Running müssen YES sein, um anzuzeigen, dass der Status normal ist.
8. Überprüfen Sie die Master-Slave-SynchronisierungErstellen Sie die Datenbank abc in Master-MySQL und überprüfen Sie dann von MySQL aus, ob die Synchronisierung erfolgreich war!
Beim Slave-Start gemeldeter Fehler:mysql> create database abc; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | abc | | mysql | | performance_schema | | test | +--------------------+
"Last_IO_Error: Schwerwiegender Fehler 1236 vom Master beim Lesen von Daten aus dem Binärprotokoll: 'Der erste Protokolldateiname konnte in der Binärprotokoll-Indexdatei nicht gefunden werden ' ”
Lösung: Der Hauptgrund für den Fehler ist, dass der vom Slave zum Master eingestellte Binärdateiname oder Pos-Wert nicht übereinstimmt!
Löschen Sie zuerst die Protokolle und überprüfen Sie den Status der Master-Datenbank. Sehen Sie sich den Namen und den Positionswert der Protokolldatei an.
Führen Sie dann Folgendes aus: ÄNDERN MASTER TO MASTER_LOG_FILE ='binärer Protokollname',MASTER_LOG_POS=Wert;
Starten Sie schließlich den Synchronisierungsprozess: Starten Sie den Slave;
Das Obige ist das Prinzip und die Konfiguration der MySQL-Master-Slave-Replikation Achten Sie auf weitere verwandte Inhalte auf der chinesischen PHP-Website (www.php.cn)!