Heim  >  Artikel  >  Datenbank  >  Zusammenfassung und Anordnung von MySQL basierend auf der GTID-Master-Slave-Konstruktion

Zusammenfassung und Anordnung von MySQL basierend auf der GTID-Master-Slave-Konstruktion

WBOY
WBOYnach vorne
2022-08-26 11:56:332449Durchsuche

Empfohlenes Lernen: MySQL-Video-Tutorial

Verwenden Sie xtarbackup, um Daten zu synchronisieren, und stellen Sie dann Master und Slave basierend auf der GTID ein.

1. Verwenden Sie xtarbackup zum Sichern der Datenbank

1.1 Vorteile

Verwenden Sie xtarbackup für die vorläufige Vorbereitung von Master und Slave, da xtarbackup Daten sehr schnell sichert und wiederherstellt, was sich besonders für Datenbanksicherungen mit großen Datenmengen eignet Daten, und die Installation ist sehr schnell. Es ist einfach und leicht zu verwenden ... (Bala, bala, ich kann mir den Unsinn nicht ausdenken).

1.2 Installation

Wählen Sie die spezifische Version entsprechend Ihrer spezifischen Situation. Befolgen Sie einfach diese Schritte, um es zu installieren. Ist das nicht ganz einfach?

(2), Backup auf Remote

# rpm -Uvh https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-3.noarch.rpm
# yum list | grep percona
# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL 
# rpm -Uvh ftp://rpmfind.net/linux/epel/6/x86_64/libev-4.03-3.el6.x86_64.rpm
# yum install percona-xtrabackup –y

(3), Dekomprimierungsmethode

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /data/backupMysql/
1.3.3 xbstream Backup

(1), Backup auf lokal

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/>/data/mysql.tar

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | gzip >/data/mysql.tar.gz

(2), Das Backup muss aus der Ferne durchgeführt werden

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | ssh root@192.168.1.7 \ "cat - >/data/mysql.tar

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=tar /data/backupMysql/ | | ssh root@192.168.1.7 \ "gzip >/data/mysql.tar.gz

(3), Dekomprimierungsmethode

# 未经过压缩的文件解压
tar xvf mysql.tar -C /data

# 压缩过的文件解压
tar zxvf mysql.tar.gz -C /data
1.3.4 Wiederherstellung

Dekomprimieren Sie zuerst das ursprüngliche gesicherte komprimierte Paket in ein Verzeichnis und führen Sie dann die folgende Anweisung zur Wiederherstellung aus.

# 不压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/>/data/mysql.xbstream

# 压缩
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ >/data/mysql_compress.xbstream
Hinweis:

Sie können das Split-Screen-Tool während des Sicherungs-, Dekomprimierungs- und Wiederherstellungsprozesses verwenden. Ich verwende gerne den Bildschirm.

2. Datensynchronisation basierend auf GTID

2.1 Das Konzept von GTID

1

Globale Transaktionskennungen:

Globale Transaktionskennungen. 2. GTID ist eine Eins-zu-eins-Korrespondenz für eine Transaktion und eine weltweit eindeutige ID.

3. Eine GTID wird nur einmal auf einem Server ausgeführt, um Datenverwechslungen oder Master-Slave-Inkonsistenzen durch wiederholte Ausführung zu vermeiden.

4. GTID wird verwendet, um die herkömmliche Replikationsmethode zu ersetzen, und MASTER_LOG_FILE+MASTER_LOG_POS wird nicht mehr verwendet, um die Replikation zu ermöglichen. Verwenden Sie stattdessen MASTER_AUTO_POSTION=1, um den Kopiervorgang zu starten.

    5. Es wird ab MySQL-5.6.5 unterstützt und wird nach MySQL-5.6.10 verbessert.
  • 6. Auf der traditionellen Slave-Seite muss Binlog nicht aktiviert werden, aber in GTID muss das Binlog auf der Slave-Seite aktiviert werden, um die ausgeführte GTID aufzuzeichnen (obligatorisch).
  • 2.2 Zusammensetzung der GTID
  • GTID = Quell-ID: Transaktions-ID Quell-ID: Wird zur Identifizierung des ursprünglichen Servers verwendet, dh der eindeutigen server_uuid des MySQL-Servers. Da die GTID an den Slave übergeben wird, kann sie auch als verstanden werden die Quell-ID.
  • transaction_id: Es handelt sich um eine Sequenznummer einer Transaktion, die auf dem aktuellen Server übermittelt wurde. Es handelt sich normalerweise um eine sich selbst erhöhende Sequenz, die bei 1 beginnt. Ein Wert entspricht einer Transaktion.
  • Beispiel: 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 Die erste Zeichenfolge ist die server_uuid des Servers, d Prinzip von GTID
  • 1. Wenn eine Transaktion auf der Seite der Hauptbibliothek ausgeführt und übermittelt wird, wird eine GTID generiert und im Binlog aufgezeichnet.
