mysql主從復制配置步驟如下:一、主庫開啟二進制日志并創(chuàng)建復制賬號;二、從庫設(shè)置唯一server-id并執(zhí)行change master命令啟動復制;三、注意server-id沖突、網(wǎng)絡(luò)連接、數(shù)據(jù)一致性等問題;四、定期監(jiān)控復制狀態(tài),使用工具檢查延遲,及時處理復制錯誤。配置完成后需持續(xù)維護以確保穩(wěn)定性。
mysql主從復制是數(shù)據(jù)庫高可用和讀寫分離的基礎(chǔ)設(shè)置之一,配置得當可以提升系統(tǒng)的性能與穩(wěn)定性。下面直接講講怎么配、要注意什么。
一、主庫配置:開啟日志并授權(quán)
首先要在主庫上開啟二進制日志(binlog),這是主從同步的基礎(chǔ)。修改MySQL的配置文件(通常是my.cnf或my.ini),在[mysqld]段中添加或確認以下幾項:
server-id=1 log-bin=mysql-bin
然后重啟MySQL服務(wù)使配置生效。接下來需要創(chuàng)建一個用于復制的賬號,并授予REPLICATION SLAVE權(quán)限:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
注意這里的IP限制要根據(jù)實際網(wǎng)絡(luò)情況調(diào)整,不要隨便用通配符“%”放通所有IP,避免安全風險。
二、從庫配置:指向主庫并啟動復制
從庫的配置也很關(guān)鍵,同樣修改配置文件,設(shè)置唯一的server-id(不能和主庫一樣):
server-id=2
重啟MySQL后,在從庫執(zhí)行CHANGE MASTER命令,指定主庫的地址、端口、用戶、密碼以及當前binlog的位置:
CHANGE MASTER TO MASTER_HOST='主庫IP', MASTER_PORT=3306, MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 4;
位置可以從主庫執(zhí)行SHOW MASTER STATUS;獲取。完成后啟動復制線程:
START SLAVE;
檢查狀態(tài)是否正常可以用SHOW SLAVE STATUSG,重點關(guān)注Slave_IO_Running和Slave_SQL_Running是否為Yes。
三、常見問題及注意事項
- server-id沖突:主從服務(wù)器的server-id必須不同,否則復制會失敗。
- 網(wǎng)絡(luò)連接問題:確保從庫能訪問主庫的3306端口,防火墻規(guī)則要放開。
- 數(shù)據(jù)一致性問題:如果從庫已有數(shù)據(jù),一定要提前做好主從數(shù)據(jù)的一致性校驗,否則可能引起SQL錯誤。
- 忽略表的問題:可以通過配置replicate-ignore-db或replicate-ignore-table來控制哪些庫或表不需要同步。
- 延遲復制:某些場景可以考慮啟用延遲復制(delayed replication),防止誤操作導致的數(shù)據(jù)丟失。
另外,建議定期檢查主從之間的延遲情況,可以通過Seconds_Behind_Master字段來判斷。
四、監(jiān)控與維護建議
日常運維中,建議使用腳本或工具定期檢查主從狀態(tài),比如使用pt-heartbeat來精確統(tǒng)計復制延遲。也可以結(jié)合zabbix等監(jiān)控系統(tǒng)進行告警。
遇到復制錯誤時,先看SHOW SLAVE STATUSG中的Last_SQL_Error信息,大多數(shù)時候是語句沖突或者表不存在之類的錯誤。如果是非關(guān)鍵錯誤,可以跳過錯誤繼續(xù)執(zhí)行:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;
但這種方法需謹慎使用,避免掩蓋真實問題。
基本上就這些,主從復制本身不復雜,但細節(jié)處理不到位容易出問題。配置好以后記得持續(xù)關(guān)注運行狀態(tài),別以為一次配置就能長期穩(wěn)定運行。