MySQL 主從復(fù)制的配置步驟包括:1. 準(zhǔn)備主從服務(wù)器環(huán)境,確保版本一致、網(wǎng)絡(luò)互通,配置不同的server-id 並開啟二進(jìn)制日誌;2. 在主庫創(chuàng)建專用複制賬戶並授權(quán);3. 使用mysqldump 初始化從庫數(shù)據(jù)並導(dǎo)入;4. 從庫執(zhí)行CHANGE MASTER 命令啟動(dòng)複製線程並檢查狀態(tài);5. 可選設(shè)置自動(dòng)故障切換,借助外部工具實(shí)現(xiàn)高可用,或手動(dòng)切換主庫並調(diào)整復(fù)制關(guān)係以保障數(shù)據(jù)一致性。
MySQL 主從復(fù)制是實(shí)現(xiàn)高可用架構(gòu)的一個(gè)基礎(chǔ)手段。配置得當(dāng)?shù)脑挘梢栽谥鲙旃收蠒r(shí)快速切換到從庫,保障服務(wù)連續(xù)性。關(guān)鍵在於確保複製鏈路穩(wěn)定、數(shù)據(jù)一致性有保障,並配合合適的監(jiān)控和切換機(jī)制。

1. 準(zhǔn)備主從服務(wù)器環(huán)境
在開始之前,你需要至少兩臺(tái)服務(wù)器:一臺(tái)作為主庫(master),另一臺(tái)或多臺(tái)作為從庫(slave)。建議這兩臺(tái)服務(wù)器的MySQL 版本一致,操作系統(tǒng)也盡量相同,以減少兼容性問題。

- 確保網(wǎng)絡(luò)互通,主庫允許從庫訪問其3306端口
- 配置主從服務(wù)器的
server-id
不同,這是複制的基礎(chǔ)要求之一 - 開啟主庫的二進(jìn)制日誌(binlog)功能,因?yàn)檠}制依賴於它來記錄數(shù)據(jù)變更
例如,在主庫的配置文件(如/etc/my.cnf
)中添加:
server-id=1 log-bin=mysql-bin
從庫則設(shè)置不同的server-id
,比如2,並且也可以開啟只讀模式來防止誤操作寫入:

server-id=2 read_only=1
修改後重啟MySQL 服務(wù)使配置生效。
2. 創(chuàng)建專用複制賬戶
為了安全起見,不要使用root 或其他權(quán)限過大的用戶進(jìn)行複制。應(yīng)該專門創(chuàng)建一個(gè)用於復(fù)制的賬號(hào),並賦予REPLICATION SLAVE
權(quán)限。
在主庫上執(zhí)行如下命令:
CREATE USER 'repl'@'從庫IP' IDENTIFIED BY '安全密碼'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'從庫IP'; FLUSH PRIVILEGES;
注意替換從庫IP
和密碼,確保該用戶只能從指定IP 連接上來。
3. 初始化從庫數(shù)據(jù)
要讓主從數(shù)據(jù)保持一致,必須先將主庫的數(shù)據(jù)完整導(dǎo)入到從庫中??梢允褂?code>mysqldump導(dǎo)出主庫數(shù)據(jù):
mysqldump -u root -p --all-databases --master-data > dump.sql
然後將這個(gè)dump 文件傳輸?shù)綇膸靵K導(dǎo)入:
mysql -u root -p < dump.sql
導(dǎo)入完成後,從庫的數(shù)據(jù)狀態(tài)就與主庫導(dǎo)出時(shí)一致了。
4. 啟動(dòng)複製過程
在從庫上執(zhí)行以下SQL 命令,連接到主庫並啟動(dòng)複製線程:
CHANGE MASTER TO MASTER_HOST='主庫IP', MASTER_USER='repl', MASTER_PASSWORD='密碼', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 4; START SLAVE;
其中MASTER_LOG_FILE
和MASTER_LOG_POS
的值來自於你執(zhí)行mysqldump
時(shí)生成的dump 文件中的CHANGE MASTER 語句。
可以用下面這條命令查看複製狀態(tài)是否正常:
SHOW SLAVE STATUS\G
重點(diǎn)看Slave_IO_Running
和Slave_SQL_Running
是否都為Yes。
5. 設(shè)置自動(dòng)故障切換(可選)
MySQL 自帶的複制機(jī)製本身不支持自動(dòng)故障切換,需要藉助外部工具或中間件來實(shí)現(xiàn),比如MHA(Master High Availability)、Orchestrator 或者使用雲(yún)廠商提供的高可用方案。
如果只是手動(dòng)切換,可以在主庫宕機(jī)後:
- 查看從庫的複制狀態(tài),確認(rèn)已經(jīng)追上主庫
- 將應(yīng)用指向新的主庫(原從庫)
- 可以把舊主庫恢復(fù)後設(shè)為新主庫的從庫
這一步需要謹(jǐn)慎處理,否則容易造成數(shù)據(jù)不一致。
基本上就這些步驟。雖然配置過程不算複雜,但每個(gè)細(xì)節(jié)都很關(guān)鍵,尤其是網(wǎng)絡(luò)權(quán)限、日誌位置和復(fù)制賬戶的安全性方面,稍有疏忽就可能導(dǎo)致複製失敗或安全隱患。
以上是配置MySQL複製以獲得高可用性的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

