mysql的主從服務(wù)器配置實(shí)現(xiàn)讀寫分離。

以下說(shuō)的是單向主從復(fù)制。主從復(fù)制是通過(guò)日志同步來(lái)實(shí)現(xiàn)的,主庫(kù)執(zhí)行語(yǔ)句也會(huì)在從庫(kù)得到執(zhí)行,原則上是從庫(kù)只用來(lái)查詢,這樣能確保兩個(gè)數(shù)據(jù)庫(kù)的完全一致。但理論上主從可以建立不同的索引,從數(shù)據(jù)庫(kù)可以建立新表,可以執(zhí)行delete操作,但從數(shù)據(jù)庫(kù)不能update和create,否則主從日志將立即被破壞,要特別注意這點(diǎn)。主從的數(shù)據(jù)庫(kù)版本必須一致。

主從的my.cnf均做如下配置:


    server-id = 1                              #【必須】主機(jī)標(biāo)示,服務(wù)器唯一ID,整數(shù),可取IP最后一段
    log_bin   = /var/log/mysql/mysql-bin.log   #【必須】開(kāi)啟二進(jìn)制日志bin-log,不同版本的mysql可能不一樣
    binlog-do-db  = test1                      #需要備份數(shù)據(jù),多個(gè)寫多行
    binlog-do-db  = test2                      #需要備份數(shù)據(jù),多個(gè)寫多行
    binlog-ignore-db = mysql                   #不需要備份的數(shù)據(jù)庫(kù),多個(gè)寫多行

重啟mysql服務(wù)生效/etc/init.d/mysql restart

可以通過(guò)show variables like 'log_%'; 驗(yàn)證二進(jìn)制日志是否已經(jīng)啟動(dòng)。

如果主從數(shù)據(jù)庫(kù)都是空的那么不用完成初始同步,否則要先把主服務(wù)器的數(shù)據(jù)同步到從服務(wù)器。

主庫(kù)操作

注意在導(dǎo)出數(shù)據(jù)之前先對(duì)主數(shù)據(jù)庫(kù)進(jìn)行READ LOCK,以保證數(shù)據(jù)的一致性:

    flush tables with read lock;

主庫(kù)導(dǎo)出sql文件:

mysqldump -F sync(數(shù)據(jù)庫(kù)名) --host=127.0.0.1 --port=3306 -u root -p536c9a0d2a73afdfbc97dfc9e8c02a89 > /home/sync.sql(生成文件路徑)

得到主服務(wù)器當(dāng)前二進(jìn)制日志名和偏移量,這個(gè)操作的目的是為了在從數(shù)據(jù)庫(kù)啟動(dòng)后,從這個(gè)點(diǎn)開(kāi)始進(jìn)行數(shù)據(jù)的恢復(fù):

show master status \G;

最好在主數(shù)據(jù)庫(kù)備份完畢,恢復(fù)寫操作:

unlock tables;

創(chuàng)建用來(lái)同步的賬號(hào)并授權(quán):


    grant REPLICATION SLAVE on *.* to slaveBelongsToMaster(用戶名)@'%' identified by "123456(用戶密碼)"; 
    flush privileges;

一般不用root帳號(hào),“%”表示所有客戶端都可能連,只要帳號(hào),密碼正確,此處可用具體客戶端IP代替,如127.0.0.1,加強(qiáng)安全。

從庫(kù)操作

取出主庫(kù)sql文件寫入:

source /home/sync.sql

配置使用同步賬號(hào):

CHANGE MASTER TO MASTER_HOST='127.x.x.x(主庫(kù)IP)',MASTER_PORT=3306(主庫(kù)端口),MASTER_USER='slaveBelongsToMaster',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000003(上面得到的二進(jìn)制日志名)',MASTER_LOG_POS=106(上面得到的二進(jìn)制偏移量);

開(kāi)始主從復(fù)制:

slave start; 或 start slave;

終止主從復(fù)制:

slave stop; 或 stop slave;

從服務(wù)器狀態(tài)

Show slave status \G;

注:Slave_IO及Slave_SQL進(jìn)程必須正常運(yùn)行,即YES狀態(tài),否則都是錯(cuò)誤的狀態(tài)(如:其中一個(gè)NO均屬錯(cuò)誤)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容