DBAtlas · Veritabanı operasyon atlası

Replikayı CLONE plugin ile sıfırdan yeniden kur

MySQLReplikasyon

Komut

-- Donor (saglikli replika veya kaynak)
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
CREATE USER 'clone_donor'@'%' IDENTIFIED BY 'Cl0ne#Donor';
GRANT BACKUP_ADMIN ON *.* TO 'clone_donor'@'%';

-- Recipient (yeniden kurulacak replika; mevcut verisi silinir)
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';

-- Restart sonrasi: sonucu dogrula ve replikasyonu baslat
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;

Ne yapar?

Donor sunucunun InnoDB verisini fiziksel olarak ağ üzerinden kopyalar, recipient'ı restart eder ve GTID durumunu da taşır; ayrı yedek alma / taşıma / geri yükleme adımları olmadan tutarlı bir replika üretir.

Ne zaman kullanılır?

Bozulan, errant GTID'li veya çok geride kalıp binlog'u purge edilmiş bir replikayı yeniden kurmak ya da yeni replika eklemek için.

Dikkat

Recipient'taki tüm veri (kullanıcılar dahil) donor'un kopyasıyla değişir; root parolası da donor'unki olur. Donor ve recipient aynı sürüm serisi, platform ve plugin setine sahip olmalı (8.0.37 öncesinde aynı point release şarttı). Komutu çalıştıran recipient kullanıcısında CLONE_ADMIN gerekir. Klon bitince mysqld kendini restart eder; systemd / mysqld_safe gibi bir supervisor yoksa 3707 'Restart server failed (mysqld is not managed by supervisor process)' döner. Bu bir hata değildir, klon tamamlanmıştır; sunucuyu elle başlat. Donor'da ciddi IO / network yükü oluşur; clone_max_concurrency ve clone_max_data_bandwidth ile sınırla. GTID kapalıysa clone_status'taki BINLOG_FILE / BINLOG_POSITION ile SOURCE_LOG_FILE / SOURCE_LOG_POS ver.

DBAtlas'ta aç →

İlgili