192.168.199.21,server-id=1,開啟 log-bin。server-id=06,初期未開 log-bin(只做從庫)。rep@'%',密碼 111111,權限 REPLICATION SLAVE。mysqldump --master-data=1 獲取一致性位點。/etc/my.cnf)[mysqld] server-id = 1 log-bin = mysql-bin # 建議補上 binlog_format = ROW gtid_mode = ON # 5.6+ 可選,本文未啟用 enforce_gtid_consistency = ON
mysql -uroot -p111111 -e " GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%' IDENTIFIED BY '111111'; FLUSH PRIVILEGES; SHOW GRANTS FOR 'rep'@'%';"
# 官方推薦流程:鎖表 → 記錄位點 → 備份 → 解鎖 # 這裡用 --master-data=1 直接在 dump 文件頭部輸出 CHANGE MASTER TO 語句 mysqldump -uroot -p111111 -A -B --events --master-data=1 --single-transaction > /backup/db.sql
--master-data=1 會在 dump 輸出:CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000025', MASTER_LOG_POS=107;,導入從庫後可直接 START SLAVE。
mysql -uroot -p111111 -S /data/3306/mysql.sock -e " CHANGE MASTER TO MASTER_HOST='192.168.199.21', MASTER_PORT=3306, MASTER_USER='rep', MASTER_PASSWORD='111111', MASTER_LOG_FILE='mysql-bin.000025', MASTER_LOG_POS=107; START SLAVE; SHOW SLAVE STATUS\G"
*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.199.21 Master_User: rep Master_Port: 3306 Master_Log_File: mysql-bin.000025 Read_Master_Log_Pos: 107 Relay_Log_File: relay-bin.000002 Relay_Log_Pos: 253 Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0
雙 Yes + Seconds_Behind_Master=0** = 復制正常運行。
datadir、socket、port、server-id、relay-log。server-id 與所有從庫實例 server-id **全局唯一**。log-bin、log-slave-updates,支援鏈式復制、雙主切換、GTID 升級。--master-data=1 需主庫有 RELOAD 權限 (root 當然有);若主庫極忙,考慮 --single-transaction (InnoDB) 避免長時間鎖表。CHANGE MASTER TO 參數若與 dump 文件頭不一致,以實際執行的為準;建議直接 SOURCE /backup/db.sql 後再 START SLAVE,讓 dump 文件自動帶入位點。Seconds_Behind_Master、Slave_IO_Running/Slave_SQL_Running、Relay Log 磁碟佔用。本文記錄的是 **MySQL 5.6 時代經典「位點復制」搭建流程**。現代生產環境強烈建議啟用 **GTID (Global Transaction ID)** 復制:gtid_mode=ON + enforce_gtid_consistency=ON,配合 CHANGE MASTER TO MASTER_AUTO_POSITION=1 實現**無需手動管位點、故障自動定位、多源復制友好**。下一步:將此架構升級為 GTID + MHA/Orchestrator 自動故障轉移集群。