您好,登錄后才能下訂單哦!
【恩墨學院】深入解析:一主多備DG環境,failover的實現過程詳解
作者介紹
現任云和恩墨數據庫技術顧問,擅長Oracle數據庫的安裝配置、故障診斷、性能診斷、性能優化、備份容災解決方案的設計與實施。
個人技術博客:https://www.cnblogs.com/jyzhao
在DG中,switchover和failover是兩個重要的概念,也是DG實現的核心。根據不同的DG配置,switchover和failover也是有差異的。當主庫被crash之后,如何進行DG foilover的操作?
本文是針對在DG災備環境進行failover操作以及后續恢復的報告。
數據庫版本:Oracle 11.2.0.4
Site A:主庫 db_unique_name=jyzhao
Site B:備庫(實時應用)db_unique_name=mynas
Site C:備庫(延遲1小時應用)db_unique_name=jyzhao_s
A庫 => Site A:主庫
B庫 => Site B:備庫(實時應用)
C庫 => Site C:備庫(延遲1小時應用)
當A庫crash后,在B庫進行failover將B切換為新的主庫,確認failover之后,A庫和C庫應該如何處理才可以成為新的備庫繼續使用?是否需要重建?重建的話,是否需要重新備份來恢復,以前的備份是否可以用來創建備庫?
問題
驗證過程
1、A庫異常關閉
A庫:
SQL>shutdown abort
2、B庫進行failover切換為新主庫
failover 標準步驟如下:
#取消DG應用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
#重啟下數據庫(建議)
shutdown immediate;
startup
#操作不可逆,確定實際情況需要failover
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH force;
SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;
#嘗試常規切換為主庫
ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;
如果這一步的常規切換失敗,提示需要介質恢復,那么:
1)恢復備庫 recover standby database until cancel;
2)激活備庫 alterdatabaseactivatestandbydatabase;
#最后重新啟動數據庫
shutdownimmediate;
startup
查看此時B庫的信息:
SQL>selectname, database_role, open_mode fromgv$database;
可以看到,目前B庫已成為新的主庫,redo日志的sequence重新開始。
3、要求C庫成為新主庫的備庫
現在要求C庫成為新主庫的備庫。是否需要重建C庫呢?答案是不需要。下面具體來看下驗證過程。
C庫的alert日志:
可以看到,在A庫crash之后,C庫收到網絡無法連接到A庫的告警,說明C庫目前沒有新的操作。
接下來想要C庫成為B庫(新主庫)的備庫,就需要嘗試在B庫上配置DG參數,使得B庫的歸檔可以傳輸到C庫。
同時在B庫的tnsnames.ora文件中增加到C庫的連接:
#StandbySingle Instance
JYZHAO_S=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.111)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = jyzhao_s)) )
在B庫設置完成后,觀察B庫的告警:
然后返回C庫操作,將C庫開啟實時日志應用:
SQL>alter database recover managed standby database cancel;
Databasealtered.
SQL>alter database recover managed standby database using current logfile disconnect from session;
Databasealtered.
此時再觀察C庫的告警日志:
實際看到,C庫已經可以正常應用日志。說明C庫不需要重建即可通過簡單配置成為新主庫B庫的新備庫。
4、要求A庫成為新主庫的備庫
此時A庫啟動的話,是一個獨立運行的數據庫,如果想將A庫也設置為主庫的話,那么,通過新主庫的最新備份肯定是可行的,但是如果數據量很大,之前A庫自己本身有歷史的備份,能否不再耗時備份新主庫,直接通過歷史的備份恢復呢?其實這個從上面的C庫不再需要重建直接成為新主庫的備庫,也可以推斷出,是可以的。只需要確認這個備份是在failover之前完成的。下面我們來具體實驗驗證下可行性。
在B庫創建新的備庫控制文件,并傳輸到A庫相同路徑下:
backupcurrentcontrolfileforstandbyformat'/tmp/std_control02.ctl';
在A庫啟動到nomount,恢復新的備庫控制文件
restorestandbycontrolfilefrom'/tmp/std_control02.ctl';
在A庫查看數據文件頭的檢查點,確認是在failover之前:
上面這個數據文件頭的檢查點是0,說明數據文件沒有正確獲取到,實際上是由于OMF的名字有變化,直接將數據文件路徑catalog到備份集中,再switch即可。
catalogstartwith'+DATA1/jyzhao/datafile/';
switchdatabase to copy;
再次查詢:
此時在mount狀態下開啟日志應用:
alter database recover managed standby database disconnect from session;
從告警日志觀察,確認應用到最新時,取消日志應用:
alter database recover managed standby database cancel;
打開數據庫,開啟實時應用:
alter database recover managed standby database USING CURRENT LOGFILE disconnect from session;
最終查詢可以正常實時應用。
結論
一般來說,在A庫crash之后,B庫failover成為新的主庫,那么原來設置為延遲1小時應用的C 庫是可以直接配置成為新主庫的備庫。A庫修復后,也可以通過failover之前的現有備份集來恢復到failover之前的狀態,而不需要在新主庫重新去備份。
恩墨學院隸屬于云和恩墨(北京)信息技術有限公司,致力于提供專業高水準的oracle數據庫與大數據培訓服務,挖掘培養大數據與數據庫人才。恩墨學院提供包括個人實戰技能培訓、個人認證培訓、企業內訓在內的全方位大數據和數據庫技術培訓。ACE級別超強師資,配備專業實驗室,沉浸式學習與訓練,專業實驗室、配備專業助教指導訓練。能迅速融入專家圈子,業內資源豐富,迅速積累職場人脈。oracle數據庫課程包括:Oracle DBA實戰班、Oracle OCM考試、Oracle OCP考試等。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。