MySQL introduced a Clone plugin allowing for fast and efficient data cloning between MySQL instances. This guide details enabling the Clone feature, performing local and remote data cloning, and configuring SELinux policies for cloned data directories.
[mysqld]
plugin-load=mysql_clone.so
systemctl restart mysqld
mysql -u root -p -e "SELECT plugin_name, plugin_status, plugin_type FROM information_schema.plugins WHERE plugin_name = 'clone';"
mkdir /home/mysql_backup
chown mysql. /home/mysql_backup
mysql -u root -p -e "CLONE LOCAL DATA DIRECTORY = '/home/mysql_backup/backup01/';"
/home/mysql_backup/backup01./home, adjust SELinux policies accordingly.
mysqld-clone.te with required permissions.checkmodule -m -M -o mysqld-clone.mod mysqld-clone.te
semodule_package --outfile mysqld-clone.pp --module mysqld-clone.mod
semodule -i mysqld-clone.pp
Prepare the Donor and Recipient:
BACKUP_ADMIN privilege.CREATE USER 'clone_user'@'%' IDENTIFIED BY 'password';
GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'%';
CLONE_ADMIN privilege.CREATE USER 'clone_user'@'%' IDENTIFIED BY 'password';
GRANT CLONE_ADMIN ON *.* TO 'clone_user'@'%';
Perform the Clone Operation:
SET GLOBAL clone_valid_donor_list = 'donor_ip:3306';
CLONE INSTANCE FROM clone_user@donor_ip:3306 IDENTIFIED BY 'password';
Verify the Clone Status:
SELECT STATE FROM performance_schema.clone_status;