这份教程专为 MySQL 8.0+ 的服务器设计,利用 Clone Plugin (物理克隆) 实现从服务器的快速部署。此方案直接从主库同步二进制数据,速度极快,是目前企业级部署的首选。
准备工作
- 确保版本一致:主从库的 MySQL 大版本必须一致(如均为 8.0.x)。
- 网络畅通:确保主库的 3306 端口对从库开放。
- 备份风险:克隆操作会完全清空并覆盖从库的所有数据,仅限在一台全新的从库服务器上执行。
第一步:配置环境统一 (关键)
物理克隆对 MySQL 的运行参数要求极高,主从库的以下核心参数必须完全一致。
- 在主库查询关键参数:
登录主库执行以下 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 # 必须与主库一致
- 重启从库生效:
systemctl restart mysqld
---
### 第二步:配置主库权限
在主库上创建一个专用于克隆的用户。
1. **登录主库**:
```sql
mysql -u root -p
- 创建账号并授权:
-- 将 '从库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';
第三步:在从库执行克隆
- 登录从库:
mysql -u root -p
2. **加载插件并配置白名单**:
```sql
INSTALL PLUGIN clone SONAME 'mysql_clone.so';
SET GLOBAL clone_valid_donor_list = '主库IP:3306';
- 执行物理克隆:
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;
- 启动同步:
START REPLICA;
4. **验证状态**:
```sql
SHOW REPLICA STATUS\G
检查 Replica_IO_Running 和 Replica_SQL_Running 是否均为 Yes。
运维提示
注意: 如果在克隆过程中遇到任何报错(例如
ER_CLONE_...),请务必检查 MySQL 的错误日志文件(通常位于/var/log/mysqld.log),该日志会详细记录因哪项参数不匹配导致的失败,便于对症下药。
是否需要我为你提供一个简单的 Shell 脚本,用来自动检查主从配置的匹配度?
发表评论