Heim > Datenbank > MySQL-Tutorial > Hauptteil

In diesem Tutorial erfahren Sie, wie Sie ganz einfach eine herkömmliche Master-Slave-Replikationsumgebung auf Alibaba Cloud und Tencent Cloud einrichten

巴扎黑
Freigeben: 2017-07-17 09:38:50
Original
2120 Leute haben es durchsucht

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:

In diesem Tutorial erfahren Sie, wie Sie ganz einfach eine herkömmliche Master-Slave-Replikationsumgebung auf Alibaba Cloud und Tencent Cloud einrichten
Obwohl das Bild 7 Schritte enthält, kann es vereinfacht werden, um das Gedächtnis und das Verständnis zu erleichtern:

  1. Änderungs- und Schreibvorgänge auf dem Master durchführen

  2. 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.

  3. 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.

  4. Slave schreibt den Vorgang gemäß dem normalen Betrieb auch in das lokale Binlog.

  5. Hardwareumgebung

  6. Ich habe jeweils eine Diaosi-Maschine von Alibaba Cloud und Tencent Cloud, also verwende ich sie zum Testen, ich habe die IP-Adresse ersetzt , aber es funktioniert nicht.

Auf Master einstellen

Binlog-Einstellungen Server-ID aktivieren
主机 ip 端口 版本 主从
阿里云 192.168.1.100 3306 MySQL5.7.14 Master
腾讯云 192.168.1.200 3306 MySQL5.7.18 Slave

Unter der Option mysqld in /etc/my.cnf bearbeiten und dann neu starten

Erstellen Sie ein dediziertes Konto für die Replikation

[mysqld]
log-bin=mysql-bin
server-id=1003306
Nach dem Login kopieren
/etc/init.d/mysql restart
Nach dem Login kopieren
Exportieren Sie Daten und synchronisieren Sie sie mit Tencent Cloud

Verwenden 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';
Nach dem Login kopieren

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.sql
Nach dem Login kopieren
Tabelle 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)
Nach dem Login kopieren
Datei aus der Ferne in die Vergangenheit übertragen

Wenn 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;
Nach dem Login kopieren

Slave-Betrieb

Binlog-Einstellungen Server-ID aktivieren
rsync back.sql root@192.168.1.200:/root
Nach dem Login kopieren

Bearbeiten unter der Option mysqld in /etc/my.cnf

Starten Sie den MySQL-Dienst neu

Daten importieren
[mysqld]
log-bin=mysql-bin
server-id=2003306
Nach dem Login kopieren

Zeigen Sie auf Master

Die
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;
Nach dem Login kopieren
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;
Nach dem Login kopieren
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)
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage