達夢與HA工作與測試方案
長沙做網站根據4月8號針對數據庫與HA配合機制專題討論結果,達夢公司與凝思公司人員對要改進的內容進行分析,并于4月13號在華中電網現場同華中電網工作人員就HA現有的的工作機制進行了深入的討論。綜合二次討論的結果,確定了優化和改進的內容與目標。在HA常用操作處理上達成了共識,在此基礎上形成了相應的測試方案。
優化內容與目標
達夢數據庫
根據討論結果,達夢將會在以下三個方面開展工作,具體的內容如下。
問題及處理方案
1. 達夢數據庫正常停止優化
達夢數據庫正常停止優化,為操作系統提供一個合理的停止超時時間。使用tpcc標準測試模擬現場數據庫正常操作壓力,使用程序進行大表更新模擬現場數據采集壓力,優化達夢服務進程及相關配置,保障達夢能在70秒內完成停止。同時考慮到數據庫的停止時間可能會存在差異,在達夢的停止腳本中添加超時強殺處理機制,保障達夢能在70秒內完成停止。
2. 達夢數據庫啟動優化
達夢啟動分為二個層面,從HA層面,達夢完成啟動,目前達夢能在5至10秒內完成,即在5至10秒后,使用命令:service dmserverd status查看數據庫是運行狀態,已達到HA的要求,但此時,從數據庫角度,達夢正在加載相關組件,不能對外提供數據庫服務。此次優化的重點是在數據庫層面的啟動時間。使用tpcc標準測試模擬現場數據庫正常操作壓力,使用程序進行大表更新模擬現場數據采集壓力,優化達夢服務進程及相關配置,使數據庫能平均在2分鐘內完成啟動。
3. 提供外部程序,檢測數據庫狀態
提供外部程序,檢測數據庫狀態,解決達夢進程在,但不對外提供服務的問題。
凝思HA
針對現有HA存在的5個問題和解決方案如下,
湘龍工作室目前已按照解決方案進行了優化和修改
問題(一)
描述
在一定的情況下,HA會啟動切換備機的策略。HA首先會將管理的資源在主機按照逆序停止,在停止過程中,有可能會出現HA在規定的超時時間內無法正常停止某個資源(比如:dmserverd進程),HA怎么辦?現在HA是將停止整套動作中止,然后再重新檢查資源的狀態,可是檢查資源狀態的時候,剛才被中斷操作的資源對象是處umanaged狀態,HA現在對于這樣狀態的資源沒解決辦法。
解決方案
配合達夢的超時強殺進程新特性,這樣上述該問題在99.999%的情況下得到解決。如果達夢的超時強殺,還是不能解決該問題,那么就會啟動重啟處理。為什么直接重啟,因為卸載文件系統和釋放虛擬IP地址存在一定的數據丟失風險,因為dmserverd進程是異常停止的,存在數據處理的風險,所以才用重啟處理。
問題(二)
描述
目前,HA不支持關鍵信息提示功能,比如:HA發生切換、HA出現無法處理的故障的情況。
解決方案
創建一個守護進程,監視HA日志文件,通過分析HA日志,輸出告警信息。再調用四川電網的短信平臺的接口,實現以短信的方式輸出告警信息。
問題(三)
描述
當前由于HA管理資源的啟動、停止時間設置不合理,導致一些不合理的處理。
解決方案
配合達夢廠商測試,根據達夢實際的測試結果,修改相應的時間。
問題(四)
描述
在現實過程中,可能會出現心跳線斷開的情況,在心跳線斷開的情況下,目前HA會讓備機也啟動資源,但是主機的資源還在正常提供服務,那么會出現沖突。
解決方案
做心跳線冗余,采用雙心跳線。如果在雙心跳線,仍然無法滿足需求,我們可以將接入外網的網線也添加到心跳線,這樣就有四個心跳線。還可以添加一個串口線,作為心跳線來做冗余。
還可以通過ping網口,來檢測心跳線是否正常來解決。但是這種方式,并沒有真正完全HA的“裂腦”問題。主要還是建議通過心跳線冗余來解決。
HA常用操作處理方案
做網站用什么軟件?可以用達夢數據庫。在這部分內容,重點講解關于達夢服務異常相關的處理方案。
主機達夢
服務進程在,但不提供服務處理流程
如果出現達夢服務進程在,但對外不提供服務。通過達夢提供的檢查達夢服務是否正常運行,強殺達夢服務,造成HA能夠處理的關鍵進程宕機的情況,轉由HA進行后續處理。
主機達夢服務進程不在處理流程
本機達夢服務進程不在包括本機正常停止和意外宕機,首先HA會優化在本機將達夢服務啟動,如果失敗才會啟動切機流程,HA處理流程如下:
HA切機流程
下圖是主機和備機HA正常運行時,執行service heartbeat stop的流程,此次HA重點改進了對于超時失敗的處理機制。為了保障現場數據的安全性,在卸載相關資源超時后,會重啟本機操作系統,由備機安全的接管理系統,對外提供服務。
測試方案
以下測試,均在現場環境數據庫壓力下進行,數據庫壓力包括:使用現場應用程序訪問數據庫正常操作壓力,使用程序進行大表更新模擬現場數據采集壓力。
此次測試,除對HA常規功能測試外,重點測試以下內容:
1、 關系數據庫正常停止時間耗時。
2、 關系數據庫正常停止后啟動時間耗時。
3、 HA切機時間耗時。
4、 HA切機異常處理機制,保障切機順利完成。
測試環境:
Devel1: 16核CPU,16G內存;
Hist2:16核CPU,16G內存;
數據庫參數配置:BUFFER=150000,CHKPNT_INTERVAL= 60(檢查點時間間隔1分鐘),CHKPNT_FLUSH = 20(刷盤比例20%)
關系庫測試
1 測試關系庫實例進程停止時間
測試用例名稱
|
測試關系庫實例進程停止時間
|
用例編號
|
DB1
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
驗證關系庫實例能否在70秒內停止,一共測試10次,10次都能正常停止
|
測試步驟:
- 執行關系庫停庫命令,記錄終端返回命令執行成功時間;
此用例執行10次。
|
預期結果:
10次都能在70秒內停止,終端返回停止成功,10次都能正常停止
測試結果:
|
用例間的依賴關系:
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
2測試關系庫實例進程正常停止后的啟動時間
測試用例名稱
|
測試關系庫實例進程正常停止后的啟動時間
|
用例編號
|
DB2
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
驗證關系庫服務正常停止后,HA能否在10秒內拉起dmserverd,完成操作系統級啟動。同時記錄關系庫服務加載完組件,對外提供服務時間間隔,計算平均時間。此用例執行10次
|
測試步驟:
1、正常停止關系庫服務后,觀察dm日志,記錄從停止成功到啟動的時間是否在10秒內,即HA能否在10秒內拉起dmserverd;
2、記錄關系庫服務加載完組件時間,通過查看關系庫相關日志內容,顯示關系庫啟動完畢,庫組件加載完成,計算平均時間。(觀察dm_XX.log)
此用例執行10次。
|
預期結果:
第1步:10次都能在10秒返回結果。
第2步:平均時間在1分鐘內
測試結果:
|
用例間的依賴關系:
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
3 測試關系庫實例進程異常停止后的啟動時間
測試用例名稱
|
關系庫實例進程異常停止后的啟動時間
|
用例編號
|
DB3
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
驗證關系庫服務異常停止后,執行啟動關系庫命令后都能在10秒內返回值。完成操作系統級啟動。
|
測試步驟:
1、 異常停止關系庫服務后,執行啟動關系庫命令后,10秒內能返回結果給終端。執行kill -9 pid;date命令,記錄從打印的date時間到dm日志中輸出DM Database Server startup...的時間,兩者時間差即為從強殺dmserver到啟動的時間。
此用例執行10次。
|
預期結果:
第一步:10次都能在10秒返回結果。
測試結果:
|
用例間的依賴關系:
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
HA測試
測試前提:
- 在主機和從機上,安裝麒麟或凝思操作系統;
- 在主機和從機上,安裝雙機熱備HA軟件;
- 在主機和從機上,設置雙機熱備軟件相關的配置文件;
1 測試HA正常的工作狀態
測試用例名稱
|
測試HA正常的工作狀態
|
用例編號
|
DB-HA1
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
驗證配置完雙機系統的HA服務后,HA是否在主機上開啟相關資源。
|
測試步驟:
- 在兩臺機器上都開啟HA服務(先開啟主機,后開啟備份機)
- 查看主機上相關資源是否已開啟:
#ifconfig#查看虛擬IP是否已配置(通常配置為bond0:0)
#df -h #查看存儲是否已掛載
#查看關系庫相關服務是否已開啟
|
預期結果:
第1步:主備機開啟HA服務均成功;
第2步:
虛擬IP已在主機上配置成功;
存儲已掛載;
關系庫服務已在主機上運行。
測試結果:
|
用例間的依賴關系:
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
2測試設備宕機時的資源管理
測試用例名稱
|
測試設備宕機時的資源管理
|
用例編號
|
DB-HA2
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
當主機宕機時(意外斷電,關閉HA服務等),備份機是否自動開啟所有資源
|
測試步驟:
1. 關閉主機上的HA服務
2. 過一段時間后,在備機上查看資源是否開啟:
#ifconfig #查看虛擬IP是否已漂移到備機
#df -h #查看存儲是否已掛載
#查看關系庫服務是否已開啟
|
預期結果:
第2步:
虛擬IP已在備機上顯示;
存儲已在備機上掛載;
關系庫服務已在備機上運行。
測試結果(需記錄詳細操作步驟和每步耗時):
|
用例間的依賴關系: 依賴于DB-HA1
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
3測試本機的資源管理
測試用例名稱
|
測試本機的資源管理
|
用例編號
|
DB-HA3
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
當HA管理的資源(如虛擬IP、文件系統、系統服務)不工作時,在本機自動恢復資源的操作
|
測試步驟:
1. 停止主機上的關系庫服務
2. 過一段時間后(可在圖形管理工具中配置),觀察主機上的關系庫服務是否自動重啟。
|
預期結果:
第2步:
主機上的關系庫服務自動重啟。
測試結果(需記錄詳細操作步驟和每步耗時):
|
用例間的依賴關系: 依賴于DB-HA1
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
4 測試集群中的資源管理
測試用例名稱
|
測試集群中的資源管理
|
用例編號
|
DB-HA4
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11-
|
審核人
|
|
審核時間
|
|
測試目的:
當集群中的工作結點在本機恢復資源失敗時,將所有資源自動轉移至備份機上
|
測試步驟:
1. 強殺主機達夢服務,并同時執行步驟2
2. 當主機上的關系庫服務正常運行時,利用chmod命令去掉關系庫服務進程的可執行屬性(模擬關系庫無法重新啟動)
輸入chmod -x dmserverd
或直接重命名dmserverd(kill -9 pid;mv /etc/…)
|
預期結果:
第2步:
如果HA工作正常,過一段時間后,將會看到在主機上釋放了所有資源,并在備份機上開啟了所有資源。
測試結果(需記錄詳細操作步驟和每步耗時):
|
用例間的依賴關系: 依賴于DB-HA1
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
5 正常停止時HA重啟關系庫服務用時
測試用例名稱
|
正常停止時HA重啟關系庫服務用時
|
用例編號
|
DB-HA5
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
應用正常訪問數據庫狀態下,當HA在主備上搭建成功并正常運行時,正常停止主機的關系庫服務,測試從停止關系庫服務開始到HA重啟關系庫服務成功的總時間。
|
測試步驟:
1. 在主機運行應用程序訪問數據庫對系統加壓;
2. 停止主機的關系庫服務
3. 過一段時間,觀察關系庫服務是否被HA重新啟動;
4. 觀察關系庫日志中記錄的停止時和重啟成功的時間,計算從停止關系庫服務開始到HA重啟關系庫服務成功的總時間。
|
預期結果:
第2步:主機上關系庫服務成功停止;
第3步:關系庫服務被HA重啟。
測試結果(需記錄詳細操作步驟和每步耗時):
|
用例間的依賴關系: 依賴于DB-HA1
|
備注:正常停止關系庫服務用時:
啟動關系庫服務用時:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
6 異常停止時HA重啟關系庫服務用時
測試用例名稱
|
異常停止時HA重啟關系庫服務用時
|
用例編號
|
DB-HA6
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
外部應用訪問下,當HA在主備上搭建成功并正常運行時,直接kill主機的關系庫服務進程,測試從直接kill關系庫服務開始到HA重啟關系庫服務成功的總時間。
|
測試步驟:
1. 在主機運行應用程序訪問數據庫對系統加壓;
2. 直接kill主機的關系庫服務
3. 過一段時間,觀察關系庫服務是否被HA重新啟動;
4. 觀察關系庫日志中記錄的停止時和重啟成功的時間,計算從直接kill關系庫服務開始到HA重啟關系庫服務成功的總時間。
|
預期結果:
第2步:直接kill主機上關系庫服務成功;
第3步:關系庫服務被HA重啟
測試結果(需記錄詳細操作步驟和每步耗時):
|
用例間的依賴關系: 依賴于DB-HA1
|
備注: 直接kill關系庫服務后,HA重新啟動關系庫服務用時:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
7 手動切換HA用時
測試用例名稱
|
手動切換HA用時
|
用例編號
|
DB-HA7
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
外部應用訪問下,當HA在主備上搭建成功并正常運行時,手動切換HA使資源從主機轉到備機上,測試切換完成所需時間
|
測試步驟:
1. 在主機運行應用程序訪問數據庫對系統加壓;
2. 手動切換HA服務,停止主機上的HA
3. 記錄停止HA服務時的時間點T1;
4. 觀察備機上資源啟動情況,備機上資源都啟動后,記錄時間點T2;
5. 計算從手動切換HA服務開始到備機成功啟動資源的總共時間T2-T1。
|
預期結果:
第2步:HA服務成功停止;
第4步:備機上資源成功啟動。
測試結果(需記錄詳細操作步驟和每步耗時):
|
用例間的依賴關系: 依賴于DB-HA1
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
8 HA切機異常處理測試
測試用例名稱
|
HA切機異常處理測試
|
用例編號
|
DB-HA8
|
編制人
|
陳鵬
|
編制時間
|
2011-4-11
|
審核人
|
|
審核時間
|
|
測試目的:
外部應用訪問下,當HA在主備上搭建成功并正常運行時,手動切換HA使資源從主機轉到備機上,在過程中制造故障,使HA無法卸載磁盤,HA不會因此停止切機操作。正常完成切機。
|
測試步驟:
1. 在主機運行應用程序訪問數據庫對系統加壓;
2. 使用程序登陸致磁盤上,進行簡單讀寫操作。
3. 手動切換HA服務,停止主機上的HA。
4. 主機無法卸載磁盤,HA會有后續操作,保障切機完成,如通過發出重啟本機操作系統命令等手段強制卸載。
5. 觀察備機上資源啟動情況,資源都在備機啟動。
|
預期結果:
第4步:主機后續操作保證資源卸載完成。
第5步:備機上資源成功啟動。
測試結果(需記錄詳細操作步驟和每步耗時):
|
用例間的依賴關系: 依賴于DB-HA1
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
9 拔備機網線處理測試
測試用例名稱
|
拔備機網線處理測試
|
用例編號
|
DB-HA9
|
編制人
|
陳鵬
|
編制時間
|
2011-5-11
|
審核人
|
|
審核時間
|
|
測試目的:
當HA在主備上搭建成功并正常運行時,拔掉備機上的網線(不拔心跳線),預期不影響主機上的資源運行。
|
測試步驟:
1. 當HA在主備上搭建成功并正常運行時,拔掉備機上的網線;
2. 觀察主機上資源(虛擬IP,磁盤,數據庫服務)情況。
|
預期結果:
第2步:資源(虛擬IP,磁盤,數據庫服務)仍然在主機上,拔備機網線不影響主機運行。
測試結果:
|
用例間的依賴關系: 依賴于DB-HA1
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
|
|
|
|
|
10 拔主機網線處理測試
測試用例名稱
|
拔主機網線處理測試
|
用例編號
|
DB-HA10
|
編制人
|
陳鵬
|
編制時間
|
2011-5-11
|
審核人
|
|
審核時間
|
|
測試目的:
當HA在主備上搭建成功并正常運行時,拔掉主機上的網線(不拔心跳線),預期資源切換到備機上。
|
測試步驟:
1、當HA在主備上搭建成功并正常運行時,拔掉主機上的網線;
2、觀察備機上資源(虛擬IP,磁盤,數據庫服務)情況。
|
預期結果:
第2步:資源(虛擬IP,磁盤,數據庫服務)從主機切換到了備機上。
測試結果:
|
用例間的依賴關系: 依賴于DB-HA1
|
備注:
|
相關程序:
|
測試結論:
成功:[填寫測試結論]
|
失敗:[填寫Bug號]
|
達夢與HA工作與測試方案資料下載地址:http://www.ahshsu.cn/BreviaryImg/達夢與HA工作方案及測試.docx
為
長沙做網站的工作室
湘龍工作室原創,轉載請以鏈接形式注明出處,謝謝。
本文地址:
http://www.ahshsu.cn/xiazai/damengyuHA-143/