DBAtlas · Атлас эксплуатации баз данных

Пересоздать реплику с нуля через плагин CLONE

MySQLРепликация

Команда

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

Что делает

Физически копирует данные InnoDB донора по сети, перезапускает получателя и переносит состояние GTID; создаёт согласованную реплику без отдельных шагов бэкапа, передачи и восстановления.

Когда использовать

Чтобы пересоздать повреждённую реплику, реплику с errant GTID или настолько отставшую, что её binlog уже удалены, либо чтобы добавить новую реплику.

Внимание

Все данные получателя (включая пользователей) заменяются копией донора; пароль root становится паролем донора. Донору и получателю нужны одинаковые серия релизов, платформа и набор плагинов (до 8.0.37 требовался точно такой же релиз). Пользователю на получателе, выполняющему команду, нужен CLONE_ADMIN. По завершении клонирования mysqld перезапускается сам; без супервизора, такого как systemd / mysqld_safe, возвращается 3707 'Restart server failed (mysqld is not managed by supervisor process)'. Это не сбой: клонирование завершено, запустите сервер вручную. Донор испытывает высокую нагрузку IO / сети; ограничьте её через clone_max_concurrency и clone_max_data_bandwidth. При выключенном GTID используйте BINLOG_FILE / BINLOG_POSITION из clone_status как SOURCE_LOG_FILE / SOURCE_LOG_POS.

Открыть в DBAtlas →

Связанные материалы