如何在FastAPI中實(shí)現(xiàn)負(fù)載平衡和高可用性簡(jiǎn)介:隨著網(wǎng)路應(yīng)用的發(fā)展,對(duì)於系統(tǒng)的負(fù)載平衡和高可用性的要求越來越高。 FastAPI是一個(gè)基於Python的高效能Web框架,它提供了一種簡(jiǎn)單而強(qiáng)大的方式來建置、部署和擴(kuò)展網(wǎng)路應(yīng)用程式。本文將介紹如何在FastAPI中實(shí)現(xiàn)負(fù)載平衡和高可用性,並提供對(duì)應(yīng)的程式碼範(fàn)例。使用Nginx實(shí)現(xiàn)負(fù)載平衡Nginx是一個(gè)流行的

建構(gòu)高可用性的負(fù)載平衡系統(tǒng):NginxProxyManager的最佳實(shí)務(wù)引言:在網(wǎng)際網(wǎng)路應(yīng)用的發(fā)展中,負(fù)載平衡系統(tǒng)是不可或缺的元件之一。它能夠透過將請(qǐng)求分發(fā)到多臺(tái)伺服器上,實(shí)現(xiàn)高並發(fā)、高可用性的服務(wù)。 NginxProxyManager是一款常用的負(fù)載平衡軟體,本文將介紹如何使用NginxProxyManager建構(gòu)一個(gè)高可用性的負(fù)載平衡系統(tǒng),並提供

實(shí)現(xiàn)網(wǎng)站高可用性的Webman配置指南引言:在當(dāng)今數(shù)位化時(shí)代,網(wǎng)站已成為企業(yè)重要的商業(yè)管道之一。為保障企業(yè)的業(yè)務(wù)連續(xù)性和使用者體驗(yàn),確保網(wǎng)站始終可用性,高可用性已成為一個(gè)核心需求。 Webman是一個(gè)強(qiáng)大的Web伺服器管理工具,它提供了一系列設(shè)定選項(xiàng)和功能,能夠幫助我們實(shí)現(xiàn)高可用性的網(wǎng)站架構(gòu)。本文將介紹一些Webman的設(shè)定指南和程式碼範(fàn)例,幫助您實(shí)現(xiàn)網(wǎng)站的高

Nginx負(fù)載平衡方案的高可用性和容災(zāi)方案隨著網(wǎng)際網(wǎng)路的快速發(fā)展,Web服務(wù)的高可用性已成為關(guān)鍵的需求。為了實(shí)現(xiàn)高可用性和容災(zāi)能力,Nginx一直是最常用且可靠的負(fù)載平衡器之一。在本文中,我們將介紹Nginx的高可用性和容災(zāi)方案,並提供具體的程式碼範(fàn)例。 Nginx的高可用性主要透過使用多個(gè)伺服器來實(shí)現(xiàn)。 Nginx作為負(fù)載平衡器,可以將流量分配到多個(gè)後端伺服器上,以

隨著網(wǎng)路時(shí)代的到來,訊息佇列系統(tǒng)變得越來越重要。它可以使不同的應(yīng)用之間實(shí)現(xiàn)非同步操作、降低耦合度、提高可擴(kuò)展性,進(jìn)而提升整個(gè)系統(tǒng)的效能和使用者體驗(yàn)。在訊息佇列系統(tǒng)中,RabbitMQ是一個(gè)強(qiáng)大的開源訊息佇列軟體,它支援多種訊息協(xié)定、被廣泛應(yīng)用於金融交易、電子商務(wù)、線上遊戲等領(lǐng)域。在實(shí)際應(yīng)用中,往往需要將RabbitMQ和其他系統(tǒng)整合。本文將介紹如何使用sw

如何使用Workerman建立高可用性負(fù)載平衡系統(tǒng),需要具體程式碼範(fàn)例在現(xiàn)代技術(shù)領(lǐng)域中,隨著網(wǎng)路的快速發(fā)展,越來越多的網(wǎng)站和應(yīng)用程式需要處理大量的並發(fā)請(qǐng)求。為了實(shí)現(xiàn)高可用性和高效能,負(fù)載平衡系統(tǒng)成為了必不可少的組件之一。本文將介紹如何使用PHP開源框架Workerman建構(gòu)一個(gè)高可用性的負(fù)載平衡系統(tǒng),並提供具體的程式碼範(fàn)例。一、Workerman簡(jiǎn)介Worke

隨著Web應(yīng)用程式的發(fā)展,越來越多的關(guān)注點(diǎn)開始轉(zhuǎn)向於如何提高應(yīng)用程式的效能。而快取的作用在於抵銷高流量和繁忙負(fù)載,提升Web應(yīng)用程式的效能和可擴(kuò)展性。在分散式環(huán)境下,如何實(shí)現(xiàn)高可用性的快取就成為了一項(xiàng)重要的技術(shù)。本文將介紹如何使用go-zero提供的一些工具和框架來實(shí)現(xiàn)高可用性的分散式緩存,並簡(jiǎn)單討論下go-zero在實(shí)際應(yīng)用中的優(yōu)勢(shì)和限制。一、什麼是go-

MySQL是一個(gè)非常受歡迎的關(guān)聯(lián)式資料庫管理系統(tǒng),它具有良好的效能和穩(wěn)定性,是許多企業(yè)和組織廣泛使用的資料庫軟體。在MySQL中,資料複製是非常重要的特性,它可以讓資料在多個(gè)資料庫伺服器之間進(jìn)行同步,確保資料的安全性和可靠性。設(shè)定MySQL資料複製的鏡像技巧是本文要介紹的主題。 MySQL資料複製的基本概念在MySQL中,資料複製是指將一個(gè)MySQL實(shí)例中的數(shù)據(jù)
