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の状態を引き継ぐ。個別のバックアップ、転送、リストアの手順なしで一貫性のあるレプリカを作成する。

使用する場面

破損したレプリカ、誤った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が無効な場合は、clone_statusのBINLOG_FILE / BINLOG_POSITIONをSOURCE_LOG_FILE / SOURCE_LOG_POSとして使用する。

DBAtlas で開く →

関連項目