數據庫管理220期 2024-07-15
- 數據庫管理-第220期 Oracle的高可用-03(20240715)
- 1 AC/TAC
- 2 配置Service
- 3 用戶權限
- 4 端口開放
- 總結
數據庫管理-第220期 Oracle的高可用-03(20240715)
作者:胖頭魚的魚缸(尹海文)
Oracle ACE Pro: Database(Oracle與MySQL)
PostgreSQL ACE Partner
10年數據庫行業經驗,現主要從事數據庫服務工作
擁有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等認證
墨天輪MVP、年度墨力之星,ITPUB認證專家、專家百人團成員,OCM講師,PolarDB開源社區技術顧問,HaloDB外聘技術顧問,OceanBase觀察團成員,青學會MOP技術社區(青年數據庫學習互助會)技術顧問
圈內擁有“總監”、“保安”、“國產數據庫最大敵人”等稱號,非著名社恐(社交恐怖分子)
公眾號:胖頭魚的魚缸;CSDN:胖頭魚的魚缸(尹海文);墨天輪:胖頭魚的魚缸;ITPUB:yhw1809。
除授權轉載并標明出處外,均為“非法”抄襲
其實吧這一期的內容才是我寫Oracle高可用系列主要想寫的,前面通過MAA架構介紹了Oracle的各種基于物理復制或邏輯復制的高可用架構,而在系列第二期中介紹了GDS。雖然對業務是透明的,但是GDS運行在數據庫架構之外如果出現異常影響較大,同時GDS本身需要一定的學習和維護成本。
1 AC/TAC
AC,Application Continuity,可譯作業務連續性,是Oracle 12c引入的的一項功能,是Oracle Real Application Clusters (RAC)、Oracle RAC One Node 和 Oracle Active Data Guard 選件的一個特性。僅需進行極少的配置變更,無需修改業務應用代碼即可實現在計劃內維護和計劃外事件發生事務中斷后,通過恢復正在進行的數據庫會話,對最終用戶和應用程序屏蔽數據庫級別的中斷,提高了依賴Oracle數據庫的應用程序的容錯能力。這樣,在應用看來中斷只是一次稍有延遲的執行。通過AC,在補丁滾動升級、參數變更重啟甚至是數據出現崩潰時,應用程序也不受影響。
TAC,Transparent Application Continuity,透明應用連續性,是TAF(Transparent Application Failover,透明應用程序故障轉移,可以重放/繼續查詢)的延續。會透明地跟蹤和記錄會話和事務狀態,以便在出現可恢復的中斷之后恢復數據庫會話。在TAF僅支持SELECT的基礎上,擴展支持INSERT、UPDATE、DELETE操作。在不需要修改應用程序代碼的情況下,允許為您的應用程序啟用透明的應用程序連續性。應用程序透明性和故障轉移是通過使用狀態跟蹤信息來實現的,這些信息在應用程序發出用戶調用時被捕獲。能夠為數據庫的日常維護提供方便,有效消除應用服務的停機時間顧慮能夠有效應對數據庫實例的機器、網卡、系統等突發異常事件;甚至能夠讓應用端透明地實現數據中心災備冗余架構下的主備中心切換。
2 配置Service
下面是AC和TAC的在Service配置上的區別:
這里以TAC為例按照下面的RAC集群參考進行Service配置:
srvctl add service -db dbaas -pdb PDB1 -service tac_srv -preferred dbaas1,dbaas2 -available dbaas3,dbaas4 -failover_restore AUTO -failoverretry 30 -failoverdelay 10 -commit_outcome TRUE -failovertype AUTO -replay_init_time 1800 -retention 86400 -notification TRUE -drain_timeout 300 -stopoption IMMEDIATEsrvctl start service -db dbaas -service tac_srv
Service配置完成后pdb1對應的服務tac_srv會在dbaas1和dbaas2上運行,當dbaas1或dbaas2出現異常時,會根據節點負載情況從dbaas3或dbaas4啟動對應服務,以滿足配置的節點數量要求,避免出現性能問題。
3 用戶權限
有些數據庫函數在每次調用的時候都會返回新的值,這些函數稱為可變函數,包括sysdate、systimestamp、local_timestamp、current_timestamp、sys_guid、sequence.nextval。
如果一個未完成的事務是由PL/SQL語句塊組成,并且語句塊中用到了可變函數,那么當 TAC在可用實例上嘗試重放這個事務時,可變函數的返回值是變化了的,那么這個重放就會被拒絕。為 了在重放時能夠使用原來的返回值,需要在數據庫端對可變函數或對象賦KEEP權限:
GRANT KEEP DATE TIME TO [db user];
GRANT KEEP SYSGUID To [db_user];
ALTER SEQUENCE [sequence_name] KEEP;
--如果sequence還被其他數據庫用戶使用 , 需要給這些用戶賦與KEEP權限
GRANT KEEP SEQUENCE ON [db_user.sequence_name]TO [other_user];
4 端口開放
由于在srvctl創建服務時,添加了-notification TRUE參數,開啟了FAN通知功能,在開通防火墻策略的時候,除了開放一般Oracle Net Listener標準監聽(默認為1521/tcp)對應的端口以外,還需要開啟Oracle Notification Services (ONS)服務(默認為6200/tcp)的端口。以確保應用程序能正確、及時的接受到來自于FAN (Fast Application Notification)的關于集群情況(如節點維護、故障、負載等)事件的通知。
總結
本期講解了在RAC集群上配置TAC的操作及相關事項,下一期將講解應用側配置相關內容。
老規矩,知道寫了些啥。