設(shè)置主數(shù)庫(kù)和從數(shù)庫(kù)的原因?
數(shù)據(jù)庫(kù)是用來(lái)存儲(chǔ)數(shù)據(jù)的俄讹,為什么要設(shè)置主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)呢,往往是為了讀寫分離绕德,減輕因讀取數(shù)據(jù)的操作太頻繁了患膛,導(dǎo)致網(wǎng)站崩掉,服務(wù)器宕機(jī)耻蛇,影響正常的網(wǎng)站運(yùn)行剩瓶。
mysql主從同步的原理
舉例說(shuō)明一下主從庫(kù)的同步的原因,需要用到以下的這個(gè)名詞城丧,主數(shù)據(jù)服務(wù)器延曙,從數(shù)據(jù)服務(wù)器slave,二進(jìn)制日志(binary log file)亡哄,中繼日志(relay log file)枝缔,I/O線程,SQL線程。
主數(shù)據(jù)服務(wù)器master:主要用來(lái)從業(yè)務(wù)服務(wù)寫入數(shù)據(jù)或者修改更新數(shù)據(jù)
從數(shù)據(jù)服務(wù)器slave:主要用來(lái)讀取業(yè)務(wù)所需要的數(shù)據(jù)
二進(jìn)制日志(binary log file):用來(lái)存儲(chǔ)寫入以及更新的數(shù)據(jù)信息
中繼日志(relay log file):承接主服務(wù)器數(shù)據(jù)信息愿卸,轉(zhuǎn)存在從服務(wù)器上
I/O線程:監(jiān)聽主服務(wù)器是否發(fā)生數(shù)據(jù)更改的行為
SQL線程:將主服務(wù)器數(shù)據(jù)更改的數(shù)據(jù)從中繼日志文件中讀取數(shù)據(jù)寫入到從數(shù)據(jù)服務(wù)器中
當(dāng)主數(shù)據(jù)服務(wù)器master進(jìn)行寫入數(shù)據(jù)或者更新數(shù)據(jù)操作的時(shí)候灵临,數(shù)據(jù)更改會(huì)記錄在二進(jìn)制日志(binary log file)中,主服務(wù)器master與從服務(wù)器slave進(jìn)行通訊的是I/O線程趴荸,它將修改的數(shù)據(jù)異步復(fù)制寫入到從服務(wù)器slave的中繼日志(relay log file)中,從服務(wù)器slave與中繼日志之間通信使用SQL線程儒溉,SQL線程可以異步從中繼日志(relay log file)中讀取數(shù)據(jù)后再寫入到自己的數(shù)據(jù)庫(kù)中,就完成了數(shù)據(jù)的主從同步功能发钝。
從庫(kù)為什么不能直接存儲(chǔ)二進(jìn)制日志文件里面的數(shù)據(jù)顿涣?
數(shù)據(jù)的主從同步就是為了讓計(jì)算機(jī)快速的進(jìn)行讀寫操作,而且是大批量的數(shù)據(jù)酝豪,一旦大量數(shù)據(jù)進(jìn)行寫入或者更新數(shù)據(jù)涛碑,從數(shù)據(jù)庫(kù)如果直接從二進(jìn)制日志來(lái)接收,數(shù)據(jù)是以隊(duì)列形式進(jìn)行傳輸?shù)姆跆裕絷?duì)列的數(shù)據(jù)沒有快速處理蒲障,堆積起來(lái),從服務(wù)器可能也會(huì)崩潰宕機(jī)瘫证,所以從性能上考慮揉阎,從服務(wù)器創(chuàng)建了I/O線程對(duì)象將數(shù)據(jù)轉(zhuǎn)到中繼日志伤疙,起個(gè)緩存功能米奸。