DBAtlas · Atlas de operações de banco de dados

Reconstruir uma réplica do zero com o plugin CLONE

MySQLReplicação

Comando

-- 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;

O que faz

Copia fisicamente pela rede os dados InnoDB do donor, reinicia o recipient e transfere o estado de GTID; produz uma réplica consistente sem etapas separadas de backup, transferência e restore.

Quando usar

Para reconstruir uma réplica corrompida, com errant GTIDs ou tão atrasada que seus binlogs foram expurgados, ou para adicionar uma nova réplica.

Atenção

Todos os dados do recipient (inclusive usuários) são substituídos pela cópia do donor; a senha do root passa a ser a do donor. Donor e recipient precisam da mesma série de versão, plataforma e conjunto de plugins (antes do 8.0.37 era exigida exatamente a mesma point release). O usuário do recipient que executa o comando precisa de CLONE_ADMIN. Quando o clone termina, o mysqld reinicia sozinho; sem um supervisor como systemd / mysqld_safe ele retorna 3707 'Restart server failed (mysqld is not managed by supervisor process)'. Isso não é uma falha: o clone está completo, inicie o servidor manualmente. O donor sofre carga pesada de IO / rede; limite-a com clone_max_concurrency e clone_max_data_bandwidth. Com GTID desligado, use BINLOG_FILE / BINLOG_POSITION de clone_status como SOURCE_LOG_FILE / SOURCE_LOG_POS.

Abrir no DBAtlas →

Relacionados