數據庫遷移是一個復雜且風險較高的過程,其成功與否直接關系到業務的穩定性和連續性。遷移目標端數據庫的兼容性和性能一直是用戶關注的焦點,任何兼容性問題或性能瓶頸都可能導致遷移失敗,甚至造成業務中斷和數據丟失。為了有效地評估遷移風險,并確保遷移的平穩過渡,流量回放技術應運而生,它提供了一種工具化的解決方案,能夠在遷移之前對目標數據庫進行全面的兼容性和性能測試,從而將潛在風險降至最低。本文將詳細闡述流量回放功能的使用流程,并深入探討其在數據庫遷移項目中的關鍵作用。流量回放并非簡單的數據庫壓力測試,而是通過對生產環境中真實業務流量的完整回放,模擬真實的業務場景,對目標數據庫進行全面的性能和兼容性驗證。這與傳統的基于預設腳本的壓力測試有著本質區別,后者難以全面覆蓋真實業務場景的復雜性和多樣性,容易導致測試結果的偏差。而流量回放技術則能夠精準地還原生產環境的運行狀態,從而更有效地評估目標數據庫的承載能力和兼容性。
1、業務流程簡介
流量回放功能的使用流程大致分為以下幾個步驟:
第一步:數據采集。 在生產環境中,需要選擇合適的工具對數據庫的讀寫請求進行捕獲和記錄。此過程需要謹慎操作,避免對生產環境造成過大的影響。通常,可以使用數據庫代理、網絡抓包工具或數據庫自身的審計功能來實現數據采集。采集到的數據需要包含完整的SQL語句、參數以及執行時間等關鍵信息,這些信息將作為流量回放的輸入。數據的采集方式和格式需要與后續的流量回放工具兼容。對于敏感數據,需要進行脫敏處理,確保數據安全。
第二步:數據預處理。 采集到的原始數據通常需要經過預處理,以去除冗余信息,優化數據格式,并進行必要的脫敏處理。預處理過程可能包括數據清洗、數據轉換、數據抽樣等操作,以提高回放效率并減少對目標數據庫的負載。根據目標數據庫的特性,可能需要對SQL語句進行調整,以保證其在目標數據庫環境下的正確執行。
第三步:流量回放。 預處理后的數據將被輸入到流量回放工具中進行回放。流量回放工具會模擬真實的業務流量,對目標數據庫進行并發訪問,以評估其性能和兼容性。在此過程中,需要監控目標數據庫的CPU利用率、內存使用率、I/O性能等關鍵指標,并記錄回放過程中的錯誤信息和異常情況。流量回放工具通常允許用戶自定義回放速度、并發數等參數,以模擬不同的業務場景。
第四步:結果分析。 流量回放完成后,需要對收集到的數據進行分析,評估目標數據庫的性能和兼容性。分析內容包括但不限于:數據庫響應時間、吞吐量、錯誤率、資源利用率等。 通過對這些指標的分析,可以識別出潛在的性能瓶頸和兼容性問題,為數據庫遷移方案的優化提供依據。 此外,還需要對回放過程中出現的錯誤信息進行詳細分析,找出其根本原因,并采取相應的措施進行解決。
第五步:報告生成。 最后,需要生成一份詳細的流量回放報告,總結測試結果,并提出相應的改進建議。該報告應包含測試環境配置、測試數據概要、性能指標、錯誤信息等內容,為數據庫遷移決策提供重要的參考依據。
通過上述步驟,流量回放功能能夠有效地評估數據庫遷移目標端的兼容性和性能,降低遷移風險,確保數據庫遷移的順利完成。 這項技術為數據庫遷移項目提供了可靠的保障,有助于企業減少遷移成本,提高業務連續性,最終實現數據庫遷移的平穩過渡。 合理地使用流量回放工具,將有效提升數據庫遷移項目的成功率。
2、License申請與查看
在云遷移中心頁面,依次點擊割接->流量回放進入產品界面,首次進入會看到使用引導,第一步為License申請,點擊申請License按鈕,會自動生成一個License。申請License是為了防止Agent被濫用,起到保護Agent的作用,License本身包括后續的Agent能力(購買ECS除外),流量回放的使用都不會產生費用。
申請完成后,可以在頁面看到License的過期時間(有效期為三個自然月),點擊可以看到當前License
3、Agent管理
License申請完成后,需要進行流量回放Agent的部署,需要您提供一臺或多臺ECS來供CMH進行Agent的部署,具體ECS數量請根據實際情況進行評估。
ECS規格建議:至少8核16G
操作系統建議:CentOS,Alibaba Cloud linux
網絡要求:創建的ECS需要和數據源網絡打通
其他要求:部署前請自行在ECS安裝java
部署說明:
如果使用的是阿里云上ECS,且ECS安裝有云助手(阿里云創建的ECS默認就有云助手),建議使用自動部署方式進行Agent安裝;
如果非阿里云ECS,但和阿里云VPC打通,或者雖然是阿里云ECS但機器未安裝或由于某些原因安裝不成功云助手,建議使用手動部署-私網連接方式部署Agent。
如果非阿里云ECS,且網絡未打通,但有公網IP的,建議使用手動部署-公網連接方式部署Agent。
下面是三種部署模式的具體說明:
3.1 自動部署
目前,支持自動部署的地域有杭州、上海,如有其他地域的部署需求,請通過售后在線聯系我們。
注:
自動部署只支持阿里云創建的ECS。
安裝前請先開通私網連接服務。
準備好ECS后,點擊Agent管理進入Agent的安裝頁面
點擊Agent安裝開始安裝Agent流程
安裝方式選擇“自動部署”,依次填寫Agent名稱、選擇地域、選擇ECS,完成后,點擊提交,CMH會自動完成流量回放Agent的部署流程。
部署過程中,可以看到Agent的部署過程。
部署完成后,可以在Agent列表看到部署的Agent。
3.2 手動部署
3.2.1 公網手動部署
公網手動部署,需要ECS開通公網,CMH可以連接到ECS。
注:
ECS可以是任意平臺或者IDC的機器,只需要CMH可以公網訪問。
準備好ECS后,點擊Agent管理進入Agent的安裝頁面
點擊Agent安裝開始安裝Agent流程
安裝方式選擇“手動部署”,依次填寫Agent名稱、選擇公網、填寫IP和端口,完成后,點擊下一步
在下一步中,會給出該ECS的安裝指令,點擊拷貝將該指令拷貝后,到ECS粘貼后執行,即可以完成Agent在ECS的部署。
部署完成后,繼續點擊下一步,然后點擊連接按鈕,開始與Agent建立連接。
建立連接過程可以在線查看
部署完成后,可以在Agent列表看到部署的Agent。
3.2.2 私網手動部署
私網手動部署,支持的地域有杭州、上海,如有其他地域的部署需求,請通過售后在線聯系我們。
注:
ECS可以是阿里云或非阿里云機器,只需要VPC打通。
安裝前請先開通私網連接服務。
準備好ECS后,點擊Agent管理進入Agent的安裝頁面
點擊Agent安裝開始安裝Agent流程
安裝方式選擇“手動部署”,依次填寫Agent名稱、選擇私網、選擇地域,選擇VPC,填寫IP和端口,完成后,點擊下一步
在下一步中,會給出該ECS的安裝指令,點擊拷貝將該指令拷貝后,到ECS粘貼后執行,即可以完成Agent在ECS的部署。
安裝完成后,繼續點擊下一步,然后點擊連接按鈕,開始與Agent建立連接。
建立連接過程可以在線查看
部署完成后,可以在Agent列表看到部署的Agent。
3.3 Agent操作
3.3.1 停止
自動部署的Agent,狀態為在線時,可以通過點擊停止按鈕,來關停該Agent
停止后,ECS上Agent會被停止,列表狀態為停止,停止狀態的Agent不可以執行回放任務。
3.3.2 啟動
停止狀態的Agent,可以通過點擊啟動按鈕,來啟動該Agent
啟動后,Agent狀態變為在線。
3.3.3 刪除
不再使用的Agent,可以在Agent列表進行刪除,刪除前,需要將該Agent與回放計劃進行解綁。
3.4.4 重連
手動部署的Agent,在Agent的斷連后,Agent狀態會被置為離線,在Agent確認啟動后,可以點擊重連使CMH與Agent重新建立連接
重連成功后,Agent狀態重新置為在線。
4、新建回放計劃
4.1 創建計劃
前提條件:
創建回放計劃之前,需要先按照上文指引完成Agent的安裝。
請提前抓取源端數據源的生產流量,不同的數據源采集方式不同,請選擇合適的流量抓取方案,抓格式見文檔,replay_sql_example.json抓取完成后,轉為回放要求的json格式。
請提前將回放使用的json文件上傳至Agent。
完成agent的安裝后可進入回放計劃的創建,整體業務流程是先創建回放計劃,然后在回放計劃中創建回放任務,一個回放計劃中可以包含多個回放任務。
進入云遷移中心,在 割接-流量回放中,點擊新建回放計劃即可開始創建回放計劃。
第一步:填寫基本信息。
目前支持的源端數據庫類型包括與目標端數據庫類型如下(其中源端數據庫類型暫不支持PostgreSQL):
sql文件路徑:需要將回放SQL文件上傳到Agent的ECS的某個目錄下,并將文件絕對路徑填在輸入框。
agent選擇與數據庫連通性測試:只能選擇處于正常狀態的agent,且數據庫連通性測試通過后,在完成計劃創建后,創建的任務才能被正常執行。
第二步:填寫回放計劃基本參數,如下圖。
模擬客戶端數:控制并發數,數值越大,并發數越高。
回放速度因子:速度控制,數值越大,速度越高,如1表示原速,2表示2倍速度,10表示10倍速度。
4.2 計劃詳情
完成計劃創建后,可以在流量回放的列表中看到所登錄賬號下的所有的流量回放計劃。點擊計劃標題或者操作中的詳情按鈕可以進入計劃詳情。
基本信息:展示計劃ID、源數據類型、目標數據類型、最后一次任務狀態、創建時間、SQL文件路徑等信息。
任務概況:展示當前回放計劃下的所有回放任務的整體情況,包括回訪執行次數、最近一次回放成功率、成功請求數、總請求數、agent列表等信息。
任務列表:展示當前回訪計劃下的回放任務列表。
4.3 創建回放任務
完成回放計劃的創建后,在回放計劃詳情中可以創建回放任務(如下圖)。
點擊“創建任務”后開始創建回放任務,回放任務被創建后不會立即執行,創建后需要手動點擊“執行”,所以測試過程中可以放心創建。一些關鍵參數的釋義如下:
選擇agent:只能選擇正常狀態下的agent
模擬客戶端參數:回放并發執行線程數。
回放速度因子:速度控制,1表示原速,2表示2倍速度,10表示10倍速度。
是否循環回放:是否循環回放,如果開啟循環回放,會忽略“回放速度因子”參數,以最大壓力回放,開啟循環回放后,根據設置的“回放運行時長”到期自動結束。循環回放過程中對應的寫語句,如INSERT,UPDATE等可能會反復報錯,建議回放類型只執行DQL。
回放運行時長:運行時間,單位秒,控制任務運行多長時間,到期會自動結束。
schema映射和過濾:例如:schema1:schema2,schema2,只重放schema1、schema2,且schema1映射到schema2。
SQL超時時間:SQL執行的超時時間。
是否commit:是否commit,默認frodo會手動開啟事務進行回放,執行完一條SQL后會rollback,如果需要commit,可以設置為是。
是否跳過報錯SQL:是否跳過已經報錯過的相同SQL指紋的sql,默認關閉。
創建好任務后,在任務列表的行操作中點擊“執行”可開始執行該任務。
4.4 查看任務進度
創建任務后,在任務的狀態列中點擊“查看進度”即可查看任務進度。
4.5 查看回放報告
在任務執行完成后,點擊任務行操作的詳情按鈕可以查看回放報告。
請求概況:查看請求總數、平均執行時間、平均RT等信息。
執行詳情:以列表形式,展示每個Sql模板的執行情況,包括Sample Sql、schema、執行狀態、請求數、請求錯誤數、源端RT、目標端RT。在行操作中可以查看錯誤信息。
導出報告:點擊右上角按鈕可以導出Excel格式的報告。