Die MySQL-Master-Slave-Replikationsumgebung kann als Grundlage aller Hochverfügbarkeit bezeichnet werden. Das Prinzip ist auch relativ einfach. Lassen Sie uns zunächst das Prinzip der Master-Slave-Replikation verstehen:
Obwohl das Bild 7 Schritte enthält, kann es vereinfacht werden, um das Gedächtnis und das Verständnis zu erleichtern:
Änderungs- und Schreibvorgänge auf dem Master durchführen
MySQL schreibt geänderte Daten in Binlog; Slave Initiieren Sie einen E/A-Thread, um das neue Binlog auf dem Master in das lokale Relay-Protokoll zu ziehen.
Relay-Protokoll wiedergeben, damit Änderungen und neue Vorgänge auf dem Master auf dem Slave widergespiegelt werden können Führen Sie es erneut auf dem Computer aus.
Slave schreibt den Vorgang gemäß dem normalen Betrieb auch in das lokale Binlog.
Hardwareumgebung
主机 | ip | 端口 | 版本 | 主从 |
---|---|---|---|---|
阿里云 | 192.168.1.100 | 3306 | MySQL5.7.14 | Master |
腾讯云 | 192.168.1.200 | 3306 | MySQL5.7.18 | Slave |
Erstellen Sie ein dediziertes Konto für die Replikation
[mysqld] log-bin=mysql-bin server-id=1003306
/etc/init.d/mysql restartExportieren Sie Daten und synchronisieren Sie sie mit Tencent CloudVerwenden Sie mysqldump, um alle Datenbankdaten zu exportieren, und das aktuelle Binlog wird es tun werden in der Sicherungsdatei Datei und Position aufgezeichnet.
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slave; mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.200';Sie können es auch mit den folgenden Methoden anzeigen:
#防止DDL、写操作 mysql>FLUSH TABLES WITH READ LOCK; shell>mysqldump -uroot -p --single-transaction --master-data=2 -A>back.sqlTabelle entsperren
root@localhost [mysql]>show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000045 | 939 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec)Datei aus der Ferne in die Vergangenheit übertragenWenn die Datendatei voreingenommen ist. Wenn sie groß ist oder viele Daten enthält, können Sie sie mit xtrabackup von Percona sichern, komprimieren und dann darauf übertragen.
mysql> UNLOCK TABLES;Slave-BetriebBinlog-Einstellungen Server-ID aktivieren
rsync back.sql root@192.168.1.200:/root
[mysqld] log-bin=mysql-bin server-id=2003306Zeigen Sie auf MasterDie
shell>mysqldump -uroot -p --databases t1 <back.sql>MASTER_LOG_FILE<h3> und </h3>MASTER_LOG_POS<p> sind gerade jetzt<em>Master-Status anzeigen</em> Wert, natürlich können Sie auch <em>Mehr</em> verwenden, um den Standort anzuzeigen, der angegeben werden soll. <em></em><em>Die Werte </em>MASTER_LOG_FILE</p> und <pre class="brush:php;toolbar:false">CHANGE MASTER TO MASTER_HOST='192.168.1.200',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000045',MASTER_LOG_POS=939;MASTER_LOG_POS
sind jetzt die Werte von Show Master Status mehrSehen Sie, wo es angegeben werden sollte. Slave starten
shell>more back.sql -- MySQL dump 10.13 Distrib 5.7.14, for linux-glibc2.5 (x86_64) -- -- Host: localhost Database: -- ------------------------------------------------------ -- Server version 5.7.14-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Position to start replication or point-in-time recovery from -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000045', MASTER_LOG_POS=939;Wenn Sie für Slave_IO_Running und Slave_SQL_Running ein doppeltes JA sehen, liegt im Allgemeinen kein Problem vor. Überprüfung
mysql>start slave; mysql>show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.200 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000045 Read_Master_Log_Pos: 939 Relay_Log_File: relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000045 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 939 Relay_Log_Space: 154 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 23306 Master_UUID: 9a13d860-b55b-11e6-bf33-00163e054164 Master_Info_File: /data/mysql/mysql3306/data/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: 3feb36dc-ef7e-11e6-a535-52540043f116:1-337886 Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec)
Jetzt können Sie eine neue Datenbank erstellen, eine neue Datentabelle erstellen, Ausgaben einfügen usw. auf dem Master, um zu überprüfen, ob der Master-Slave gültig ist. Mit diesem Schritt können Sie machen, was Sie wollen!
Das obige ist der detaillierte Inhalt vonIn diesem Tutorial erfahren Sie, wie Sie ganz einfach eine herkömmliche Master-Slave-Replikationsumgebung auf Alibaba Cloud und Tencent Cloud einrichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!