1、AWT緩存組
AWT緩存組是TimesTen的異步寫緩存,數(shù)據(jù)只允許在TimesTen中修改,然后同步到Oracle。當(dāng)然,TimesTen中的數(shù)據(jù)最初是從Oracle加載而來。對(duì)于存儲(chǔ)來說,cache分為write-through(直接寫)和write-back(回寫),而TimesTen的AWT對(duì)應(yīng)的就是存儲(chǔ)的write-back。由于有雙向的數(shù)據(jù)流動(dòng),對(duì)于AWT,除了只讀緩存組所需的cacheagent外,還需要一個(gè)replicationagent,負(fù)責(zé)數(shù)據(jù)從TimesTen到Oracle的同步。使用AWT緩存的好處除了性能外,還可以保證當(dāng)后端Oracle失效時(shí),TimesTen仍可以接收和修改數(shù)據(jù),保證數(shù)據(jù)不丟失,待Oracle正常后,數(shù)據(jù)自動(dòng)同步到后端。
AWT緩存組可以保證:
1.不會(huì)因?yàn)镺racle失效而丟數(shù)據(jù),且可以通過復(fù)制代理replicationagent自動(dòng)恢復(fù)。
2.不會(huì)因復(fù)制代理replicationagent失效而丟數(shù)據(jù),自動(dòng)恢復(fù)。
3.保證數(shù)據(jù)的一致性。
AWT緩存組數(shù)據(jù)流向圖
2、ClassicReplication(傳統(tǒng)復(fù)制)
當(dāng)前應(yīng)用的TimesTen內(nèi)存庫(kù)的復(fù)制方式為ClassicReplication。Replication就是在多個(gè)數(shù)據(jù)庫(kù)中存在多份數(shù)據(jù)拷貝,對(duì)性能影響最小的同時(shí)保證數(shù)據(jù)高可用,除了數(shù)據(jù)恢復(fù)外,還可以均衡工作負(fù)載,以最大化性能和實(shí)現(xiàn)滾動(dòng)升級(jí)和維護(hù)。它的特點(diǎn)是比較靈活,支持豐富的復(fù)制拓?fù)湫问剑梢岳秒p活復(fù)制實(shí)現(xiàn)業(yè)務(wù)系統(tǒng)的橫向擴(kuò)展,利用一對(duì)多復(fù)制實(shí)現(xiàn)數(shù)據(jù)分發(fā)和讀寫分離等。
對(duì)TimesTen的AWT核心緩存組的誤操作進(jìn)行恢復(fù)
2.1故障現(xiàn)象
(1)運(yùn)維人員和應(yīng)用人員收到告警通知,包括日志告警、服務(wù)告警、內(nèi)存使用率告警
(2)用戶查余額異常,日志積壓嚴(yán)重且長(zhǎng)時(shí)間刷不掉
2.2故障分析
(1)后因客戶通報(bào),操作人員在AWT緩存組上進(jìn)行了delete全表刪除誤操作,該表接近1000萬的數(shù)據(jù)量。由于是AWT緩存組,刪除操作會(huì)同步到物理庫(kù),直接導(dǎo)致嚴(yán)重的數(shù)據(jù)丟失。
(2)kill掉delete進(jìn)程后,日志積壓的問題仍未緩解
(3)急停replicationagent,切斷AWT緩存組到Oracle的數(shù)據(jù)同步
(4)經(jīng)各方討論,原因應(yīng)該是delete操作已經(jīng)寫入了TimesTen的日志記錄,timesten是通過日志的方式將數(shù)據(jù)同步到Oracle,日志是自動(dòng)排序的且是按順序進(jìn)行同步處理的,因replicationagent已停,日志就不能自動(dòng)同步。因此陷入死循環(huán):若停止replicationagent,日志會(huì)積壓,數(shù)據(jù)不能同步;若開啟replicationagent,delete操作會(huì)同步到oracle造成數(shù)據(jù)丟失。
2.3故障處理
第一階段:主庫(kù)恢復(fù)
1、備份物理庫(kù)中的相關(guān)表數(shù)據(jù),同時(shí)備份TT中異常緩存組的數(shù)據(jù)(TT中備份語句如下)
如:ttbulkcp-o -s "|" "DSN=ABM_BAL_WH"ABM1_BAL_WH.ACCT_BALANCE_T ACCT_BALANCE_T.txt
2、停相關(guān)應(yīng)用或應(yīng)用切離線
3、刪除TT庫(kù)中異常緩存組的復(fù)制關(guān)系
如:ALTERREPLICATION ABM_BAL_wh.biwholestore ALTER element abm1_abm2 EXCLUDEcache group ABM1_BAL1.WH_ACCT_BALANCE_C ALTER ELEMENT abm2_abm1EXCLUDE cache group ABM1_BAL1.WH_ACCT_BALANCE_C;
4、刪除異常緩存組
如:dropcache group ABM1_BAL1.WH_ACCT_BALANCE_C;
5、由于物理庫(kù)中對(duì)應(yīng)表的object_id已經(jīng)記錄在Timesten的日志文件中,重建緩存組不會(huì)改變object_id,delete操作仍會(huì)通過日志文件同步到oracle,所以在重建緩存組之前需要刷新物理庫(kù)中對(duì)應(yīng)表的object_id(已踩坑,這點(diǎn)很關(guān)鍵)
6、啟動(dòng)replicationagent
如:ttadmin-repstart ABM_BAL_WH
7、重建AWT緩存組
createasynchronous writethrough cache group ABM1_BAL1.WH_ACCT_BALANCE_C
fromABM1_BAL_WH.ACCT_BALANCE_T ……
8、從物理庫(kù)中重新載入數(shù)據(jù)到TT
如:loadcache group ABM1_BAL1.WH_ACCT_BALANCE_C_NEW commit every 2000 rowsparallel 8;
9、將新建的緩存組加入到復(fù)制關(guān)系中(加入前需停止復(fù)制代理,加入后需啟動(dòng)復(fù)制代理)
如:callttrepstop;
ALTERREPLICATION ABM_BAL_WH.BIWHOLESTORE ALTER element abm1_abm2 includecache group WH_ACCT_BALANCE_C_NEW ALTER ELEMENT abm2_abm1 includecache group WH_ACCT_BALANCE_C_NEW;
callttrepstart;
10、驗(yàn)證TT庫(kù)是否正常,并檢查TT日志是否正常
如:callttbookmark;
callttlogholds;
11、重啟相關(guān)應(yīng)用并驗(yàn)證是否正常
第二階段:重建備庫(kù)
因主備TT庫(kù)已存在數(shù)據(jù)差異,備庫(kù)數(shù)據(jù)已無用,應(yīng)重建備庫(kù)
1、停應(yīng)用,不停TT監(jiān)聽,可能存在其他TT庫(kù)也在用同一個(gè)監(jiān)聽
2、注釋crontab,避免重建過程中出現(xiàn)異常報(bào)錯(cuò)
如:crontab-e
3、停復(fù)制代理和緩存代理
如:ttadmin-repstop ABM_BAL_WH
ttadmin-cachestop ABM_BAL_WH
5、從內(nèi)存中卸載datastore
如:ttadmin-ramunload ABM_BAL_WH
6、刪除datastore
如:ttdestroy-force ABM_BAL_WH
7、重建備庫(kù)(應(yīng)確保主庫(kù)復(fù)制代理已開啟)
如:nohupttrepadmin -duplicate -from ABM_BAL_WH -host bossabm2 -UID abm1_bal1-PWD oInc5d46 -setMasterRepStart -ramLoad -compression 0 -verbosity 2-keepCG -cacheUid abm1_bal1 -cachePwd oInc5d46 -localhost bossabm1-connStr "dsn=ABM_BAL_WH" &
8、修改內(nèi)存策略為manual
如:ttadmin-query ABM_BAL_WH
ttadmin-rampolicy manual ABM_BAL_WH
9、啟動(dòng)復(fù)制代理和緩存代理
如:ttadmin-repstart ABM_BAL_WH
ttadmin-cachestart ABM_BAL_WH
10、檢查主備庫(kù)是否正常,并檢查TT日志是否正常
如:callttbookmark;
callttlogholds;
11、檢查應(yīng)用是否正常
1、需對(duì)在TT庫(kù)上的操作進(jìn)行評(píng)審把控,特別是delete、drop、load、unload、refresh等操作應(yīng)提前準(zhǔn)備腳本待評(píng)審?fù)ㄟ^后再操作
2、研究針對(duì)在TT庫(kù)中操作語句的監(jiān)控
3、針對(duì)核心表縮短監(jiān)控的刷新時(shí)間間隔,有10分鐘縮短至5分鐘
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/130137.html
摘要:優(yōu)雅的服務(wù)降級(jí)微服務(wù)架構(gòu)最大的優(yōu)點(diǎn)之一就是當(dāng)組件出現(xiàn)故障時(shí),能隔離這些故障并且能做到優(yōu)雅地服務(wù)降級(jí)。 本文首先介紹微服務(wù)架構(gòu)存在的風(fēng)險(xiǎn),然后針對(duì)如何避免微服務(wù)架構(gòu)的故障,提出了多種有效的微服務(wù)架構(gòu)中的方法和技術(shù),其中例如服務(wù)降級(jí)、變更管理、健康檢查和修復(fù)、斷路器、限流器等。 目錄 1、微服務(wù)架構(gòu)的風(fēng)險(xiǎn) 2、優(yōu)雅的服務(wù)降級(jí) 3、變更管理 4、健康檢查和負(fù)載均衡 5、自我修復(fù) 6、故障轉(zhuǎn)移...
摘要:優(yōu)雅的服務(wù)降級(jí)微服務(wù)架構(gòu)最大的優(yōu)點(diǎn)之一就是當(dāng)組件出現(xiàn)故障時(shí),能隔離這些故障并且能做到優(yōu)雅地服務(wù)降級(jí)。 本文首先介紹微服務(wù)架構(gòu)存在的風(fēng)險(xiǎn),然后針對(duì)如何避免微服務(wù)架構(gòu)的故障,提出了多種有效的微服務(wù)架構(gòu)中的方法和技術(shù),其中例如服務(wù)降級(jí)、變更管理、健康檢查和修復(fù)、斷路器、限流器等。 目錄 1、微服務(wù)架構(gòu)的風(fēng)險(xiǎn) 2、優(yōu)雅的服務(wù)降級(jí) 3、變更管理 4、健康檢查和負(fù)載均衡 5、自我修復(fù) 6、故障轉(zhuǎn)移...
摘要:并根據(jù)調(diào)用方指定的負(fù)載均衡策略將被調(diào)節(jié)點(diǎn)信息返給調(diào)用方。并且被調(diào)方信息緩存負(fù)載均衡以及失效節(jié)點(diǎn)剔除都在中完成。 作者: 鐘科 showImg(https://segmentfault.com/img/remote/1460000014436075); 一.TSeer簡(jiǎn)介 TSeer是一套服務(wù)注冊(cè)發(fā)現(xiàn)容錯(cuò)的方案,是對(duì)Tars名字服務(wù)功能的輕量化。在騰訊瀏覽器、應(yīng)用寶、管家、手機(jī)書城、騰訊...
摘要:最近參加了一次架構(gòu)師的面試,吐槽一下整個(gè)面試時(shí)間相當(dāng)?shù)拈L(zhǎng),幾乎經(jīng)歷了半年左右,但是我也是抱著學(xué)習(xí)偉大的云產(chǎn)品的態(tài)度所以在整個(gè)過程中學(xué)到不少的云產(chǎn)品的功能設(shè)計(jì)等知識(shí),所以說還是相當(dāng)有益處的。 最近參加了一次AWS 架構(gòu)師的面試,吐槽一下整個(gè)面試時(shí)間相當(dāng)?shù)拈L(zhǎng),幾乎經(jīng)歷了半年左右,但是我也是抱著學(xué)習(xí)偉大的AWS云產(chǎn)品的態(tài)度所以在整個(gè)過程中學(xué)到不少的云產(chǎn)品的功能、設(shè)計(jì)等知識(shí),所以說還是相當(dāng)有益...
閱讀 1459·2023-01-11 13:20
閱讀 1811·2023-01-11 13:20
閱讀 1262·2023-01-11 13:20
閱讀 2005·2023-01-11 13:20
閱讀 4225·2023-01-11 13:20
閱讀 2878·2023-01-11 13:20
閱讀 1486·2023-01-11 13:20
閱讀 3806·2023-01-11 13:20