MySQL 複制基於二進制日志,實現主庫異步同步至從庫。本文講解複制工作機制(三線程模型)、同機不同資料庫複製命令、大數據量壓縮遷移流程、常見報錯處理。

# 在 Terminal 執行(非 MySQL 命令列) mysqldump Portal_DEV -u root -ppassword1$ --add-drop-table | mysql Portal_Optimize -u root -ppassword1$
--add-drop-table 確保目標庫表存在時重建。Got a packet bigger than 'max_allowed_packet'修改 my.cnf:
[mysqld] max_allowed_packet = 32M
重啟 MySQL 後重試。
mysqldump -u root -p --quick Portal_DEV | gzip > Portal_DEV_$(date +%F).sql.gz
--quick 流式讀取,避免客戶端 OOM。gzip 管道壓縮,節省磁碟與網路傳輸時間。gunzip < Portal_DEV_2024-01-15.sql.gz | mysql -u root -p Portal_Optimize
my.cnf:log_bin=mysql-bin, server-id=1, binlog_format=ROWmy.cnf:server-id=2, relay_log=relay-bin, read_only=1GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'pwd';CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_USER='repl', MASTER_PASSWORD='pwd', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; START SLAVE;
同機庫間複製用管道直連;大數據量必加 --quick | gzip;生產主從採用 ROW 格式、GTID 模式(MySQL 5.6+)、半同步複制(rpl_semi_sync_master=1)保障數據零丟失。監控 Seconds_Behind_Master=0 確保同步正常。