Data Guard Broker系列之六:Fast-Start Failover
轉自:
[@more@]Fast-Start Failover
top基本概念
Fast-Start Failover是建立在broker基礎上的一個快速故障轉換的機制,透過fast-start failover可以自動檢測primary的故障,然後自動的failover到預先指定的standby上面,這樣可以最大化的減少故障時間,提高資料庫的可用性。
top結構
Fast-Start Failover是在broker的基礎上再增加了一個單獨的observer,用來監控primary和standby資料庫的狀態,一旦primary不可用,observer就會自動的切換到指定的standby上面。
top準備工作
- 確保broker配置為執行在Max Availability模式。
- 在primary和standby機器上都啟用flashback database,這個在reinstate failed的資料庫的時候要用。
- 在執行observer的機器上安裝DGMGRL工具,用於啟動observer。
- 配置tnsname.ora檔案,保證observer能正常的連線到primary和standby資料庫上面。
top配置及啟用Fast-Start Failover
在滿足上面的條件之後在經過下面少許的配置就可以啟用Fast-Start Failover了。
- 配置每個資料庫Failover的目標,這一步是決定當資料庫出問題之後會自動failover到那個standby。
- 設定FastStartFailoverThreshold值,這個設定是決定了primary壞了多長時間之後會執行自動的failover操作,這裡我們設定的是30s。
- 啟用Fast-Start Failover。
- 啟動observer。
- 現在可以看看我們環境的狀態了。
$dgmgrl sys/12345@torcla.mycompanyDGMGRL for Linux: Version 10.2.0.2.0 - Production
Copyright (c) 2000, 2005, Oracle. All rights reserved.
Welcome to DGMGRL, type "help" for information.Connected.DGMGRL> start observer;observer started
Configuration
Name: FSF
Enabled: YES
Protection Mode: MaxAvailability
Fast-Start Failover: ENABLED
Databases:
torcla - Primary database
torclb - Physical standby database
- Fast-Start Failover target
Fast-Start Failover
Threshold: 30 seconds
observer: orainst.desktop.mycompany.com
Current status for "FSF":SUCCESS
topFast-Start Failover的管理
topFast-Start Failover的工作過程
在啟用了fast-start failover和observer之後,broker會來監控primary和standby資料庫的狀態,一旦primary資料庫出現故障,observer會根據一定的程式來執行自動的failover操作。
- 當發生下列情形是observer會嘗試啟動failover操作
- observer和primary資料庫之間連線出現故障時
- 當primary資料庫故障或者是RAC環境中所有instance都故障時
- 執行SHUTDOWN ABORT之後,特別注意正常的SHUTDOWN操作(NORMAL,IMMEDIATE,TRANSACTIONAL)不會引發failover操作
- 資料庫檔案OFFLINE
除了最後一個資料庫檔案OFFLINE的情形,其他的情況下observer都會嘗試在FastStartFailoverThreshold制定的時間之內重新連線資料庫,如果還是無法連線之後才會執行自動failover操作。
- 在FastStartFailoverThreshold指定的時間內重新連線資料庫,在RAC環境中會嘗試連線其他的instance。
- 嘗試時間結束後,observer將確定目標standby可用。下面的這些情形會導致failover失敗
- fast-start failover沒有啟用
- observer無法連線到standby資料庫
- standby與observer中記錄的狀態不一致
- observer在primary fail的時候正好沒有執行,再次啟動之後只能找到一個standby
- 目標standby沒有和primary完成同步
- 目標standby是邏輯standby時,在V$DATABASE中顯示LOADING DICTIONARY時
- 目標standby還能和primary正常通訊時
- 在V$DATABASE的列FS_FAILOVER_STATUS中顯示了其他無法進行failover操作時
- 有手工failover正在進行時
- 執行failover操作,使目標standby變成新的primary。
- reinstate之前失敗的primary
下面來個實際的failover例子.
先看看當前的primary,確定是torcla
Configuration
Name: FSF
Enabled: YES
Protection Mode: MaxAvailability
Fast-Start Failover: ENABLED
Databases:
torcla - Primary database
torclb - Physical standby database
- Fast-Start Failover target
Current status for "FSF":SUCCESS
然後登入到torcla上,執行一個SHUTDOWN ABORT命令
然後在observer裡面我們可以看到自動failover了
06:08:24.47 Tuesday, September 01, 2009Initiating fast-start failover to database "torclb"...Performing failover NOW, please wait...Failover succeeded, new primary is "torclb"06:08:33.49 Tuesday, September 01, 2009
再看此時的狀態,primary已經換成torclb了,不過此時torcla是不可用的
Configuration
Name: FSF
Enabled: YES
Protection Mode: MaxAvailability
Fast-Start Failover: ENABLED
Databases:
torcla - Physical standby database (disabled)
- Fast-Start Failover target
torclb - Primary database
Current status for "FSF":Warning: ORA-16608: one or more databases have warnings
再將torcla啟動到mount,接著就能看到observer會自動的reinstate torcla
06:11:13.45 Tuesday, September 01, 2009Initiating reinstatement for database "torcla"...Reinstating database "torcla", please wait...Operation requires shutdown of instance "torcla" on database "torcla"Shutting down instance "torcla"...ORA-01109: database not open
Database dismounted.ORACLE instance shut down.Operation requires startup of instance "torcla" on database "torcla"Starting instance "torcla"...ORACLE instance started.Database mounted.Continuing to reinstate database "torcla" ...Reinstatement of database "torcla" succeeded06:12:20.07 Tuesday, September 01, 2009
top檢視Fast-Start Failover狀態
透過SHOW CONFIGURATION VERBOSE命令可以檢視Fast-Start Failover的基本執行狀態
Configuration
Name: FSF
Enabled: YES
Protection Mode: MaxAvailability
Fast-Start Failover: ENABLED
Databases:
torcla - Primary database
torclb - Physical standby database
- Fast-Start Failover target
Fast-Start Failover
Threshold: 30 seconds
observer: orainst.desktop.mycompany.com
Current status for "FSF":SUCCESS
要檢視Fast-Start Failover更多的資訊就要檢視V$DATABASE檢視中的相關的列了。
- FS_FAILOVER_STATUS
- 這個列顯示了Fast-Start Failover的狀態,透過檢視這個列我們可以知道資料庫時處於什麼狀態之中,詳細的狀態資訊在。
- FS_FAILOVER_CURRENT_TARGET
- 當前資料庫的failover的目標資料庫
- FS_FAILOVER_THRESHOLD
- 執行自動failover的時間超時值
- FS_FAILOVER_observer_PRESENT
- 是否啟動了observer,透過檢視這個列我們可以知道是否有observer在監控著這個資料庫
- FS_FAILOVER_observer_HOST
- 監控此資料庫的observer所在的位置
FS_FAILOVER_STATUS FS_FAILOVE FS_FAILOVER_THRESHOLD FS_F FS_FAILOVER_observer_HOST
------------------------- ---------- --------------------- ---- ------------------------------SYNCHRONIZED torclb 30 YES orainst.desktop.mycompany.com
top禁用Fast-Start Failover
禁用Fast-Start Failover的命令為
加上FORCE之後將會強行在執行DISABLE命令的資料庫以及這個資料庫可連通的其他資料庫上面上禁用Fast-Start Failover,而其他無法連線上的資料庫將保持原來的狀態;不加FROCE時如果有那個資料庫暫時無法連線的話那麼DISABLE操作將會失敗。所以在當primary和standby資料庫的網路連線良好的情況下要使用不帶FORCE的命令。
通常需要使用FORCE的情形
- 當因為網路問題造成primary無法和observer及那些已完成同步的standby通訊時,primary將會停止工作,如果primary的恢復時間可期,且想要primary繼續工作的話就需要使用FORCE選項暫時在primary上禁用fast-start failover,不過之前一定要檢檢視資料庫有沒有自動failover。
- 當primary和standby沒有完成同步的時候想要手工的執行failover的命令,在fast-start failover啟用的時候是無法執行的,這時候也需要使用FORCE選項強行禁用fast-start failover。
- 在fast-start failover失敗之後還想將資料庫failover到其他可用的standby上時也需要先使用FORCE強制禁用fast-start failover然後在手工進行failover操作。
- 如果確定有問題的primary可以很快的恢復,此時不想讓fast-start failover自動failover,也可以使用FORCE選項強行禁用fast-start failover。
topObserver管理
啟用observer的操作很簡單,使用DGMGRL連線到資料庫,然後執行START OBSERVER命令就行了。
要啟動observer的話必須使用SYS連線到DGMGRL,同一時間只能啟動一個observer,如果嘗試啟動多個observer將會收到這樣的訊息
要停止一個observer的話只需要用DGMGRL連線到資料庫,然後執行STOP OBSERVER命令就行了。
要確定一個資料庫是否在observer的監視中必須要去檢視V$DATABASE檢視中的FS_FAILOVER_OBSERVER_PRESENT和FS_FAILOVER_OBSERVER_HOST。只有當FS_FAILOVER_OBSERVER_PRESENT為YES的時候才說明這個資料庫時處於observer的監控之中。
同時資料庫是否有observer監視這個資訊我們也可以從DGMGRL中檢視到
INSTANCE_NAME SEVERITY ERROR_TEXT
* ERROR ORA-16820: Fast-Start Failover observer is no longer observing this database
在啟動observer的時候,observer會自動的在當前目錄中生成一個預設名字為fsfo.dat的二進位制檔案,這個檔案裡面儲存了fast-start failover的配置資訊,同時也包含了到primary和standby的連線方式。也可以在啟動observer的時候使用FILE引數指定配置檔案的位置,命令如下
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/73920/viewspace-1043822/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Data Guard Broker系列之二:Data Guard Broker配置實戰
- Data Guard Broker系列之四:資料庫管理資料庫
- Oracle Data Guard快速啟動故障切換 - fast-start failover(FSFO)OracleASTAI
- Data Guard broker系列之五:資料庫角色轉換資料庫
- Oracle Data Guard Broker元件Oracle元件
- 【DataGuard】物理Data Guard之Failover轉換AI
- 1 Oracle Data Guard Broker 概念Oracle
- Oracle Data Guard和Broker概述Oracle
- Oracle Data Guard Failover(activate)OracleAI
- In Data Guard,choose switchover or failover?AI
- data guard failover on solaris 10AI
- 8 Oracle Data Guard Broker 屬性Oracle
- 官方文件學習:data guard broker
- 轉載《Data Guard Broker基礎》
- Data Guard Switchover and Failover Best PracticesAI
- 【DATAGUARD】Oracle19c Data Guard BrokerOracle
- A Oracle Data Guard Broker 升級和降級Oracle
- DATA GUARD物理STANDBY的FAILOVER切換AI
- 使用Data Guard Broker進行Data Guard物理備用庫配置(Oracle 19c)Oracle
- oracle 11g dg broker 開啟fast-start failover自動故障切換OracleASTAI
- Oracle Data Guard Broker and Static Service Registration (文件 ID 1387859.1)Oracle
- 使用Broker管理Data Guard——停用、改保護模式等模式
- Data Guard Broker High Availability (Doc ID 275977.1)AI
- How to configure Client Failover after Data Guard Switchover or Failover [ID 316740.1]clientAI
- Data Guard中快速Switchover,Failover的一些建議AI
- Data Guard配置Broker解決ORA-16664、ORA-16792
- 盛哥學習 Data Guard 第四篇《物理standby之failover 丟棄切換》AI
- Data Guard高階玩法:通過閃回恢復failover備庫AI
- [20160222]Oracle 11G Data Guard FailoverOracleAI
- Oracle 12c Data guard 物理備庫應急切換(failover)流程OracleAI
- oracle10g data guard role transition_physical_logical_switchover_failoverOracleAI
- Oracle 11g Data guard 物理備庫應急切換(failover)流程OracleAI
- oracle 10g data guard broker ORA-16607 故障處理案例Oracle 10g
- DATA GUARD部署模式——DATA GUARD概念和管理模式
- 介紹ORACLE DATA GUARD——DATA GUARD概念和管理Oracle
- Data guard搭建
- oracle data guard!!Oracle
- oracle9i(9204)data guard(dg)_logical standby_failover操作指南OracleAI