Класичний шлях створення репліки: зняти дамп з джерела, перенести, відновити (години для великої бази), налаштувати реплікацію з позиції з дампу. Багато ручних кроків і великий простір для помилок.
Clone plugin (MySQL 8.0.17+) копіює фізичні файли даних InnoDB з працюючого сервера-донора на сервер-одержувач прямо через протокол MySQL, без зупинки донора.
Підготовка:
-- на обох серверах
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
-- на донорі: користувач для клонування
CREATE USER 'clone_user'@'10.0.0.%' IDENTIFIED BY '...';
GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'10.0.0.%';
-- на одержувачі: хто клонує і звідки можна
GRANT CLONE_ADMIN ON *.* TO 'admin'@'localhost';
SET GLOBAL clone_valid_donor_list = '10.0.0.10:3306';
Клонування (на одержувачі):
CLONE INSTANCE FROM 'clone_user'@'10.0.0.10':3306 IDENTIFIED BY '...';
Що відбувається:
- дані одержувача видаляються - він стає точною копією донора;
- файли передаються потоком, паралельно;
- зміни, що відбуваються на донорі під час копіювання, теж переносяться - результат узгоджений;
- одержувач автоматично перезапускається (якщо ним керує systemd чи інший супервізор).
Прогрес видно в performance_schema.clone_progress, підсумок - у clone_status.
Налаштування реплікації після клонування: клон зберігає координати - позицію бінарного журналу й множину GTID. З GTID досить:
CHANGE REPLICATION SOURCE TO
SOURCE_HOST = '10.0.0.10', SOURCE_USER = 'repl', SOURCE_PASSWORD = '...',
SOURCE_AUTO_POSITION = 1;
START REPLICA;
Обмеження:
- однакова версія донора й одержувача (у межах однієї серії допустимі різні патч-версії), та сама платформа й операційна система;
- копіюються лише дані InnoDB; таблиці інших рушіїв створюються порожніми;
- клонування навантажує мережу й диск донора - є налаштування обмеження швидкості (
clone_max_data_bandwidth,clone_max_network_bandwidth); - конфігураційні файли (
my.cnf) не переносяться; - DDL на донорі під час клонування за замовчуванням дозволено (
clone_block_ddl = OFF), але чи потрапить його результат у клон, залежить від того, чи завершився він до знімка. Для передбачуваності на час клонування схему краще не змінювати.
Також використовується: InnoDB Cluster і Group Replication самі застосовують clone для додавання нового вузла, коли журналів недостатньо, щоб «наздогнати» кластер.
Для бекапу clone теж придатний (клонування в локальний каталог: CLONE LOCAL DATA DIRECTORY = '/backups/2026-10-04'), але без інкрементних бекапів і з тими ж обмеженнями.