MySQL停服務(wù)方式新增從庫的實操指南
在 MySQL 主從復(fù)制架構(gòu)中,當需要擴展從庫節(jié)點時,若業(yè)務(wù)允許短時間停服務(wù)(比如夜間維護窗口),直接復(fù)用舊從庫的數(shù)據(jù)和配置是最高效的方案。這種方式無需重新全量備份主庫,能最大程度保證數(shù)據(jù)一致性,且操作步驟簡潔可控。本文結(jié)合近期實操案例,詳細拆解從架構(gòu)準備到復(fù)制驗證的完整流程,附避坑要點。
一、架構(gòu)說明
本次實操環(huán)境:
- 主庫(Master):192.168.184.151
- 舊從庫(Slave):192.168.184.152(已穩(wěn)定同步主庫數(shù)據(jù))
- 新從庫(New Slave):192.168.184.153(待新增節(jié)點)
核心邏輯:通過拷貝舊從庫的完整運行環(huán)境(數(shù)據(jù)目錄、中繼日志、配置文件等),快速搭建新從庫。由于復(fù)用了舊從庫的 relay log(中繼日志),新從庫可直接承接主庫后續(xù)的 binlog 同步,無需重新定位同步起點。
二、完整操作步驟
1. 新從庫環(huán)境準備
先在新從庫創(chuàng)建 MySQL 專用目錄,規(guī)范文件存儲結(jié)構(gòu):
mkdir /data/mysql/{binlog,data,log,tmpdir,conf} -p
# 目錄說明:binlog存中繼日志,data存數(shù)據(jù)文件,log存錯誤日志
2. 拷貝舊從庫基礎(chǔ)環(huán)境
從舊從庫同步 MySQL 安裝目錄(含二進制文件),避免重新編譯安裝:
# 在舊從庫執(zhí)行,遠程拷貝到新從庫 scp -r /usr/local/mysql/ 192.168.184.153:/usr/local/
3. 停舊從庫保障數(shù)據(jù)一致性
關(guān)鍵步驟:必須停止舊從庫服務(wù),否則 InnoDB 數(shù)據(jù)文件處于寫入狀態(tài),拷貝會導(dǎo)致數(shù)據(jù)損壞:
# 舊從庫執(zhí)行停止命令 /etc/init.d/mysql.server stop # 驗證是否停穩(wěn):ps -ef | grep mysql 無進程即為成功
4. 同步核心數(shù)據(jù)與日志
- 拷貝數(shù)據(jù)目錄(含完整數(shù)據(jù)表空間):
cd /data/mysql scp -r data/* 192.168.184.153:/data/mysql/data/
- 拷貝中繼日志(關(guān)鍵!保留同步位置信息):
cd /data/mysql/binlog/ scp mysql-relay-bin.* 192.168.184.153:/data/mysql/binlog/
- 恢復(fù)舊從庫服務(wù)(避免影響原有讀業(yè)務(wù)):
/etc/init.d/mysql.server start
5. 同步配置文件與啟動腳本
- 拷貝啟動腳本:
scp /etc/init.d/mysql.server 192.168.184.153:/etc/init.d/
- 拷貝配置文件(my.cnf):
scp /data/mysql/conf/my.cnf 192.168.184.153:/data/mysql/conf/
6. 新從庫關(guān)鍵配置修改
核心修改:server-id 必須唯一(主庫、舊從庫、新從庫不可重復(fù)),取值范圍 1~2³²-1:
# 新從庫編輯配置文件 vim /data/mysql/conf/my.cnf # 修改server-id(建議用IP尾段,便于記憶) server-id=184153 # 可選優(yōu)化:開啟中繼日志自動清理 relay_log_purge=1
7. 啟動新從庫并授權(quán)
# 創(chuàng)建錯誤日志文件并授權(quán)(避免啟動報錯) touch /data/mysql/log/mysql.err chown -R mysql:mysql /data/mysql/ # 確保權(quán)限一致 # 啟動新從庫 /etc/init.d/mysql.server start
三、復(fù)制狀態(tài)驗證
登錄新從庫執(zhí)行以下命令,核心檢查 2 個關(guān)鍵參數(shù):
show slave status\G

關(guān)鍵驗證點:
Slave_IO_Running: Yes(I/O 線程正常,能拉取主庫 binlog)Slave_SQL_Running: Yes(SQL 線程正常,能回放中繼日志)Seconds_Behind_Master: 0(無同步延遲,數(shù)據(jù)實時一致)
若出現(xiàn) I/O 線程報錯,需檢查:
- 主庫是否授權(quán)新從庫復(fù)制賬號
- 防火墻是否開放 3306 端口
- server-id 是否重復(fù)
四、避坑實戰(zhàn)總結(jié)
- 數(shù)據(jù)一致性保障:停舊從庫是核心前提,若無法停服務(wù),可改用
FLUSH TABLES WITH READ LOCK鎖表后拷貝,但會阻塞寫入 - 權(quán)限問題:所有文件必須歸屬 mysql 用戶,否則啟動時報
Permission denied - 版本兼容:主庫版本不能高于從庫(如主庫 5.7,從庫可 8.0;反之不支持)
- 傳輸優(yōu)化:大文件建議用
rsync -avzP --bwlimit=50000壓縮傳輸,避免帶寬占滿 - 日志清理:新從庫穩(wěn)定后,可通過
PURGE RELAY LOGS BEFORE '2026-03-09 00:00:00'清理舊中繼日志
五、適用場景與局限性
? 適用場景:
- 數(shù)據(jù)量較大(GB~TB 級),全量備份主庫耗時久
- 可接受舊從庫短時間(分鐘級)停服務(wù)
- 非核心業(yè)務(wù)從庫擴展
? 不適用場景:
- 主庫寫入壓力極大,舊從庫停服務(wù)會導(dǎo)致讀負載集中
- 需 7×24 小時無間斷服務(wù)的核心集群(建議用 GTID 無感知新增從庫)
結(jié)語
這種 “克隆舊從庫” 的方案,本質(zhì)是利用中繼日志的同步位置信息,省去了全量備份 + 增量恢復(fù)的復(fù)雜流程,實操成本低且數(shù)據(jù)一致性高。建議在測試環(huán)境驗證通過后,再在生產(chǎn)環(huán)境執(zhí)行,維護窗口優(yōu)先選擇業(yè)務(wù)低峰期。如果遇到同步延遲、權(quán)限報錯等問題,歡迎在評論區(qū)交流~
以上就是MySQL停服務(wù)方式新增從庫的實操指南的詳細內(nèi)容,更多關(guān)于MySQL停服務(wù)方式新增從庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL 快速刪除大量數(shù)據(jù)(千萬級別)的幾種實踐方案詳解
這篇文章主要介紹了MySQL 快速刪除大量數(shù)據(jù)(千萬級別)的幾種實踐方案詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07
mysql導(dǎo)入導(dǎo)出數(shù)據(jù)的示例詳解
本文主要介紹了MySQL 導(dǎo)出和導(dǎo)入數(shù)據(jù)的幾種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-05-05
MySQL5.7不停業(yè)務(wù)將傳統(tǒng)復(fù)制變更為GTID復(fù)制的實例
下面小編就為大家?guī)硪黄狹ySQL5.7不停業(yè)務(wù)將傳統(tǒng)復(fù)制變更為GTID復(fù)制的實例。小編覺的挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
Mysql 5.5.56版本(二進制包安裝)自定義安裝路徑步驟記錄
這篇文章主要介紹了Mysql 5.5.56版本(二進制包安裝)自定義安裝路徑步驟記錄,需要的朋友可以參考下2017-07-07
MySQL實現(xiàn)merge?into四種方法代碼實例
Merge?into是一個數(shù)據(jù)庫操作術(shù)語,通常用于將兩個或多個表中的數(shù)據(jù)合并到一個表中,這篇文章主要給大家介紹了關(guān)于MySQL實現(xiàn)merge?into四種方法的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-07-07
Mysql實現(xiàn)null值排在最前/最后的方法示例
這篇文章主要給大家介紹了關(guān)于Mysql實現(xiàn)null值排在最前/最后的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-02-02
mysql-connector-java.jar包的下載過程詳解
這篇文章主要介紹了mysql-connector-java.jar包的下載過程詳解,mysql-connector-java.jar是java連接使用MySQL是必不可少的,感興趣的可以了解一下2020-07-07

