Oracle高可用,常用幾點知識

  • 2019 年 10 月 6 日
  • 筆記

我們幫助行業客戶進行上雲業務遷移,Oracle的業務數據遷移幾乎成了必然遇到的問題。對Oracle的數據高可用,作為雲架構師,應該說是必須懂。今天我們從入門開始,介紹一些常見的問題。

一、什麼是DG、RAC

DG(Data Guard)數據衛士,它主要解決數據存儲上的安全問題,簡單來講就是存儲另外一份同步的數據冗餘來保護數據,而且這種保護是動態的,秒級同步。DG很好地避免了伺服器系統在數據存儲上的單點故障。

RAC(Real Application Cluster)實時數據集群,則很好地解決了伺服器的擴展問題,我們可以用X86伺服器來增加伺服器的訪問節點。可以做到負載均衡或者是熱備。

二、DG如何實現數據的冗餘

Data Guard包括一個生產資料庫以及若干個備用資料庫,這些資料庫只與主資料庫在事務上保持一致。副資料庫通過重做數據保持這種事務的一致性。

當主資料庫發生變更、新增操作時,則生成重做數據並將其寫入本地日誌文件中。此時主資料庫必須運行在歸檔模式,否則不會產生日誌文件。副資料庫將日誌文件下載到本地,並應用到備用資料庫中。此時DG可以選擇是數據同步模式、還是非同步模式。

三、DG最多可以實現多少副資料庫?

最近做的一個項目,副資料庫達到了兩個,一個在公有雲端,另一個在本地的客戶私有雲。

實現DG可以實現最多九份副資料庫,也就是可以實現最多九份只讀資料庫,或九處不同地方的資料庫備份。

DG主、副資料庫運行的底層作業系統、DBMS資料庫版本要求一致。如兩邊都是RedHat 6.8、Oracle 12G。

四、DG副本數據有兩種不同的數據重寫方式

1、Redo Log物理寫數據模式。

Redo Log、SQL。Redo Log是物理重寫,就也就直接往副資料庫的塊里寫數據,直接複製塊。而SQL是邏輯重寫,在副資料庫里寫標準語句,insert數據等。

因為Redo Log是物理重寫,如果此時副資料庫正在執行寫操作,Oracle資料庫是無法正常打開的。為了解決該問題,實現主副資料庫的讀寫分離功能,Oracle支援閃回功能,也就是讀數據時,Oracle置為只讀模式(此時同步數據無法寫入),而當有物理數據寫入時,Oracle置為寫模式。

在Oracle 11G版本開始,DG提升了Redo Log的功能,資料庫可以在Read Only模式下繼續Redo寫數據。

2、SQL邏輯寫數據模式。

SQL模式不需要鎖定副資料庫,任何時侯都可以往副資料庫里進行數據的讀/寫操作。

SQL採用邏輯重寫數據的方式,insert、update等標準SQL語句重寫數據,看上去挺美好。但有弊端,使用該模式有些數據類型、語句有操作上的限制,不能保證資料庫完全一致。

3、真實場景我們如哪種模式?

幾個項目中,用到Redo Log物理寫數據的更多。為了保證數據的一致性,這是很關鍵的。

Tags: