MySQL 5.6 支援 Binlog 與 GTID 兩種復制模式。GTID 不支援臨時表,生產環境仍以 Binlog 位點模式為主。本文提供 14 步標準化部署流程、雙端配置模板、驗證方法與常見坑點。
/usr/my.cnf,部署優化版 /etc/my.cnfserver-id=1、log-bin=mysqlmaster-bin.log、sync_binlog=1server-id=2、log-bin=mysqlslave-bin.log、sync_binlog=1service mysql restartGRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.101' IDENTIFIED BY '111111';FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; 記錄 File、Positionmysqldump --all-databases --triggers --routines --events > all.sql(共享存儲或 scp 傳遞)UNLOCK TABLES;mysql < all.sqlCHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='repl',
MASTER_PASSWORD='111111',
MASTER_LOG_FILE='mysqlmaster-bin.000004',
MASTER_LOG_POS=327;
START SLAVE;SHOW SLAVE STATUS\G 確認 Slave_IO_Running: Yes、Slave_SQL_Running: YesSTOP SLAVE 暫停,低峰 START SLAVE 追趕,不丟數據[mysqld] server-id=1/2 log-bin=mysqlmaster-bin/mysqlslave-bin sync_binlog=1 binlog_format=mixed expire-logs-days=10 skip-name-resolve lower_case_table_names=1 log_bin_trust_function_creators=1 innodb_buffer_pool_size=2G innodb_log_file_size=10M innodb_flush_log_at_trx_commit=1 innodb_file_per_table=1 max_connections=500 thread_cache_size=8 query_cache_size=32M # Master 獨有 binlog-ignore-db=mysql,information_schema # Slave 獨有 replicate-ignore-db=mysql,information_schema # skip-slave-start 防止啟動自動拉取,手動控制
| 現象 | 原因 | 解決 |
|---|---|---|
| Slave_IO_Running: Connecting | 網絡/防火牆/帳號密碼/主機名解析 | telnet 3306、檢查 GRANT host、skip-name-resolve |
| Slave_SQL_Running: No | 數據衝突/臨時表/非確定性函數 | 跳過事務、改用 ROW 格式、避免 UUID()/NOW() |
| Seconds_Behind_Master 巨大 | 長 SQL/大事務/硬件瓶頸 | 優化慢查詢、升級從庫配置、並行復制 (5.7+) |
| GTID 模式報錯 | 使用了臨時表 | 改用 Binlog 模式或避免臨時表 |