?
?
第一部分基礎(chǔ)1之名詞先混個臉熟? 2007.11.23
?
??? 它有無數(shù)個名字,有人叫它dg,有人叫它數(shù)據(jù)衛(wèi)士,有人叫它data guard,在oracle 的各項特性中它有著舉足輕理的地位,它就是(掌聲).........Oracle Data Guard。而對于我而言,我一定要親切的叫它:DG(注:主要是因為打著方便)。
??? 不少未實際接觸過dg 的初學(xué)者可能會下意識以為dg 是一個備份恢復(fù)的工具。我要說的是,這種形容不完全錯,dg 擁有備份的功能,某些情況下它甚至可以與primary 數(shù)據(jù)庫完全一模一樣,但是它存在的目的并不僅僅是為了恢復(fù)數(shù)據(jù),應(yīng)該說它的存在是為了確保企業(yè)數(shù)據(jù)的高可用性,數(shù)據(jù)保護以及災(zāi)難恢復(fù)(注意這個字眼,災(zāi)難恢復(fù))。dg 提供全面的服務(wù)包括:創(chuàng)建,維護,管理以及監(jiān)控standby 數(shù)據(jù)庫,確保數(shù)據(jù)安全,管理員可以通過將一些操作轉(zhuǎn)移到standby 數(shù)據(jù)庫執(zhí)行的方式改善數(shù)據(jù)庫性能。后面這一長串大家可以把它們理解成形容詞,千萬不要被其花哨的修飾所迷惑,要抓住重點,要擁有透明現(xiàn)象看本質(zhì)的能力,如果沒有那就要努力學(xué)習(xí)去擁有,下面我來舉一個例子,比如我們夸人會說它聰明勇敢善良等等,這些就屬于形容詞,不重要,重點在于我們究竟想形容這個人是好人還是壞人。然后再回來看看oracle 對dg 功能上的形容,數(shù)據(jù)保護和災(zāi)難恢復(fù)應(yīng)該都可以歸結(jié)為高可用性,那么我們可以清晰的定位dg 的用途了,就是構(gòu)建高可用的企業(yè)數(shù)據(jù)庫應(yīng)用環(huán)境。
?
?
一、DataGuard配置(DataGuardConfigurations)
?
??? Data Guard 是一個集合,由一個primary 數(shù)據(jù)庫(生產(chǎn)數(shù)據(jù)庫)及一個或多個standby 數(shù)據(jù)庫(最多9 個)組成。組成Data Guard 的數(shù)據(jù)庫通過Oracle Net 連接,并且有可能分布于不同地域。只要各庫之間可以相互通信,它們的物理位置并沒有什么限制,至于操作系統(tǒng)就更無所謂了(某些情況下),只要支持oracle 就行了。
??? 你即可以通過命令行方式管理primary 數(shù)據(jù)庫或standby 數(shù)據(jù)庫,也可以通過Data Guard broker 提供的專用命令行界面(DGMGRL),或者通過OEM 圖形化界面管理。
?
1.Primary數(shù)據(jù)庫
?
??? 前面提到,Data Guard 包含一個primary 數(shù)據(jù)庫即被大部分應(yīng)用訪問的生產(chǎn)數(shù)據(jù)庫,該庫即可以是單實例數(shù)據(jù)庫,也可以是RAC。
?
2.Standby數(shù)據(jù)庫
?
??? Standby 數(shù)據(jù)庫是primary 數(shù)據(jù)庫的復(fù)制(事務(wù)上一致)。在同一個Data Guard 中你可以最多創(chuàng)建9 個standby數(shù)據(jù)庫。一旦創(chuàng)建完成,Data Guard 通過應(yīng)用primary 數(shù)據(jù)庫的redo 自動維護每一個standby 數(shù)據(jù)庫。Standby數(shù)據(jù)庫同樣即可以是單實例數(shù)據(jù)庫,也可以是RAC 結(jié)構(gòu)。關(guān)于standby 數(shù)據(jù)庫,通常分兩類:邏輯standby 和物理standby,如何區(qū)分,兩類各有什么特點,如何搭建,這方面內(nèi)容就是后面的章節(jié)主要介紹的,在這里呢三思先簡單白話一下:
?
??? ●邏輯standby
?
???
就像你請人幫你素描畫像,基本器官是都會有的,這點你放心,但是各器官位置啦大小啦膚色啦就不一定跟你本人一致了。
?
??? ●物理standby
?
???
就像拿相機拍照,你長什么樣出來的照片就是什么樣,眼睛絕對在鼻子上頭。或者說就像你去照鏡子,里外都是你,哇哈哈。具體到數(shù)據(jù)庫就是不僅文件的物理結(jié)構(gòu)相同,甚至連塊在磁盤上的存儲位置都是一模一樣的(默認(rèn)情況下)。
?
??? 為什么會這樣呢?這事就得從同步的機制說起了。邏輯standby 是通過接收primary 數(shù)據(jù)庫的redo log并轉(zhuǎn)換成sql 語句,然后在standby 數(shù)據(jù)庫上執(zhí)行SQL 語句(SQL Apply)實現(xiàn)同步,物理standby 是通過接收并應(yīng)用primary 數(shù)據(jù)庫的redo log 以介質(zhì)恢復(fù)的方式(Redo Apply)實現(xiàn)同步。
?
??? 另外,不知道大家是否注意到形容詞上的細(xì)節(jié):對于相機拍照而言,有種傻瓜相機功能強大而操作簡便,而對于素描,即使是最簡單的畫法,也需要相當(dāng)多的練習(xí)才能掌握。這個細(xì)節(jié)是不是也說明邏輯standby相比物理standby 需要操作者擁有更多的操作技能呢?
?
?
二、DataGuard服務(wù)(DataGuardServices)
?
??? ●REDO 傳輸服務(wù)(Redo Transport Services)
?
??? 控制redo
數(shù)據(jù)的傳輸?shù)揭粋€或多個歸檔目的地。
?
??? ●Log 應(yīng)用服務(wù)(Log Apply Services)
??? 應(yīng)用redo 數(shù)據(jù)到standby 數(shù)據(jù)庫,以保持與primary 數(shù)據(jù)庫的事務(wù)一致。redo 數(shù)據(jù)即可以從standby 數(shù)據(jù)庫的歸檔文件讀取,也可直接應(yīng)用standby redo log 文件(如果實時應(yīng)用打開了的話)。
?
??? ●角色轉(zhuǎn)換服務(wù)(Role Transitions)
?
??? Dg 中只有兩種角色:primary 和standby。所謂角色轉(zhuǎn)換就是讓數(shù)據(jù)庫在這兩個角色中切換,切換也分兩種:switchover 和failover
?
???
switchover
:轉(zhuǎn)換primary 數(shù)據(jù)庫與standby 數(shù)據(jù)庫。switchover 可以確保不會丟失數(shù)據(jù)。
???
failover
:當(dāng)primary 數(shù)據(jù)庫出現(xiàn)故障并且不能被及時恢復(fù)時,會調(diào)用failover 將一個standby 數(shù)據(jù)庫轉(zhuǎn)換為新的primary 數(shù)據(jù)庫。在最大保護模式或最高可用性模式下,failover 可以保證不會丟失數(shù)據(jù)。
?
??? 注:上述各概念簡要了解即可,這里寫的太簡單,不要咬文嚼字,不然你會越看越糊涂,相關(guān)服務(wù)在后面章節(jié)將會有詳細(xì)介紹,不僅有直白的描述,還會有示例,再加上淺顯的圖片,就算你一看不懂,再看肯定懂:)
?
三、DataGuard保護模式(DataGuardProtectionModes)
?
??? 對于Data Guard 而言,其生存邏輯非常簡單,好好活,做有意義的事,做黑多黑多有意義的事:)
??? 由于它提供了三種數(shù)據(jù)保護的模式,我們又親切的叫它:有三模:
?
??? ●最大保護(Maximumprotection):
?
??? 這種模式能夠確保絕無數(shù)據(jù)丟失。要實現(xiàn)這一步當(dāng)然是有代價的,它要求所有的事務(wù)在提交前其redo 不僅被寫入到本地的online redo log,還要同時提交到standby 數(shù)據(jù)庫的standby redo log,并確認(rèn)redo 數(shù)據(jù)至少在一個standby 數(shù)據(jù)庫可用(如果有多個的話),然后才會在primary 數(shù)據(jù)庫上提交。如果出現(xiàn)了什么故障導(dǎo)致standby數(shù)據(jù)庫不可用的話,primary 數(shù)據(jù)庫會被shutdown。
?
??? ● 最高性能(Maximumperformance):
?
??? 這種模式提供在不影響primary 數(shù)據(jù)庫性能前提下最高級別的數(shù)據(jù)保護策略。事務(wù)可以隨時提交,當(dāng)前primary 數(shù)據(jù)庫的redo 數(shù)據(jù)也需要至少寫入一個standby 數(shù)據(jù)庫,不過這種寫入可以是不同步的。
??? 如果網(wǎng)絡(luò)條件理想的話,這種模式能夠提供類似最高可用性的數(shù)據(jù)保護而僅對primary 數(shù)據(jù)庫有輕微的性能影響。
?
??? ● 最高可用性(Maximumavailability):
?
??? 這種模式提供在不影響primary 數(shù)據(jù)庫可用前提下最高級別的數(shù)據(jù)保護策略。其實現(xiàn)方式與最大保護模式類
似,也是要求所有事務(wù)在提交前必須保障redo 數(shù)據(jù)至少在一個standby 數(shù)據(jù)庫可用,不過與之不同的是,如果出現(xiàn)故障導(dǎo)入無法同時寫入standby 數(shù)據(jù)庫redo log,primary 數(shù)據(jù)庫并不會shutdown,而是自動轉(zhuǎn)為最高性能模式,等standby 數(shù)據(jù)庫恢復(fù)正常之后,它又會再自動轉(zhuǎn)換成最高可用性模式。
??? 最大保護及最高可用性需要至少一個standby 數(shù)據(jù)庫redo 數(shù)據(jù)被同步寫入。三種模式都需要指定LOG_ARCHIVE_DEST_n 初始化參數(shù)。LOG_ARCHIVE_DEST_n 很重要,你看著很眼熟是吧,我保證,如果你完完整整學(xué)完dataguard,你會對它更熟。
?
?
四、DataGuard優(yōu)點總結(jié)
??? ● 災(zāi)難恢復(fù)及高可用性
??? ● 全面的數(shù)據(jù)保護
??? ● 有效利用系統(tǒng)資源
??? ● 在高可用及高性能之間更加靈活的平衡機制
??? ● 故障自動檢查及解決方案
??? ● 集中的易用的管理模式
??? ● 自動化的角色轉(zhuǎn)換
?
??? 經(jīng)常開篇的灌輸,相信大家已經(jīng)看的出來,上面這幾條都是形容詞,看看就好,記住更好,跟人窮白活的時候通常能夠用上:)
?
?
?
?