Chuyển tới nội dung chính

🔄 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

  1. 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
  2. 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
  3. 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%';

2. Lỗi Quyền

-- Kiểm tra quyền user
SHOW GRANTS FOR 'clone_user'@'%';

📚 Tài Liệu Tham Khảo