oracle主從和讀寫(xiě)分離實(shí)現(xiàn) Linux系統(tǒng),oracle 11g主從同步中,怎么區(qū)分主庫(kù)與從庫(kù),可以在從庫(kù)上執(zhí)行增刪改操作嗎?
Linux系統(tǒng),oracle 11g主從同步中,怎么區(qū)分主庫(kù)與從庫(kù),可以在從庫(kù)上執(zhí)行增刪改操作嗎?你說(shuō)的是甲骨文的DG技術(shù)嗎?您可以使用select open mode,database The ro
Linux系統(tǒng),oracle 11g主從同步中,怎么區(qū)分主庫(kù)與從庫(kù),可以在從庫(kù)上執(zhí)行增刪改操作嗎?
你說(shuō)的是甲骨文的DG技術(shù)嗎?您可以使用select open mode,database The role from V$database語(yǔ)句查詢數(shù)據(jù)庫(kù)角色。Oracle從數(shù)據(jù)庫(kù)有三種角色:物理備份、邏輯備份和快照備份。物理備用數(shù)據(jù)庫(kù)只能處于只讀狀態(tài),無(wú)法寫(xiě)入。邏輯備用數(shù)據(jù)庫(kù)處于讀寫(xiě)狀態(tài),但寫(xiě)入備用數(shù)據(jù)庫(kù)的數(shù)據(jù)不會(huì)同步到主數(shù)據(jù)庫(kù)的快照。備用數(shù)據(jù)庫(kù)處于讀寫(xiě)狀態(tài),這類(lèi)似于為數(shù)據(jù)庫(kù)創(chuàng)建還原點(diǎn)。三者可以互換。
MySQL主從復(fù)制能完美解決數(shù)據(jù)庫(kù)的單點(diǎn)問(wèn)題嗎?為什么?
使用主從時(shí),實(shí)際上放棄了強(qiáng)一致性。由于受試者只問(wèn)一個(gè)問(wèn)題,我們不考慮訪問(wèn)次數(shù)的問(wèn)題。換句話說(shuō),假設(shè)主從復(fù)制可以完全支持當(dāng)前的系統(tǒng)訪問(wèn)。)
通用數(shù)據(jù)庫(kù)主從設(shè)置:
主數(shù)據(jù)庫(kù)可以讀寫(xiě)
即系統(tǒng)可以同時(shí)從主數(shù)據(jù)庫(kù)和從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)。數(shù)據(jù)寫(xiě)入主庫(kù)后,會(huì)自動(dòng)同步到從庫(kù)。
這構(gòu)成了一個(gè)簡(jiǎn)單的分布式系統(tǒng)。根據(jù)cap定理,三個(gè)中只能選擇一個(gè)。如果一致性很強(qiáng),則不會(huì)提高系統(tǒng)的可用性,反而會(huì)降低系統(tǒng)的可用性。
讓我們看看上面的主從結(jié)構(gòu)中可能出現(xiàn)什么問(wèn)題:
系統(tǒng)寫(xiě)入主數(shù)據(jù)庫(kù),然后從主數(shù)據(jù)庫(kù)進(jìn)行查詢。這是一個(gè)單點(diǎn)數(shù)據(jù)庫(kù),沒(méi)有影響。
-如果數(shù)據(jù)已同步,則沒(méi)有影響
-如果數(shù)據(jù)未同步,則會(huì)查詢舊數(shù)據(jù)
-如果同步有問(wèn)題,則會(huì)斷開(kāi)主設(shè)備和從設(shè)備的連接。如果系統(tǒng)無(wú)法感知它,那么查詢可能總是舊數(shù)據(jù)。這里我們需要監(jiān)視同步。當(dāng)同步出現(xiàn)問(wèn)題時(shí),我們應(yīng)該及時(shí)處理
掛斷庫(kù)。主數(shù)據(jù)不能與從數(shù)據(jù)同步。如果主從交換機(jī)是自動(dòng)的,單點(diǎn)故障的概率只會(huì)降低50%(如果主數(shù)據(jù)庫(kù)或備用數(shù)據(jù)庫(kù)發(fā)生故障,并且沒(méi)有人恢復(fù))。
什么情況會(huì)導(dǎo)致MySQL主從復(fù)制延遲?
主從復(fù)制有兩個(gè)線程,SQL和Io。前者負(fù)責(zé)SQL的復(fù)制,后者負(fù)責(zé)編寫(xiě)。因此,從兩個(gè)方面來(lái)看,當(dāng)網(wǎng)絡(luò)較差,或者帶寬有限,或者主CPU太忙,跟不上binlog傳輸速度,或者從機(jī)IO性能較差時(shí),很容易造成主從復(fù)制延遲。從show slave status的一些參數(shù)可以看出,大約在master后面XX個(gè)左右,實(shí)際上MySQL的主從問(wèn)題很大,設(shè)計(jì)比較低。我至少三年沒(méi)有關(guān)注MySQL了。我不知道這方面有沒(méi)有改進(jìn)。
數(shù)據(jù)庫(kù)的讀寫(xiě)分離數(shù)據(jù)庫(kù)是怎么同步的?
數(shù)據(jù)不同,讀寫(xiě)分離同步操作不同,以MySQL和Oracle為例:
讀寫(xiě)分離:最常用的主從復(fù)制實(shí)現(xiàn)讀寫(xiě)分離功能
當(dāng)數(shù)據(jù)被修改時(shí),執(zhí)行內(nèi)容通過(guò)網(wǎng)絡(luò)傳輸?shù)綇膸?kù),添加到從庫(kù)的重放倉(cāng),然后通過(guò)重做日志恢復(fù)主庫(kù)的操作,達(dá)到同步效果;
讀/寫(xiě)分離:常見(jiàn)的讀/寫(xiě)分離方案是DG(備用數(shù)據(jù)庫(kù)可讀)
將操作寫(xiě)入archivelog,然后通過(guò)網(wǎng)絡(luò)傳輸?shù)絺溆脭?shù)據(jù)庫(kù)。然后備用數(shù)據(jù)庫(kù)用archivelog恢復(fù)數(shù)據(jù),達(dá)到同步的目的。