Replica mit dem CLONE-Plugin komplett neu aufbauen
MySQLReplikationBefehl
-- Donor (healthy replica or source)
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
CREATE USER 'clone_donor'@'%' IDENTIFIED BY 'Cl0ne#Donor';
GRANT BACKUP_ADMIN ON *.* TO 'clone_donor'@'%';
-- Recipient (replica to rebuild; its data is replaced)
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
SET GLOBAL clone_valid_donor_list = 'db1:3306';
CLONE INSTANCE FROM 'clone_donor'@'db1':3306 IDENTIFIED BY 'Cl0ne#Donor';
-- After the restart: verify and start replication
SELECT STATE, ERROR_NO, BINLOG_FILE, BINLOG_POSITION, GTID_EXECUTED FROM performance_schema.clone_status;
SELECT STAGE, STATE, ROUND(DATA / 1024 / 1024) AS data_mb FROM performance_schema.clone_progress;
CHANGE REPLICATION SOURCE TO SOURCE_HOST = 'db1', SOURCE_PORT = 3306, SOURCE_USER = 'repl', SOURCE_PASSWORD = 'Repl#2024', SOURCE_AUTO_POSITION = 1, SOURCE_SSL = 1;
START REPLICA;Was es tut
Kopiert die InnoDB-Daten des Donors physisch über das Netzwerk, startet den Empfänger neu und übernimmt den GTID-Zustand; erzeugt eine konsistente Replica ohne separate Schritte für Backup, Übertragung und Restore.
Wann einsetzen
Um eine korrupte Replica, eine mit Errant GTIDs oder eine, die so weit zurückliegt, dass ihre Binlogs gelöscht wurden, neu aufzubauen, oder um eine neue Replica hinzuzufügen.
Vorsicht
Alle Daten auf dem Empfänger (einschließlich Benutzer) werden durch die Kopie des Donors ersetzt; das root-Passwort wird das des Donors. Donor und Empfänger brauchen dieselbe Release-Serie, Plattform und Plugin-Ausstattung (vor 8.0.37 war exakt dasselbe Point Release nötig). Der Benutzer, der den Befehl auf dem Empfänger ausführt, braucht CLONE_ADMIN. Nach Abschluss des Klons startet mysqld sich selbst neu; ohne Supervisor wie systemd / mysqld_safe liefert es 3707 'Restart server failed (mysqld is not managed by supervisor process)'. Das ist kein Fehlschlag: Der Klon ist fertig, starte den Server manuell. Der Donor erfährt hohe IO-/Netzwerklast; begrenze sie mit clone_max_concurrency und clone_max_data_bandwidth. Bei abgeschaltetem GTID BINLOG_FILE / BINLOG_POSITION aus clone_status als SOURCE_LOG_FILE / SOURCE_LOG_POS verwenden.