在mysql中,主從指的是建立兩個(gè)完全一樣的數(shù)據(jù)庫(kù),其中一個(gè)作為主要使用的數(shù)據(jù)庫(kù),另一個(gè)作為次要的數(shù)據(jù)庫(kù),可以防止因數(shù)據(jù)庫(kù)服務(wù)器宕機(jī)導(dǎo)致數(shù)據(jù)丟失,還能提供故障切換、讀寫(xiě)分離和備份的功能。
本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。
什么是mysql主從
主從介紹
所謂mysql主從就是建立兩個(gè)完全一樣的數(shù)據(jù)庫(kù),其中一個(gè)為主要使用的數(shù)據(jù)庫(kù),另一個(gè)為次要的數(shù)據(jù)庫(kù),一般在企業(yè)中,存放比較重要的數(shù)據(jù)的數(shù)據(jù)庫(kù)服務(wù)器需要配置主從,這樣可以防止因數(shù)據(jù)庫(kù)服務(wù)器宕機(jī)導(dǎo)致數(shù)據(jù)丟失,還能保證業(yè)務(wù)量太多、數(shù)據(jù)太多和訪問(wèn)人數(shù)太多時(shí)服務(wù)的質(zhì)量(服務(wù)器響應(yīng)速度),還能提供故障切換、讀寫(xiě)分離、和備份等等功能。
主從形式
一主一從
主主復(fù)制:當(dāng)作備份使用,當(dāng)主服務(wù)器出現(xiàn)故障時(shí),另一個(gè)主服務(wù)器會(huì)自動(dòng)頂上。
一主多從:用來(lái)實(shí)現(xiàn)讀寫(xiě)分離,當(dāng)寫(xiě)操作較少時(shí),讀操作較多時(shí)使用,主服務(wù)器用來(lái)實(shí)現(xiàn)寫(xiě)操作,從服務(wù)器用來(lái)實(shí)現(xiàn)讀操作。
多主一從:用來(lái)實(shí)現(xiàn)讀寫(xiě)分離,當(dāng)寫(xiě)操作較多時(shí),讀操作較少時(shí)使用,主服務(wù)器用來(lái)實(shí)現(xiàn)寫(xiě)操作,從服務(wù)器用來(lái)實(shí)現(xiàn)讀操作。
傳統(tǒng)主從
傳統(tǒng)主從復(fù)制主要是基于二進(jìn)制日志文件位置的復(fù)制,因此主必須啟動(dòng)二進(jìn)制日志記錄并建立唯一的服務(wù)器ID,復(fù)制組中的每個(gè)服務(wù)器都必須配置唯一的服務(wù)器ID。如果您省略server-id(或者明確地將其設(shè)置為其默認(rèn)值0),則主設(shè)備將拒絕來(lái)自從設(shè)備的任何連接。
gtid主從
MySQL 5.6 的新特性之一,全局事務(wù)標(biāo)識(shí)符(GTID)是創(chuàng)建的唯一標(biāo)識(shí)符,并與在源(主)服務(wù)器上提交的每個(gè)事務(wù)相關(guān)聯(lián)。此標(biāo)識(shí)符不但是唯一的,而且在給定復(fù)制設(shè)置中的所有服務(wù)器上都是唯一的。所有交易和所有GTID之間都有一對(duì)一的映射關(guān)系 。它由服務(wù)器ID以及事務(wù)ID組合而成。這個(gè)全局事務(wù)ID不僅僅在原始服務(wù)器上唯一,在所有存在主從關(guān)系 的mysql服務(wù)器上也是唯一的。正是因?yàn)檫@樣一個(gè)特性使得mysql的主從復(fù)制變得更加簡(jiǎn)單,以及數(shù)據(jù)庫(kù)一致性更可靠。一個(gè)GTID在一個(gè)服務(wù)器上只執(zhí)行一次,避免重復(fù)執(zhí)行導(dǎo)致數(shù)據(jù)混亂或者主從不一致。
主從復(fù)制的原理
主從復(fù)制的工作流程:主庫(kù)將用戶(hù)所有的寫(xiě)操作(增刪改,查除外)記錄到binlog日志當(dāng)中并且生成一個(gè)log dump線程,從庫(kù)生成I/O和SQL線程,從庫(kù)的I/O線程向主庫(kù)的log dump線程以I/O流的形式發(fā)送請(qǐng)求,主庫(kù)的log dump線程收到從庫(kù)I/O線程的請(qǐng)求后將binlog日志發(fā)送給從庫(kù),從庫(kù)I/O線程收到binlog日志后將其寫(xiě)道relay log(中繼日志)文件中,再由從庫(kù)的SQL線程將relay log文件中的日志解析成sql腳本,最后執(zhí)行生成的sql腳本文件,來(lái)實(shí)現(xiàn)主從的操作一致,達(dá)到最終數(shù)據(jù)一致的目的。
推薦學(xué)習(xí):mysql視頻教程