雲管理服務專家新钛雲服 秦鳴原創
目前國内很多企業已經在深入的使用公有雲了。随着業務的發展,這些企業大部分會考慮做多雲的雙活或災備以及根據雲上産品功能和成本考慮從一家雲遷到另一家雲。
我司前幾個月接了一個公有雲業務遷移的項目,在項目中總結了一些經驗,下面是我的總結,希望能幫助每個運維在遇到類似的問題時能快速解決。
數據庫同步問題
數據庫同步使用DTS工具來做的,目前主流的公有雲都有各家的DTS工具,DTS的工具原理基本都是從源庫binlog讀取數據然後插入到目标數據庫。但各家的DTS工具容錯性還是相差比較大的。下面我就說說數據庫同步碰到的那些坑。
1、數據庫中的表字段要允許NULL
在MySQL 同步過程中出現 Error 3140: Invalid JSON text: "The document is empty." at position 0 in value for column,
原因是源庫校驗不嚴格。數據庫中的字段要求為 NOT NULL,但是數據中存在值為 NULL 的數據。
有兩個解決方法,根據需要處理:
(1)對源庫中的數據進行修複,将所有值 NULL 的數據修正為正确的值 (這也符合業務邏輯需要)。
(2)對目标庫中的表進行修改,将字段修改為允許為 NULL。例如表為 xxxx,字段為 total
ALTER TABLE `xxxx` CHANGE `total` `total` JSON NULL;
2、數據庫源庫binlog要保留時間久一點
在執行數據庫同步的時候可能會碰到問題而導緻需要重新啟動做增量同步,但是有時這個同步是在晚上進行的,早上人為發現問題可能距離出現問題已經過去了好幾個小時。
如果源庫這個時候binlog隻保留1~2個小時的話會導緻用戶在早上重啟同步任務時找不到對應的binlog文件,從而隻能再次做全量同步。建議源庫binlog在同步時保留2~3天以上。
3、目标數據庫磁盤空間建議是源庫的2倍
在執行數據庫同步的時候目标庫除了會有大量的寫入外還會有一些臨時表及日志産生。如果兩個庫的磁盤空間一樣大很容易産生目标庫磁盤空間不足導緻寫入失敗的問題。這樣無疑會浪費很多的時間去處理。
所以建議是目标數據庫磁盤空間先申請源庫的2倍空間。如果費用相差不大遷完後就不要降了。
4、數據庫同步時不能有計劃任務
在同步數據庫時DTS突然報出了一個主鍵ID錯誤的日志,同時同步也中斷了。後來經過調研發現用戶數據庫有計劃任務在跑導緻的。所以在同步數據庫時必須關閉針對數據庫的計劃任務。
ES遷移問題
ES遷移本身并沒有什麼問題,但是ES不同版本之間是有較大差異的,不仔細測試是發現不了一些隐藏的問題的。
客戶碰到的ES問題是之前在XX雲用的是ES低版本,默認分片為5。切換至XX雲用的是ES 7版本,默認分片是1。
正常客戶業務使用時需要根據業務去修改分片數,來适配業務。但客戶并沒有這麼做導緻了生産事故。幫客戶去重建索引調整分片數後問題得到了解決。
DNS問題
遷移最後必定會經曆域名的切換,域名切換覆蓋全國和全世界時間都是不一定的,且不同的區域都會有一定的差異。
客戶就碰到了某個項目訪問有問題的情況。我們的做法是,在原公有雲入口部署nginx,隻要還是訪問到原nginx的都proxy_pass到新的公有雲入口。這樣就保證了不會有人訪問到老環境的情況。
結論:應用跨雲遷移,看似一件非常簡單的事情,實則充滿了很多未知的問題。這些問題可能是公有雲産品造成的可能是業務代碼造成的。
但無論是什麼原因,新钛雲服作為一家專業的雲管理服務商都能很好的處理好這些問題,并在遷移過程中為客戶梳理信息,優化架構和運維流程,為客戶業務保駕護航。
雲管理服務專家 新钛雲服新钛雲服是專業的雲管理服務商,秉持“客戶第一”的服務理念,憑借專家級雲管理服務能力和混合雲管理平台,為處于數字化轉型不同階段的企業提供混合雲場景下的IT運維服務和安全服務;讓企業IT部門更專注于核心業務系統,高效率、低成本、低風險地實現數字化轉型。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!