MySQL 8.0 物理克隆主从部署教程

MySQL 8.0 物理克隆主从部署教程

这份教程专为 MySQL 8.0+ 的服务器设计,利用 Clone Plugin (物理克隆) 实现从服务器的快速部署。此方案直接从主库同步二进制数据,速度极快,是目前企业级部署的首选。


准备工作

  • 确保版本一致:主从库的 MySQL 大版本必须一致(如均为 8.0.x)。
  • 网络畅通:确保主库的 3306 端口对从库开放。
  • 备份风险:克隆操作会完全清空并覆盖从库的所有数据,仅限在一台全新的从库服务器上执行。

第一步:配置环境统一 (关键)

物理克隆对 MySQL 的运行参数要求极高,主从库的以下核心参数必须完全一致。

  1. 在主库查询关键参数: 登录主库执行以下 SQL,记录下这些值:
    
    SELECT @@global.character_set_server, @@global.collation_server, @@global.lower_case_table_names;

2. **在从库修改配置文件**:
打开从库的 `/etc/my.cnf` (或 `/etc/mysql/my.cnf`),确保 `[mysqld]` 部分包含以下内容(根据主库查询结果调整):
```ini
[mysqld]
server-id = 2           # 必须与主库不同
gtid_mode = ON          # 开启 GTID 复制
enforce_gtid_consistency = ON
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
lower_case_table_names = 1 # 必须与主库一致
  1. 重启从库生效:
    
    systemctl restart mysqld

---

### 第二步:配置主库权限

在主库上创建一个专用于克隆的用户。

1. **登录主库**:
```sql
mysql -u root -p
  1. 创建账号并授权:
    
    -- 将 '从库IP' 替换为从库的实际 IP 地址
    CREATE USER 'clone_user'@'从库IP' IDENTIFIED BY 'StrongPassword123!';
    GRANT BACKUP_ADMIN ON *.* TO 'clone_user'@'从库IP';
    FLUSH PRIVILEGES;

3. **加载克隆插件**:
```sql
INSTALL PLUGIN clone SONAME 'mysql_clone.so';

第三步:在从库执行克隆

  1. 登录从库:
    
    mysql -u root -p

2. **加载插件并配置白名单**:
```sql
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
SET GLOBAL clone_valid_donor_list = '主库IP:3306';
  1. 执行物理克隆:
    
    CLONE INSTANCE FROM 'clone_user'@'主库IP':3306 IDENTIFIED BY 'StrongPassword123!';

*系统将自动同步主库数据。完成后,**MySQL 服务会自动重启**。*

---

### 第四步:配置主从同步链路

克隆完成后,数据已就位,现在建立复制链路。

1. **登录从库**:
此时从库数据已更新,直接登录即可。
2. **配置复制源**:
```sql
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='主库IP',
SOURCE_USER='repl_user', -- 确保已在主库创建该复制用户
SOURCE_PASSWORD='repl_password',
SOURCE_AUTO_POSITION = 1;
  1. 启动同步:
    
    START REPLICA;

4. **验证状态**:
```sql
SHOW REPLICA STATUS\G

检查 Replica_IO_Running 和 Replica_SQL_Running 是否均为 Yes。


运维提示

注意: 如果在克隆过程中遇到任何报错(例如 ER_CLONE_...),请务必检查 MySQL 的错误日志文件(通常位于 /var/log/mysqld.log),该日志会详细记录因哪项参数不匹配导致的失败,便于对症下药。

是否需要我为你提供一个简单的 Shell 脚本,用来自动检查主从配置的匹配度?

发表评论