Heim > Datenbank > MySQL-Tutorial > Hauptteil

Detaillierte Analyse des Kopierens in MySQL

小云云
Freigeben: 2017-12-08 11:59:57
Original
1326 Leute haben es durchsucht

Dieser Artikel führt hauptsächlich die detaillierte Analyse der Replikation in MySQL ein. Er stellt die grundlegenden Konzepte, Verwendungen, Implementierungsmethoden und zentralisierten Modi vor und teilt dann den spezifischen Implementierungscode, der einen gewissen Referenzwert hat .

1.MySQL-Replikationskonzept

bezieht sich auf die Übertragung der DDL- und DML-Vorgänge der Primärdatenbank an den Replikationsserver über das Binärprotokoll und die anschließende Übertragung Diese Protokolldateien werden erneut ausgeführt, sodass die Daten auf dem Replikat- und Masterserver synchron bleiben. Während des Replikationsprozesses fungiert ein Server als Master und ein oder mehrere andere Server fungieren als Slaves. Der Master schreibt Aktualisierungen in binäre Protokolldateien um und verwaltet einen Index der Dateien, um die Protokollrotation zu verfolgen. Diese Protokolle zeichnen Aktualisierungen auf, die an Slave-Server gesendet werden. Wenn ein Slave eine Verbindung zum Master herstellt, benachrichtigt er den Master über den Ort der letzten erfolgreichen Aktualisierung, die der Slave im Protokoll gelesen hat. Der Slave akzeptiert alle seitdem erfolgten Aktualisierungen, blockiert dann und wartet darauf, dass der Master über neue Aktualisierungen benachrichtigt wird.

2. Zweck der Replikation

Synchronisieren Sie Daten durch Master-Slave-Replikation und trennen Sie dann Lesen und Schreiben (MySQL-Proxy), um sie zu verbessern die gleichzeitige Ladekapazität der Datenbank oder kann als Primär- und Backup-Maschine verwendet werden, um sicherzustellen, dass die Anwendung auf die Backup-Maschine umgeschaltet werden kann, um in kurzer Zeit weiter ausgeführt zu werden, nachdem der Host nicht mehr reagiert.

Vorteile:

(1) Das Datenbankclustersystem verfügt über mehrere Datenbankknoten. Im Falle eines Ausfalls eines einzelnen Knotens sind andere normale Knoten vorhanden Dienstleistungen können weiterhin erbracht werden.
(2) Wenn auf dem Master-Server ein Problem auftritt, können Sie zum Slave-Server wechseln
(3) Abfragevorgänge können durch Replikation auf dem Slave-Server ausgeführt werden, wodurch der Zugriffsdruck auf den Master-Server verringert wird Erreicht Datenverteilung und Lastausgleich
(4) Die Sicherung kann auf dem Slave-Server durchgeführt werden, um eine Beeinträchtigung des Dienstes des Master-Servers während der Sicherung zu vermeiden.

3. Implementierung der Replikation (3 Methoden)

(1) DRBD ist eine softwarebasierte, nicht gemeinsam genutzte Speicherreplikationslösung zum Spiegeln von Blockgeräteinhalten zwischen Servern.
(2) MySQL-Cluster (auch als MySQL-Cluster bekannt). Die MySQL-Replikation (Replikation) selbst ist eine relativ einfache Struktur, das heißt, ein Slave-Server (Slave) liest das Binärprotokoll von einem Master-Server (Master), analysiert es und wendet es auf sich selbst an.
(3) Eine einfache Replikationsumgebung erfordert nur zwei Hosts, auf denen MySQL ausgeführt wird, und Sie können sogar zwei MySQL-Instanzen auf einem physischen Server-Host starten. Einer dient als Master und der andere als Slave, um die Konfiguration der Replikationsumgebung abzuschließen. In tatsächlichen Anwendungsumgebungen können Sie jedoch die MySQL-Replikationsfunktion verwenden, um andere Replikationsarchitekturen zu erstellen, die sich besser für die Erweiterung gemäß den tatsächlichen Geschäftsanforderungen eignen, z. B. die am häufigsten verwendete Master-Slave-Architektur.
Die Master-Slave-Architektur bezieht sich auf die Verwendung eines MySQL-Servers als Master, eines oder mehrerer MySQL-Server als Slave und das Kopieren der Daten des Masters auf den Slave. In praktischen Anwendungen wird der Master-Slave-Architekturmodus am häufigsten für die MySQL-Replikation verwendet. Im Allgemeinen werden bei dieser Architektur die Schreibvorgänge des Systems im Master ausgeführt, während die Lesevorgänge auf verschiedene Slaves verteilt werden. Daher eignet sich diese Architektur besonders für die hohen Lese- und Schreibprobleme des aktuellen Internets.

