mysql主从复制 drbd_MySql主从复制简单案例实现
mysql的主從復(fù)制原理
在mysql主從復(fù)制架構(gòu)中,有一臺(tái)服務(wù)器作為MASTER服務(wù)器,該服務(wù)器負(fù)責(zé)所有的讀請(qǐng)求和寫(xiě)請(qǐng)求。另外一臺(tái)或多臺(tái)作為slave服務(wù)器。當(dāng)master上的某個(gè)應(yīng)用程序發(fā)起寫(xiě)請(qǐng)求時(shí),該請(qǐng)求會(huì)被內(nèi)核響應(yīng)并在內(nèi)核中執(zhí)行,然后在將其數(shù)據(jù)寫(xiě)入到磁盤(pán)中去。并且將此次的操作以事件的形式記錄到二進(jìn)制文件中去。此時(shí)master上的Binlog ?dump thread等待slave上的I/O thread連接請(qǐng)求。一旦slave I/O thread連接上了master的Binlog dump thread,則Binlog dump thread會(huì)將本地二進(jìn)制文件中更新的事件復(fù)制給slave。當(dāng)slave上的I/O thread接受從master復(fù)制過(guò)來(lái)的二進(jìn)制文件中的事件時(shí),會(huì)將其事件寫(xiě)入到slave上的中繼日志文件中。然后slave會(huì)調(diào)用本地的SQL thread重新應(yīng)用(或回放)中繼日志中的事件,然后在將其數(shù)據(jù)寫(xiě)入到slave上的磁盤(pán)中。這就是mysql的主從復(fù)制功能。
由于slave上更新的數(shù)據(jù)不能復(fù)制給master,因此,對(duì)于slave而言,不能執(zhí)行寫(xiě)操作。
mysql的三中復(fù)制模式:
1)異步模式(mysql默認(rèn)復(fù)制模式)、半同步和同步復(fù)制模式。(這里用到的是異步復(fù)制模式)
mysql主從復(fù)制具有以下功能:
1、實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)的高可用性
2、可以輔助實(shí)現(xiàn)數(shù)據(jù)備份
3、可以異地容災(zāi)
4、實(shí)現(xiàn)服務(wù)器分?jǐn)傌?fù)載,即通過(guò)mysql的讀寫(xiě)分離來(lái)實(shí)現(xiàn)分?jǐn)傌?fù)載。(這里只是簡(jiǎn)單的主從復(fù)制)
主從復(fù)制實(shí)現(xiàn)如下圖所示:
上圖原理說(shuō)明:
1.Binlog dump thread:接受slave ?I/O thread的連接請(qǐng)求,并將master上的二進(jìn)制文件中更新的事件復(fù)制給slave I/O thread。
2.slave I/O thread:接受Binlog dump thread復(fù)制過(guò)來(lái)的時(shí)間,并將其寫(xiě)入到slave上的中繼日志文件中。
3.slave SQL thread:讀取中繼日志文件中的事件重新應(yīng)用(或回放),并將其數(shù)據(jù)寫(xiě)入到磁盤(pán)中去。
mysql的主從復(fù)制需要注意的事項(xiàng):
一個(gè)master可以用于多個(gè)slave,而一個(gè)slave只能屬于某一個(gè)master,在主從架構(gòu)中,如果只有一個(gè)slave,那么在slave上重新回放中繼日志文件中的事件會(huì)引起數(shù)據(jù)庫(kù)的改變,因此,這個(gè)過(guò)程也會(huì)以事件的形式寫(xiě)入到二進(jìn)制日志文件中去。由于二進(jìn)制日志是用來(lái)做及時(shí)點(diǎn)還原的,且master保存著一份完整的數(shù)據(jù),因此在slave上不需要開(kāi)啟二進(jìn)制日志功能,但是master上必須要開(kāi)啟。如果有多個(gè)slave的情況下,在這多個(gè)slave中,有一個(gè)slave即當(dāng)做master的slave又可以當(dāng)做其他slave的master,那么此時(shí)這個(gè)slave上必須開(kāi)啟二進(jìn)制日志功能。即此時(shí)這個(gè)slave即充當(dāng)slave又充當(dāng)master。
下面開(kāi)始配置:
1.實(shí)驗(yàn)環(huán)境:
我用的是2臺(tái)Centos 6.5x86_64
IP地址分別為:
master.fpj.com ? 192.168.3.85
slave.fpj.com ? ?192.168.3.86
mysql的安裝我這里就不說(shuō)了,可以用編譯安裝,也可以yum直接安裝,我這邊用yum直接安裝,版本是mysql-5.1.73(里面修改的datadir目錄這里就不寫(xiě)出來(lái)了)。
2.配置主mysql服務(wù)
1)啟用二進(jìn)制日志
2)定義serverID
3)創(chuàng)建具有復(fù)制權(quán)限的帳號(hào)
3.配置從mysql服務(wù)
1.關(guān)閉二進(jìn)制日志,啟動(dòng)中繼日志
2.定義server-id
3.使用有復(fù)制權(quán)限的帳號(hào)連接Master服務(wù)器
4.啟動(dòng)I/O線程和sql線程
這里我直接start slave;直接啟動(dòng)I/O,SQL線程,也可以一個(gè)個(gè)啟動(dòng);
下面就來(lái)查看下從服務(wù)器的狀態(tài):
4.我就來(lái)測(cè)試下master服務(wù)上新建一個(gè)fpjtest數(shù)據(jù)庫(kù):
最后去從服務(wù)器上看看 fpjtest有沒(méi)有同步過(guò)來(lái):
看上圖已經(jīng)同步過(guò)來(lái)了,說(shuō)明mysql主從復(fù)制已經(jīng)實(shí)現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的mysql主从复制 drbd_MySql主从复制简单案例实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jacoco入门_代码覆盖度工具jaco
- 下一篇: mysql check exist_my