齊恩鐵+孫海峰
【摘要】 本文是在雙節點RAC的環境基礎上搭建MAA,從而實現數據庫的最高可用性架構。MAA架構包括兩大組件:RAC和DataGuard。其中RAC實現了I/O分離,避免了批量I/O對數據庫的壓力,DataGuard實現了對數據庫的保護。
【關鍵字】 Oracle MAA DataGuard 數據庫
一、引言
Oracle在10g版本時已經提供RAC(Real Application Cluster)的解決方案,而Oracle在11g版本中更是提供了MAA(Maximum Availability Architecture)最高可用性體系架構的解決方案,目標是為了消除數據庫的停機時間,為用戶提供更加有效的方案來實現企業數據和應用最大化的高可用性。它不僅包括針對存儲的ASM,針對集群的RAC,而且還包括針對數據保護的DataGuard[1]。
二、系統實現
1、架構原理。在DataGuard環境中,至少有兩個數據庫,一個處于Open狀態對外提供服務,這個數據庫叫做Primary Database,簡稱主庫。第二個處于恢復狀態,叫做Standby Database,簡稱備庫[4]。
2、系統環境。1.主機與軟件:此次MAA部署是在一臺Window10操作系統上,利用Virtual Box軟件虛擬創建四臺Linux主機,并在這四臺Linux主機上安裝Oracle數據庫。2.網絡:在MAA環境中,每臺主機都需要有兩塊網卡和四個IP,兩塊網卡是基于Virtual Box虛擬機的host-only網卡模式。公有網卡對應公有IP、Virtual IP和Scan IP,公有IP用于標識虛擬Linux主機在網絡中的唯一地址;Virtual IP用于數據庫的對外服務,當某個節點出現故障時,Virtual IP可以自動轉移到其他正常的節點上。私有網卡對應私有IP,用于節點之間的通信和數據傳輸。3.磁盤:部署MAA的四臺虛擬Linux主機都具有三塊虛擬磁盤,分別是:系統磁盤,用于存儲操作系統和系統軟件;本地磁盤,用于存儲Oracle數據庫軟件;共享磁盤,主要用來存放OCR文件(集群的配置信息),表決盤VOTING DISKS,以及數據庫的數據文件和閃回區等。
3、系統部署。此次系統部署分為:1.配置主機。IP映射、磁盤配置、創建用戶和目錄、環境變量等。2.安裝集群件CRS和Oracle軟件。該階段需要安裝集群件和Oracle軟件,集群件對運行于其上的數據庫進行監視,并在發生異常時進行重啟、切換等干預手段。3.創建數據庫。創建ASM磁盤組,數據庫的數據文件,控制文件,日志文件都存儲在ASM磁盤組中,然后在通過DBCA創建數據庫。4.配置主備庫初始化文件。創建主庫和備庫的PFILE文件。5.啟動主備庫。通過RMAN備份主庫的文件發送到備庫主機,在備庫用RMAN做恢復,并使用PFLIE文件啟動備庫,至此該集群搭建完成。
三、系統測試
3.1 正常切換(Switchover)
Swithchover通常都是人為的有計劃的進行角色互換,比如數據庫升級、更換硬件等。
1.查看主備庫狀態。
SQL> select name,database_role,switchover_status,open_mode from v$database;
2.檢查是否有用戶連接
SQL>select username,user# from v$session where username is not null;
3.主庫切換到備庫
SQL>alter database commit to switchover to standby
當用命令檢查之后發現還有用戶連接數據庫,可用下列語句在轉換的同時強制關閉用戶的連接。
SQL>alter database commit to switchover to standby with session shutdown;
4.備庫切換到主庫
重新將主庫轉換為 MOUNT 狀態,用如下語句將原來的備庫轉換為新的主庫。
SQL>alter database commit to switchover to primary;
將新轉換的主庫開庫,同時將備庫open,主庫進行切換日志操作,備庫恢復,查看新的備庫是否可以接收歸檔日志并做恢復。
SQL>alter database recover managed standby database disconnect from session;
3.2 應急切換(Failover)
Failover是指由于主庫遇到災難損壞而無法正常工作時,需要將備庫轉換為主庫,具體操作如下。
1.主庫宕機,對備庫強制停止恢復。
SQL>alter database recover managed standby database finish force;
2.備庫強制轉換為主庫
停止備庫的恢復之后,將備庫轉換為主庫,此時,原來的主庫將不再是當前DataGuard環境中的一部分,新生成的主庫將頂替舊主庫提供服務。
SQL>alter database commit to switchover to primary;
結論:數據庫的高可用性架構是數據庫容災容錯的保護模式。Oracle MAA給我們提供了一個用來進行數據保護的很好的解決方案,它不僅能夠在故障時進行容錯,還實現模式轉換之間的無縫切,這就使得應用它的時候,業務不會因為外在原因或內在原因受到影響而中斷,從而導致企業的損失。
參 考 文 獻
[1] 陳吉平.構建Oracle高可用環境-企業級高可用數據庫架構、實戰與經驗總結[M].北京:電子工業出版社,2012.
[2] 張曉明.大話Oracle RAC集群高可用性備份與恢復[M].北京:人民郵電出版社,2011.
[3] 白磷.Oracle RAC日記[M].北京:清華大學出版社,2013.