這篇文章主要介紹“MySQL主從復(fù)制重點(diǎn)知識(shí)整理”,在日常操作中,相信很多人在MySQL主從復(fù)制重點(diǎn)知識(shí)整理問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”MySQL主從復(fù)制重點(diǎn)知識(shí)整理”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)宣城免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了近千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
主從復(fù)制,是用來(lái)建立一個(gè)和主數(shù)據(jù)庫(kù)完全一樣的數(shù)據(jù)庫(kù)環(huán)境,稱為從數(shù)據(jù)庫(kù);主數(shù)據(jù)庫(kù)一般是準(zhǔn)實(shí)時(shí)的業(yè)務(wù)數(shù)據(jù)庫(kù)。
1、做數(shù)據(jù)的熱備,作為后備數(shù)據(jù)庫(kù),主數(shù)據(jù)庫(kù)服務(wù)器故障后,可切換到從數(shù)據(jù)庫(kù)繼續(xù)工作,避免數(shù)據(jù)丟失。
2、架構(gòu)的擴(kuò)展。業(yè)務(wù)量越來(lái)越大,I/O訪問(wèn)頻率過(guò)高,單機(jī)無(wú)法滿足,此時(shí)做多庫(kù)的存儲(chǔ),降低磁盤I/O訪問(wèn)的頻率,提高單個(gè)機(jī)器的I/O性能。
3、讀寫分離,使數(shù)據(jù)庫(kù)能支撐更大的并發(fā)。在報(bào)表中尤其重要。由于部分報(bào)表sql語(yǔ)句非常的慢,導(dǎo)致鎖表,影響前臺(tái)服務(wù)。如果前臺(tái)使用master,報(bào)表使用slave,那么報(bào)表sql將不會(huì)造成前臺(tái)鎖,保證了前臺(tái)速度。
數(shù)據(jù)庫(kù)有個(gè)bin-log二進(jìn)制文件,記錄了所有sql語(yǔ)句。
我們的目標(biāo)就是把主數(shù)據(jù)庫(kù)的bin-log文件的sql語(yǔ)句復(fù)制過(guò)來(lái)。
讓其在從數(shù)據(jù)的relay-log重做日志文件中再執(zhí)行一次這些sql語(yǔ)句即可。
下面的主從配置就是圍繞這個(gè)原理配置
具體需要三個(gè)線程來(lái)操作:
binlog輸出線程:每當(dāng)有從庫(kù)連接到主庫(kù)的時(shí)候,主庫(kù)都會(huì)創(chuàng)建一個(gè)線程然后發(fā)送binlog內(nèi)容到從庫(kù)。在從庫(kù)里,當(dāng)復(fù)制開(kāi)始的時(shí)候,從庫(kù)就會(huì)創(chuàng)建兩個(gè)線程進(jìn)行處理:
從庫(kù)I/O線程:當(dāng)START SLAVE語(yǔ)句在從庫(kù)開(kāi)始執(zhí)行之后,從庫(kù)創(chuàng)建一個(gè)I/O線程,該線程連接到主庫(kù)并請(qǐng)求主庫(kù)發(fā)送binlog里面的更新記錄到從庫(kù)上。從庫(kù)I/O線程讀取主庫(kù)的binlog輸出線程發(fā)送的更新并拷貝這些更新到本地文件,其中包括relay log文件。
從庫(kù)的SQL線程:從庫(kù)創(chuàng)建一個(gè)SQL線程,這個(gè)線程讀取從庫(kù)I/O線程寫到relay log的更新事件并執(zhí)行。
可以知道,對(duì)于每一個(gè)主從復(fù)制的連接,都有三個(gè)線程。擁有多個(gè)從庫(kù)的主庫(kù)為每一個(gè)連接到主庫(kù)的從庫(kù)創(chuàng)建一個(gè)binlog輸出線程,每一個(gè)從庫(kù)都有它自己的I/O線程和SQL線程。
主從復(fù)制如圖:
原理圖2,幫助理解!
步驟一:主庫(kù)db的更新事件(update、insert、delete)被寫到binlog
步驟二:從庫(kù)發(fā)起連接,連接到主庫(kù)
步驟三:此時(shí)主庫(kù)創(chuàng)建一個(gè)binlog dump thread線程,把binlog的內(nèi)容發(fā)送到從庫(kù)
步驟四:從庫(kù)啟動(dòng)之后,創(chuàng)建一個(gè)I/O線程,讀取主庫(kù)傳過(guò)來(lái)的binlog內(nèi)容并寫入到relay log.
步驟五:還會(huì)創(chuàng)建一個(gè)SQL線程,從relay log里面讀取內(nèi)容,從Exec_Master_Log_Pos位置開(kāi)始執(zhí)行讀取到的更新事件,將更新內(nèi)容寫入到slave的db.
到此,關(guān)于“MySQL主從復(fù)制重點(diǎn)知識(shí)整理”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!