Klonen leicht gemacht: Das MySQL Plugin mysql_clone.so
- Entwicklungsumgebungen aufzubauen
- Replikationen aufzubauen
- Cluster aufzubauen
- ….
Daten empfangen Du wirst…
Generell sind an einem Klonprozess zwei Systeme beteiligt. Diese werden bei MySQL wie folgt bezeichnet:
- Donor (Das Quellsystem)
- Recipient (Das Zielsystem)
mysql> create user ’clone‘@’%’ identified by ’clone‘; mysql> grant backup_admin on *.* to ’clone‘@’%’
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:
mysql> set global clone_valid_donor_list='192.168.56.101:3306';
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.
mysql> clone instance from 'root'@'192.168.56.101':3306 identified by 'root'; mysql> select id, stage, begin_time, end_time from performance_schema.clone_progress; +----+-----------+----------------------------+----------------------------+ | id | stage | begin_time | end_time | +----+-----------+----------------------------+----------------------------+ | 1 | DROP DATA | 2020-01-28 15:32:31.034604 | 2020-01-28 15:32:35.594683 | | 1 | FILE COPY | 2020-01-28 15:32:35.595617 | 2020-01-28 15:32:37.495037 | | 1 | PAGE COPY | 2020-01-28 15:32:37.495356 | 2020-01-28 15:32:37.727107 | | 1 | REDO COPY | 2020-01-28 15:32:37.727544 | 2020-01-28 15:32:37.829889 | | 1 | FILE SYNC | 2020-01-28 15:32:37.830163 | 2020-01-28 15:32:38.987839 | | 1 | RESTART | 2020-01-28 15:32:38.987839 | 2020-01-28 15:32:44.437973 | | 1 | RECOVERY | 2020-01-28 15:32:44.437973 | 2020-01-28 15:32:45.769449 | +----+-----------+----------------------------+----------------------------+ 7 rows in set (0.0062 sec)
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.
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.
Sie haben Interesse an einer Weiterbildung oder Fragen zum Thema MySQL? Sprechen Sie uns an oder besuchen Sie einen unserer Kurse aus unserem Seminarshop:
Zu unseren MySQL Seminaren
Principal Consultant bei ORDIX
Bei Updates im Blog, informieren wir per E-Mail.
Kommentare