Der MySQL-Datenbankreplikationsvorgang ist grob in die folgenden Schritte unterteilt:

(1) Der Master aktiviert Binärprotokolle. Der Vorgang zum Aktivieren von Binärprotokollen wird ausführlich in Protokollverwaltung beschrieben.
(2) Der E/A-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.
(3) Nach Erhalt der E/A-Prozessanforderung vom Slave liest der Master die Protokollinformationen nach der angegebenen Position des angegebenen Protokolls gemäß den Anforderungsinformationen über den für die Replikation verantwortlichen E/A-Prozess und gibt sie zurück zum I/O des Slaves. 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, in dem die zurückgegebenen Informationen an den Master gesendet wurden.
(4) Nach dem Empfang der Informationen fügt der E/A-Prozess des Slaves den empfangenen Protokollinhalt am Ende der Relay-Log-Datei auf der Slave-Seite hinzu und fügt den Dateinamen und den Namen der Bin-Log-Datei hinzu der Master-Seite gelesen Der Standort wird in der Master-Info-Datei aufgezeichnet.
(5) Nachdem der SQL-Prozess des Slave den neuen Inhalt im Relay-Log erkannt hat, analysiert er sofort den Inhalt des Relay-Logs und führt ihn selbstständig aus.

4. Zentralisierter Modus der MySQL-Replikation

In Versionen nach MySQL5.1 ist die Verbesserung der Replikation die Einführung einer neuen Replikationstechnologie - Zeilenbasierte Replikation. Diese Technologie konzentriert sich auf die Datensätze, die sich in der Tabelle geändert haben, anstatt den vorherigen Binlog-Modus zu kopieren. Ab mysql5.1.12 können die folgenden drei Modi verwendet werden, um dies zu erreichen.

(1) Anweisungsbasierte Replikation (sbr)
(2) Zeilenbasierte Replikation (rbr)
(3) Mixed-Mode-Replikation (mbr)

Dementsprechend gibt es drei Formate von Binlog: Anweisung, Zeile und gemischt. Im Mbr-Modus ist der SBR-Modus die Standardeinstellung. Das Format von binlog kann zur Laufzeit dynamisch geändert werden. Die Methode zum Festlegen des Master-Slave-Replikationsmodus ist sehr einfach. Fügen Sie einfach einen weiteren Parameter basierend auf der zuvor festgelegten Replikationskonfiguration hinzu:


binlog_format=”statement”
#binlog_format=”row”
#binlog_format=”mixed”
Nach dem Login kopieren


Natürlich können Sie das Binlog-Format auch zur Laufzeit dynamisch ändern


Mysql> set session binlog_format=”statement”
Nach dem Login kopieren


5 .Master-Server-Betrieb steuern

Master: 192.168.11.139
Slave: 192.168.11.130

(1) Master-Server:


mysql> show variables like '%datadir%';
+---------------+--------------------------+
| Variable_name | Value          |
+---------------+--------------------------+
| datadir    | /application/mysql/data/ |
+---------------+--------------------------+
Nach dem Login kopieren


Binärprotokollierung auf dem Masterserver aktivieren:


mysql> show variables like 'log_bin';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin    | OFF  |
+---------------+-------+
row in set (0.00 sec)
Nach dem Login kopieren


AUS bedeutet, dass das Binärprotokoll ausgeschaltet ist

3 Schritte zum Öffnen des Protokolls:

① Öffnen Sie das MySQL-Installationsverzeichnis/my.cnf
②Suchen Sie die Bezeichnung [mysqld]. Fügen Sie in der Zeile unter dieser Bezeichnung die folgende Anweisung hinzu:

log_bin[filename]

In dieser Anweisung gibt log-bin an, dass die Binärdatei geöffnet werden soll; Dateiname ist der Name des Binärprotokolls. Wenn nicht angegeben, ist der Standardwert der Hostname, gefolgt von -bin als Dateiname, der standardmäßig im Verzeichnis datadir gespeichert wird. Geben Sie hier „binary_log“ an. Wenn die Binärdatei nur für die angegebene Datenbank generiert wird, müssen Sie die folgende Anweisung hinzufügen:


Binlog-do-db=db_name(数据库名称)
Nach dem Login kopieren


Wenn es nicht für die angegebene Datenbank generiert wird. Für Binärdateiprotokolle müssen Sie die folgenden Anweisungen hinzufügen


Binlog-ignore-db-db_name(数据库名称)
Nach dem Login kopieren


③ Neustart der MySQL-Dienst. Sie können die Datei „binary_log.numeric number“ im MySQL-Installationsverzeichnis/Datenordner sehen, z. B. „binary_log.00001“. Bei jedem zukünftigen Neustart des MySQL-Dienstes wird die Binärdatei neu generiert und die numerische Nummer im Der Dateiname wird erhöht.

Ändern Sie nach erfolgreichem Booten die MySQL-Konfigurationsdatei my.cnf und legen Sie die Server-ID fest. Der Code lautet wie folgt


Server-id=1
Binlog-do-db=xscj
Binlog-ignore-db=mysql
Server-id=1:每一个数据库服务器都要指定一个唯一的server-id,通常主服务器为1,master和slave的server-id不能相同。
Binlog-do-db:表示需要复制的数据库,这里以xscj为例
Binlog-ignore-db:表示不需要复制的数据库
Nach dem Login kopieren


Erstellen Sie den für die Replikation erforderlichen Benutzer auf dem Master


mysql> grant replication slave on *.* to rep_user@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec

mysql> show master status\G
*************************** 1. row ***************************
      File: binary_log.000001
    Position: 303
  Binlog_Do_DB: 
Binlog_Ignore_DB: 
row in set (0.00 sec)
Nach dem Login kopieren


Sichern Sie die Daten des Master-Hosts. Speichern Sie es in der Datei /data/binary_dump.txt und importieren Sie es dann in den Slave-Computer. Die spezifischen Ausführungsanweisungen lauten wie folgt:


[root@localhost bin]# mysqldump -h localhost>/data/binary_dump.txt
Nach dem Login kopieren


(2) Steuern Sie den Betrieb des Slave-Servers

Ändern Sie die Datenbankkonfigurationsdatei des Slave-Servers. Die Konfiguration lautet wie folgt:


Server-id=2 ##设置从服务器id
Master-host=192.168.11.129
Master-user=rep_user
Master-password=  ##设置连接主服务器的密码
Replicate-do-db ##设置你要同步的数据库,可以设置多个
Master-port=<port> ##配置端口号

重启slave,在slave主机的mysql重新执行如下命令,关闭slave服务
Mysql>stop slave;
设置slave实现复制相关的信息,执行如下命令
Mysql>change master to
>master_host=&#39;&#39;,
>master_user=&#39;&#39;,
>master_password=&#39;&#39;,
>master_log_file=&#39;binary_log.000007&#39;,
>master_log_pos=120;

输入:show slave status\G用于提供有关从服务器线程的关键参数信息。
Nach dem Login kopieren


Allgemeine Befehle lauten wie folgt


选项

功能

Slave start

启动复制线程

Slave stop

停止复制线程

Reset slave

重置复制线程

Show slave status

显示复制线程状态

Show slave statusg

显示复制线程状态(分行显示)

Show master statusG

显示主数据库的状态(分行显示)

Show master logs

显示主数据库日志

Change master to

动态改变到主数据库的配置

Show processlistv

显示有哪些线程正在运行

Optionen


Funktion

Slave-Start

Replikationsthread starten

Slave-Stopp

Replikationsthread stoppen

Slave zurücksetzen

Replikationsthread zurücksetzen

Slave-Status anzeigen Replikations-Thread-Status anzeigen Slave-Status anzeigeng td> Master-Status anzeigenG Master-Datenbankstatus anzeigen (in separaten Zeilen angezeigt) Master-Protokolle anzeigen Master-Datenbankprotokoll anzeigen Master ändern in Dynamische Änderungen an der Konfiguration der Masterdatenbank Prozessliste anzeigen Zeigen Sie, welche Threads ausgeführt werden Hat es jeder gelernt? ? Beeilen Sie sich und probieren Sie es aus. Verwandte Empfehlungen: Zusammenfassung der Methoden zum Kopieren von Tabellenstrukturen in mysql_MySQLKopieren von Datentabellen in MySQL Tutorial dazu zum Übertragen von Daten in eine neue Tabelle_MySQLÜberblick, Installation, Fehler, Techniken und Tools der MySQL-Replikation (Freigegeben von Huo Ding)

Das obige ist der detaillierte Inhalt vonDetaillierte Analyse des Kopierens in MySQL. 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