一步一步學DataGuard(1)基礎之名詞先混個臉熟

  它有無數個名字,有人叫它dg,有人叫它數據衛士,有人叫它data guard,在oracle的各項特性中它有着舉足輕理的地位,它就是(掌聲)......................Oracle Data Guard。而對於我而言,我一定要親切的叫它:DG(注:主要是因爲打着方便)。

  不少未實際接觸過dg的初學者可能會下意識以爲dg是一個備份恢復的工具。我要說的是,這種形容不完全錯,dg擁有備份的功能,某些情況下它甚至可以與primary數據庫完全一模一樣,但是它存在的目的並不僅僅是爲了恢復數據,應該說它的存在是爲了確保企業數據的高可用性,數據保護以及災難恢復(注意這個字眼,災難恢復)。dg提供全面的服務包括:創建,維護,管理以及監控standby數據庫確保數據安全管理員可以通過將一些操作轉移到standby數據庫執行的方式改善數據庫性能。後面這一長串大家可以把它們理解成形容詞,千萬不要被其花哨的修飾所迷惑,要抓住重點,要擁有透明現象看本質的能力,如果沒有那就要努力學習去擁有,下面我來舉一個例子,比如我們夸人會說它聰明勇敢善良等等,這些就屬於形容詞,不重要,重點在於我們究竟想形容這個人是好人還是壞人。然後再回來看看oracle對dg功能上的形容,數據保護和災難恢復應該都可以歸結爲高可用性,那麼我們可以清晰的定位dg的用途了,就是構建高可用的企業數據庫應用環境。

一、Data Guard配置(Data Guard Configurations)

Data Guard是一個集合,由一個primary數據庫(生產數據庫)及一個或多個standby數據庫(最多9個)組成。組成Data Guard的數據庫通過Oracle Net連接,並且有可能分佈於不同地域。只要各庫之間可以相互通信,它們的物理位置並沒有什麼限制,至於操作系統就更無所謂了(某些情況下),只要支持oracle就行了。

你即可以通過命令行方式管理primary數據庫或standby數據庫,也可以通過Data Guard broker提供的專用命令行界面(DGMGRL),或者通過OEM圖形化界面管理。

1.Primary 數據庫

前面提到,Data Guard包含一個primary數據庫即被大部分應用訪問的生產數據庫,該庫即可以是單實例數據庫,也可以是RAC

2.Standby 數據庫

Standby數據庫是primary數據庫的複製(事務上一致)。在同一個Data Guard中你可以最多創建9個standby數據庫。一旦創建完成,Data Guard通過應用primary數據庫的redo自動維護每一個standby數據庫。Standby數據庫同樣即可以是單實例數據庫,也可以是RAC結構。關於standby數據庫,通常分兩類:邏輯standby和物理standby,如何區分,兩類各有什麼特點,如何搭建,這方面內容就是後面的章節主要介紹的,在這裏呢三思先簡單白話一下:

邏輯standby

就像你請人幫你素描畫像,基本器官是都會有的,這點你放心,但是各器官位置啦大小啦膚色啦就不一定跟你本人一致了。

物理standby

就像拿相機拍照,你長什麼樣出來的照片就是什麼樣,眼睛絕對在鼻子上頭。或者說就像你去照鏡子,裏外都是你,哇哈哈。具體到數據庫就是不僅文件的物理結構相同,甚至連塊在磁盤上的存儲位置都是一模一樣的(默認情況下)。

爲什麼會這樣呢?這事就得從同步的機制說起了。邏輯standby是通過接收primary數據庫的redo log並轉換成sql語句,然後在standby數據庫上執行SQL語句(SQL Apply)實現同步,物理standby是通過接收並應用primary數據庫的redo log以介質恢復的方式(Redo Apply)實現同步。

另外,不知道大家是否注意到形容詞上的細節:對於相機拍照而言,有種傻瓜相機功能強大而操作簡便,而對於素描,即使是最簡單的畫法,也需要相當多的練習才能掌握。這個細節是不是也說明邏輯standby相比物理standby需要操作者擁有更多的操作技能呢?

二、Data Guard服務(Data Guard Services)

REDO傳輸服務(Redo Transport Services)

控制redo數據的傳輸到一個或多個歸檔目的地。

Log應用服務(Log Apply Services)

應用redo數據到standby數據庫,以保持與primary數據庫的事務一致。redo數據即可以從standby數據庫的歸檔文件讀取,也可直接應用standby redo log文件(如果實時應用打開了的話)。

角色轉換服務(Role Transitions)

Dg中只有兩種角色:primary和standby。所謂角色轉換就是讓數據庫在這兩個角色中切換,切換也分兩種:switchover和failover

switchover:轉換primary數據庫與standby數據庫。switchover可以確保不會丟失數據。

failover:當primary數據庫出現故障並且不能被及時恢復時,會調用failover將一個standby數據庫轉換爲新的primary數據庫。在最大保護模式或最高可用性模式下,failover可以保證不會丟失數據。

注:上述各概念簡要了解即可,這裏寫的太簡單,不要咬文嚼字,不然你會越看越糊塗,相關服務在後面章節將會有詳細介紹,不僅有直白的描述,還會有示例,再加上淺顯的圖片,就算你一看不懂,再看肯定懂:)

三、Data Guard保護模式(Data Guard Protection Modes)

對於Data Guard而言,其生存邏輯非常簡單,好好活,做有意義的事,做黑多黑多有意義的事:)

由於它提供了三種數據保護的模式,我們又親切的叫它:有三模:

最大保護(Maximum protection):

這種模式能夠確保絕無數據丟失。要實現這一步當然是有代價的,它要求所有的事務在提交前其redo不僅被寫入到本地的online redo log,還要同時提交到standby數據庫的standby redo log,並確認redo數據至少在一個standby數據庫可用(如果有多個的話),然後纔會在primary數據庫上提交。如果出現了什麼故障導致standby數據庫不可用的話,primary數據庫會被shutdown。

最高性能(Maximum performance):

這種模式提供在不影響primary數據庫性能前提下最高級別的數據保護策略。事務可以隨時提交,當前primary數據庫的redo數據也需要至少寫入一個standby數據庫,不過這種寫入可以是不同步的。

如果網絡條件理想的話,這種模式能夠提供類似最高可用性的數據保護而僅對primary數據庫有輕微的性能影響。

最高可用性(Maximum availability):

這種模式提供在不影響primary數據庫可用前提下最高級別的數據保護策略。其實現方式與最大保護模式類似,也是要求所有事務在提交前必須保障redo數據至少在一個standby數據庫可用,不過與之不同的是,如果出現故障導入無法同時寫入standby數據庫redo log,primary數據庫並不會shutdown,而是自動轉爲最高性能模式,等standby數據庫恢復正常之後,它又會再自動轉換成最高可用性模式。

最大保護及最高可用性需要至少一個standby數據庫redo數據被同步寫入。三種模式都需要指定LOG_ARCHIVE_DEST_n初始化參數。LOG_ARCHIVE_DEST_n很重要,你看着很眼熟是吧,我保證,如果你完完整整學完dataguard,你會對它更熟。

四、Data Guard優點總結

災難恢復及高可用性

全面的數據保護

有效利用系統資源

在高可用及高性能之間更加靈活的平衡機制

故障自動檢查及解決方案

集中的易用的管理模式

自動化的角色轉換

經常開篇的灌輸,相信大家已經看的出來,上面這幾條都是形容詞,看看就好,記住更好,跟人窮白活的時候通常能夠用上:)

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章