【恩墨學院】深入解析:一主多備DG環境,failover的實現過程詳解
【恩墨學院】深入解析:一主多備DG環境,failover的實現過程詳解
作者介紹
現任雲和恩墨資料庫技術顧問,擅長的安裝配置、故障診斷、效能診斷、效能最佳化、備份容災解決方案的設計與實施。
個人技術部落格: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之前的狀態,而不需要在新主庫重新去備份。
恩墨學院隸屬於雲和恩墨(北京)資訊科技有限公司,致力於提供專業高水準的與大資料培訓服務,挖掘培養大資料與資料庫人才。恩墨學院提供包括個人實戰技能培訓、個人認證培訓、企業內訓在內的全方位大資料和資料庫技術培訓。ACE級別超強師資,配備專業實驗室,沉浸式學習與訓練,專業實驗室、配備專業助教指導訓練。能迅速融入專家圈子,業內資源豐富,迅速積累職場人脈。課程包括:班、Oracle 、Oracle OCP考試等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28530558/viewspace-2152410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【恩墨學院】深入剖析 - Oracle SCN機制詳細解讀Oracle
- 【恩墨學院】深入解讀Oracle 18c對於DBA的影響及應對措施Oracle
- fabric網路環境啟動過程詳解
- 【恩墨學院】5 分鐘帶你看懂 DockerDocker
- 【Node】詳解模組的實現過程
- 【DG】Oracle之級聯DG--(cascade dg) --(一主一備一級聯)Oracle
- 轉:DNS解析過程詳解DNS
- DM8 實時主備環境搭建
- 【恩墨學院】一次由查詢轉換引起的效能問題的分析
- 【恩墨學院】從商用到開源:DB2遷移至MySQL的最佳實踐DB2MySql
- MySQL Xtrabackup真實生產環境搭建主從複製全過程MySql
- DG配置過程中的引數解釋
- openGauss主備切換之switchover與failoverAI
- 【恩墨學院】原來銀行都在用這些資料庫資料庫
- Oracle DG異構主備支援Oracle
- 後端多環境治理的實踐(一)後端
- DM8 MPP主備環境搭建
- vue原始碼解析-圖解diff詳細過程Vue原始碼圖解
- DG環境下打補丁
- 深入解析xLSTM:LSTM架構的演進及PyTorch程式碼實現詳解架構PyTorch
- 堆排序的Python實現(附詳細過程圖和講解)排序Python
- 一條 sql 的執行過程詳解SQL
- 一次DG故障診斷過程分析
- 深入解析多型和方法呼叫在JVM中的實現多型JVM
- 【恩墨學院】深度學習在美團點評推薦平臺排序中的運用深度學習排序
- 一、考前環境準備
- Flutter(一) 環境準備Flutter
- 【恩墨學院】當Java虛擬機器遇上Linux Arena記憶體池Java虛擬機Linux記憶體
- 實戰if-else 過多詳解
- 在umi中實現一次構建多環境部署
- dg主庫建立檔案備庫未同步解決方法
- 深入mysql建立自定義函式與儲存過程的詳解MySql函式儲存過程
- 一步一步搭建oracle 11gR2 rac+dg之環境準備(二)Oracle
- (一)Linux環境的學習環境的搭建Linux
- 環境變數詳解變數
- MapReduce過程詳解
- Oracle 11g dg broker自動failoverOracleAI
- 【恩墨學院】京東618大促閘道器承載十億呼叫量背後的架構實踐架構