🔄 Clone MySQL Database
📋 Giới Thiệu
Clone là tính năng mới được giới thiệu từ MySQL 8.0.17, cho phép:
- Sao chép toàn bộ instance MySQL
- Clone cục bộ (local) hoặc từ xa (remote)
- Sao chép trực tiếp mà không cần backup/restore
🚀 Kích Hoạt Tính Năng Clone
1. Kiểm Tra Phiên Bản MySQL
# Kiểm tra phiên bản MySQL
mysqld --version
2. Kích Hoạt Plugin Clone
Chỉnh sửa file cấu hình MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Thêm vào phần [mysqld]
:
[mysqld]
plugin-load=mysql_clone.so
Khởi động lại MySQL:
sudo systemctl restart mysql
Kiểm tra plugin:
SELECT plugin_name, plugin_status, plugin_type
FROM information_schema.plugins
WHERE plugin_name = 'clone';
💾 Clone Cục Bộ (Local Clone)
1. Chuẩn Bị Thư Mục
# Tạo thư mục backup
mkdir /home/mysql_backup
chown mysql. /home/mysql_backup
# Cấu hình AppArmor
sudo nano /etc/apparmor.d/usr.sbin.mysqld
# Thêm vào file:
/usr/sbin/mysqld {
/home/mysql_backup/ r,
/home/mysql_backup/** rwk,
}
# Khởi động lại AppArmor
sudo systemctl restart apparmor
2. Thực Hiện Clone
-- Clone vào thư mục mới
CLONE LOCAL DATA DIRECTORY = '/home/mysql_backup/backup01/';
cẩn thận
Thư mục đích phải không tồn tại trước khi clone
🌐 Clone Từ Xa (Remote Clone)
1. Cấu Hình Donor (Máy Nguồn)
-- Tạo user cho clone
CREATE USER 'clone_user'@'%' IDENTIFIED BY 'password';
GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'%';
2. Cấu Hình Recipient (Máy Đích)
-- Tạo user cho clone
CREATE USER 'clone_user'@'%' IDENTIFIED BY 'password';
GRANT CLONE_ADMIN ON *.* TO 'clone_user'@'%';
-- Cấu hình donor list
SET GLOBAL clone_valid_donor_list = 'donor_host:3306';
-- Thực hiện clone
CLONE INSTANCE FROM clone_user@donor_host:3306
IDENTIFIED BY 'password';
-- Clone vào thư mục cụ thể
CLONE INSTANCE FROM clone_user@donor_host:3306
IDENTIFIED BY 'password'
DATA DIRECTORY = '/path/to/directory';
3. Kiểm Tra Trạng Thái Clone
SELECT STATE FROM performance_schema.clone_status;
⚠️ Lưu Ý Quan Trọng
-
Yêu Cầu Hệ Thống:
- MySQL 8.0.17 trở lên
- Đủ dung lượng ổ đĩa
- Cùng phiên bản MySQL giữa donor và recipient
-
Bảo Mật:
- Cấu hình AppArmor/SELinux phù hợp
- Quản lý quyền user cẩn thận
- Bảo vệ thông tin xác thực
-
Hiệu Suất:
- Clone có thể tốn nhiều tài nguyên
- Nên thực hiện trong thời gian thấp điểm
- Gi ám sát quá trình clone
🔍 Xử Lý Sự Cố
1. Lỗi Plugin
-- Kiểm tra trạng thái plugin
SHOW PLUGINS;
SHOW VARIABLES LIKE 'clone%';