Von Matthias Jung auf Donnerstag, 19. März 2020
Kategorie: Data Management

Klonen leicht gemacht: Das MySQL Plugin mysql_clone.so

Das Duplizieren von Datenbanken ist eine gängige Admin-Tätigkeit, um:
Diese Arbeit kann mit der MySQL-Version 8.0.17 und dem neuen CLONE-SQL-Kommando nun deutlich vereinfacht werden.

Daten empfangen Du wirst…

Generell sind an einem Klonprozess zwei Systeme beteiligt. Diese werden bei MySQL wie folgt bezeichnet:


Der Prozess des Klonens wird auf dem Empfänger gestartet, muss aber natürlich vorbereitet werden. Dazu benötigt dieses System einen Account, mit dem er die Daten vom Spender anfordern kann. Dieser Account benötigt dazu die „BACKUP_ADMIN"-Rolle.

Zusätzlich zum Account muss auf den beteiligten Systemen das Plugin „mysql_clone.so" geladen werden. Außerdem muss der Spender auf dem Empfänger als gültige Quelle deklariert werden:

Der Übertragungsprozess kann dann lokal (also auf derselben Maschine), remote (wie im Beispiel), verschlüsselt und/oder komprimiert durchgeführt werden.

Überwachen den Prozess Du musst…

Nachdem der Klonprozess gestartet wurde (siehe unten), kann dieser auf dem Empfänger überwacht werden.

Zu beachten ist, dass während des Vorgangs DDL-Kommandos auf dem Spender (!) blockiert werden. Zusätzlich besteht die Einschränkung, dass nur InnoDB-Tabellen mit Daten kopiert werden. Tabellen anderer Engines werden lediglich als Struktur (also ohne Daten) übertragen.

Glaube nur, was selbst gesehen Du hast...

Im folgenden Video klonen wir eine MySQL-Instanz innerhalb eines Servers. Der Spender (Donor) läuft auf Port 3306 und der Empfänger (Receiver) auf Port 3307. Nach der Konfiguration (Plugin laden, User anlegen, Spender deklarieren) wird die Instanz geklont.

Im Anschluss schauen wir uns kurz im "performance_schema" die verschiedenen Prozess-Abschnitte in der "clone_progress"-Tabelle an. Zur Kommunikation nutzen wir die MySQL Shell. Nach dem Übertragen startet der Empfänger automatisch durch. Aus diesem Grund verlieren wir hier kurzzeitig die Verbindung und müssen diese wieder aufbauen.

This browser does not support the video element.

Wahrlich wunderbar das Plugin ist…

Viel einfacher lässt sich ein MySQL-Server wohl nicht kopieren. Nach kurzer Vorbereitungszeit (Konfiguration) lässt sich der Klonprozess problemlos auf dem Empfänger steuern und kontrollieren. Ein weiteres sehr nützliches Feature von MySQL 8.0.

Sie betreiben MySQL-Datenbanken im größeren Stil und wollen Ihre Prozesse und Abläufe effizienter gestalten oder gar automatisieren? Sprechen Sie mit uns.

Kommentare hinterlassen