2. Nachdem das Binlog an den Slave übertragen und im Relaylog des Slaves gespeichert wurde, lesen Sie den Wert der GTID und legen Sie die Variable gtid_next fest, die dem Slave den nächsten auszuführenden GTID-Wert mitteilt.

3. Der SQL-Thread erhält die GTID aus dem Relay-Protokoll und vergleicht dann das Binlog auf der Slave-Seite, um festzustellen, ob die GTID vorhanden ist.

4. Wenn ein Datensatz vorhanden ist, bedeutet dies, dass die Transaktion der GTID ausgeführt wurde und der Slave ihn ignoriert.

5. Wenn kein Datensatz vorhanden ist, führt der Slave die GTID-Transaktion aus und zeichnet die GTID in seinem eigenen Binlog auf. Bevor er die Transaktion liest und ausführt, prüft er zunächst, ob andere Sitzungen die GTID enthalten, um sicherzustellen, dass sie nicht ausgeführt wird wiederholt.

6. Während des Analysevorgangs wird beurteilt, ob ein Primärschlüssel vorhanden ist. Wenn nicht, verwenden Sie alle Scans.

2.4 Vorteile von GTID

1. Einfachere Implementierung von Failover, keine Notwendigkeit, wie zuvor nach log_file und log_pos zu suchen.

2. Einfachere Erstellung einer Master-Slave-Replikation.

3. Sicherer als herkömmliches Kopieren.

4. GTID ist kontinuierlich und ohne Lücken, wodurch Datenkonsistenz und Nullverlust gewährleistet werden.

2.5 Spezifischer Konstruktionsprozess

Für die Konfiguration von GTID geht es hauptsächlich darum, mehrere wichtige Parameter im Zusammenhang mit GTID-Funktionen in der Konfigurationsdatei zu ändern. Es wird empfohlen, dass die MySQL-Version MySQL-5.6.5 oder höher ist.
  • 2.5.1 Öffnen Sie die Master-Gtid
  • Die Hauptkonfiguration ist wie folgt:
  • # 不压缩
    innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream /data/backupMysql/| ssh root@192.168.1.7 "xbstream -x -C /backup/stream"
    
    # 压缩
    innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --stream=xbstream --compress /data/backupMysql/ | ssh root@192.168.1.7 "xbstream -x -C /backup/stream"
  • 2.5.2 Daten auf dem Master sichern
  • #### 未压缩的
    xbstream -x < mysql.xbstream -C /data
    
    #### 压缩过的
    # 1、先解压xbstream
    xbstream -x < mysql_compress.xbstream -C /data
    # 2、再解压qp压缩格式
    for bf in `find . -iname "*\.qp"`; do qpress -d $bf $(dirname $bf) && rm $bf; done
    
    注:如果xtrabackup版本大于2.1.4,可以直接通过以下方式解压第二步。
    innobackupex --decompress /data
2.5.3 Die gesicherten Daten dekomprimieren

innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --copy-back /var/lib/mysql/backup/

2.5.4 Konfigurieren Slave-Konfigurationsdatei Konfiguration auf Slave

stop slave;
SET GLOBAL gtid_purged="c5b5ffe7-ce66-11e7-9a19-00163e00013d:1-515758";
CHANGE MASTER TO MASTER_HOST=&#39;192.168.1.6&#39;,MASTER_PORT=3306,MASTER_USER=&#39;slaveuser&#39;,MASTER_PASSWORD=&#39;c2xhdmV1c2Vy&#39;,MASTER_AUTO_POSITION=1;
start slave;

2.6 已运行经典复制mysql服务器转向GTID复制

  • a、按本文2.5.2描述配置参数文件;
  • b、所有服务器设置global.read_only参数,等待主从服务器同步完毕;  mysql> SET @@global.read_only = ON;
  • c、依次重启主从服务器;
  • d、使用change master 更新主从配置;mysql> CHANGE MASTER TO > MASTER_HOST = host,  > MASTER_PORT = port, > MASTER_USER = user,   > MASTER_PASSWORD = password,   > MASTER_AUTO_POSITION = 1;
  • e、从库开启复制  mysql> START SLAVE; f、验证主从复制

推荐学习:mysql视频教程

Das obige ist der detaillierte Inhalt vonZusammenfassung und Anordnung von MySQL basierend auf der GTID-Master-Slave-Konstruktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen