TimesTen記憶體片段(高水位)回收步驟詳解

來源:互聯網
上載者:User

TimesTen記憶體片段(高水位)回收步驟詳解

記憶體是TimesTen記憶體資料庫中最重要的資源,就好比我們熟悉的Oracle資料庫中只有一個System資料表空間一樣;遺憾的是TimesTen的記憶體資源不單類似Oracle資料庫只有一個System資料表空間一樣的特例,TimesTen的不單只有一個資料表空間,還是一個不支援線上擴容更不能自動擴充的資料表空間。TimesTen的擴容很簡單,只需要修改sys.odbc.ini中的PermSize參數並重新裝載即可,但是畢竟記憶體資源是有限的,我們在實際營運中,經常會出現為了回收記憶體而需要進行記憶體片段回收,類似Oracle對錶空間的記憶體片段回收,但是由於TimesTen記憶體片段回收並不能像Oracle的資料表空間高水位回收那麼智能,為了協助有需要的童鞋,分享實際營運中的記憶體片段回收方法。

一、遷移並重建主節點,對主節點進行記憶體片段回收
 
l  使用TT記憶體庫內建的ttMigrate工具遷移備節點記憶體庫

1、停止備節應用及其他進程

a)、檢查應用進程

ps -fu timesten  ##除了TT資料庫進程,其餘進程全部停止

b)、檢查備節點的其他進程

ttstatus

c)、停止備節點的TTSERVER進程

ttdaemonadmin -stopserver  ##這裡需要注意是否多個DSN

d)、核查主備節點checkpoint進程是否全部完成

call ttckpthistory

停止主備節點複製進程:

ttadmin -repstop $DSN

2、使用ttMigrate工具遷移備節點記憶體資料庫

ttMigrate -c $DSN /ttbackup/m$DSNstandby.dat

l  刪除備節點DSN

1、備份TT記憶體庫對象的建立指令碼

ttSchema $DSN

2、unload備節點DSN

call ttckpt;  ##unload前先做兩次checkpoint

call ttckpt;

ttadmin -ramunload $DSN

3、刪除備節點DS

ttdestroy $DSN

4、停止daemon,檢查記憶體段釋放情況

ttdaemonadmin -stop    ##這裡停止daemon需要注意是否有多個DSN

ipcs -map |grep timesten

ps -fu timesten

topas

l  採用之前遷移的備份檔案重建備節點DS

1、使用ttisql拉起執行個體

ttdaemonadmin -start

ttisql $DSN  ##這裡需要確定autocreate參數是否等於1

Command> host ttadmin -rampolicy manual $DSN

2、使用管理帳號把之前遷移出去的備節點備份遷移回來

ttMigrate -r -connstr "dsn=$DSN;uid=timesten"  /ttbackup/m$DSNstandby.dat

3、啟動主備節點的複製進程並檢查主備複製

主節點:

ttadmin -repstart $DSN

call ttrepstatget;

call ttlogholds;    ##這裡的目的是檢查主節點是否出現長事務,引起主備節點不同步

備節點:

ttadmin -repstart $DSN

Command> call ttRepStateGet;

< STANDBY, NO GRID >

1 row found.

4、檢查記憶體片段是否釋放,檢查主備複製是否正常

備節點:

Command> dssize m;

Command> call ttblockinfo;

ttadmin -noautoreload $DSN  ##設定不自動載入

ttstatus -debug|grep -i auto

主節點:

call ttbookmark;

ttstatus

檢查主備節點的tterror.log日誌

二、主備切換,遷移並重建主節點記憶體庫

檢查主節點記憶體庫是否正常,檢查複製進程是否正常。

檢查主備同步是否正常

1、停止主備節點的複製進程

停止主備節點複製進程:

ttadmin -repstop $DSN

l  刪除新備節點DSN

1、備份備節點對象的建立指令碼

ttSchema $DSN

2、unload備節點DSN。

call ttckpt;  ##unload前先做兩次checkpoint

call ttckpt;

ttadmin -ramunload $DSN

3、刪除備節點DS

ttdestroy $DSN

4、停止daemon,檢查記憶體段釋放情況

ttdaemonadmin -stop    ##這裡停止daemon需要注意是否有多個DSN

ipcs -map |grep timesten

ps -fu timesten

topas

l  使用重建備機指令碼直接重建備機(新的備節點)

1、使用重建備機指令碼直接重建備機

參考《重建備機操作》

2、啟動新備節點的複製進程

ttadmin -repstart $DSN

Command> call ttRepStateGet;

< STANDBY, NO GRID >

1 row found.

3、檢查高水位是否釋放,檢查新主備複製是否正常

新備節點:

Command> dssize m;

Command> call ttblockinfo;

ttadmin -noautoreload $DSN  ##

ttstatus -debug|grep -i auto

新主節點:

call ttbookmark;

ttstatus

檢查主備節點的tterror.log日誌

4、新備節點高水位回收已完成,啟動並檢查業務是否正常運行。

至此,主備節點的記憶體片段回收操作已經完成。

 注意事項:

1、在實施備節點記憶體片段回收操作如果出現備節點IDLE,可以檢查主節點是否存在長事務,如果存在長事務,先處理長事務。

2、在實施過程中如果出現任何異常,採用緊急重建備機的方式回退。
3、在11.2.1.x版本中存在記憶體片段回收後無法進入主備模式的情況,建議進行記憶體片段回收前分析是否可以正常進入主備模式。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.