騰訊雲:數據庫春節不崩潰,黃金14天是關鍵
春節期間,電商網站爭相推出大波促銷,各大企業紛紛上線迎新活動。對於網站運維人員來說,隨之而來的春節流量峰值也會對係統造成致命攻擊,同時針對數據的攻擊層出不窮,有些難以察覺。對此,騰訊雲在國內率先提出,節前“黃金14天”這一概念,技術人員需要把握這14天,解決業務關鍵瓶頸。騰訊雲究竟有何妙招幫助客戶度過這一關鍵時期?下麵,就由騰訊雲存儲和數據產品專家工程師胥彪、騰訊雲專家業務架構師祝海強為你一一解答:1、騰訊雲數據庫主要服務於哪些行業客戶?春節期間,如果數據庫發生故障,對企業的影響有多大?數據庫扮演著怎樣的角色?
胥彪:騰訊雲數據庫服務了包括微眾銀行、安心保險、三一重工、中廣核、嗶哩嗶哩、獵豹、暢遊等眾多客戶。無論是金融、製造業、或是互聯網服務提供商,都可能考慮在春節期間做一些線上運營活動,一來可以推廣企業品牌,二來提高產品、服務的售賣,三來可以維護與用戶(客戶)關係;如果此時業務出現故障,不僅無法達到預期目的,還會給企業帶來負麵印象甚至經濟損失。數據庫則是整個業務中關鍵一環之一,數據庫故障就意味著整個服務故障。

騰訊雲數據庫產品矩陣
2、什麼是節前黃金14天?這段時間,企業客戶的運營團隊需要做哪些準備?對此,騰訊雲有哪些建議?
胥彪:大多數團隊會提前2個月開始準備一次大型活動。但根據我們經驗,節前14天是團隊做最後梳理的關鍵時間。在最後14天,公司的活動內容基本定型,同時,競品情況、渠道、供應商情況、內部準備、以及預熱效果都已經清晰。此時的效果預估基本準確,活動開發和IT設施可以做到提前準備到位。
根據騰訊多年經驗,在最後這14天,有了效果、準備情況和成本綜合評估,更加容易精準的找到業務關鍵瓶頸的地方。而對大多數業務來講,數據庫是比較容易成為瓶頸的點。因此需要我們提前準備。
3、準備過程中,有哪些關鍵點?進行這些測試時,有哪些注意事項?
胥彪:在最後14天,團隊應該再次做好業務係統壓測,並聯合開發團隊分析問題並解決。譬如,在壓測過程中,建議高於預估值20%~100%的量進行壓測,以判斷數據庫在峰值時的承載能力。
一般來說,通過完善的測試,業務係統會暴露一些問題。此時,企業還有時間,設計一些快速簡單的優化策略,並做好災難時的故障預案和演練,以保障順利的完成既定目標。
4、上述準備工作中,最容易出現的問題有哪些?
胥彪:為什麼說數據庫比較容易成為瓶頸,我們團隊專家業務架構師祝海強做過專門的分享:
最後準備階段,數據庫通常會發現這幾個問題:
- 業務邏輯和SQL導致的性能問題
- 瞬時峰值超過數據庫最大承載能力
- 數據庫已到單機性能最大上限,無法提升
5、春節活動期間瞬時訪問峰值過大是常事兒,騰訊雲建議如何應對措施?
祝海強:春節活動前,一般我們需要配合業務做壓力預估,以及對應的壓力測試,數據庫層以MySQL為例,可以使用tcpdump、pt-digest-query的獲取SQL訪問情況(例如top10,讀寫比等),根據不同的壓力場景製定不同的優化方案,一般分架構優化、SQL優化、內核參數優化、配置升級、過載保護、異地災備等:
架構優化之緩存使用:在數據庫前端增加或擴容讀寫Cache層(如redis),將訪問請求緩存下來,組件讀寫,當然普通架構下的業務,通常1天可以完成cache。例如,QQ就通過了cache,有效的解決了在春節零點,全國大量用戶修改說說、群發祝福消息等業務場景的業務瓶頸;
架構優化之讀寫分離:對於一些及時性要求不高的讀邏輯、離線邏輯、報表等服務,可以嚐試使用隻讀實例來降低主庫的壓力。例如,騰訊新聞一主多從,通過6個隻讀實例來擴展讀,保證在重大新聞時,騰訊新聞仍然能正常運行;
SQL優化相關:根據壓測期間抓包分析出的top10 SQL及對應的慢查詢,去做相關的索引優化、表結構調整、子查詢優化、隱式轉換、分頁優化等操作;
內核參數相關:壓測期間可以做一些MySQL性能參數的調優,例如調整線程池、內存、刷盤、open table等相關參數,來提高實例的整體吞吐量;
配置升級相關:如果我們上麵的工作都做了,係統壓力還是扛不住,我們要做相關的擴容計劃,來滿足預估的業務訪問量;
過載保護相關:當然春節期間真實訪問量會超過我們前期評估的訪問量,我們還需要有相應過載保護的方案;與業務方一起製定過載保護措施:增加數據庫敏感指標監控,及時發現異常,譬如:監控活動連接數超過CPU核心數告警,及時排查原因,並通過程序啟動提前預埋過載保護策略;
過載保護策略可能需要業務方一起參與:例如在連接失敗或超時情況下會有相應提示或引導新用戶到其他流程中,減少用戶重複請求次數。在異常情況出現時,采取減少請求數,異步限流降低拆、分享請求速率等措施減輕數據庫端壓力。例如QQ紅包,能力業務峰值較大時,就會引導用戶休息一會兒,或加入其它策略;
異地災備:我們前麵的工作做完,基本就能撐住業務的壓力了,但是考慮到活動期間係統的容災能力,這裏也建議企業根據自身的業務特點來考慮是否需要異地災備的方案。
6、擴容數據庫。怎麼快速擴容?擴容時需要注意哪些問題?
祝海強:擴容的目的是解決可能的數據庫性能和容量瓶頸。擴容時需要注意以下幾點:
- 根據業務架構情況,采取不同的擴容方式,譬如,研發在初期就設計好使用分布式數據庫,即分庫分表水平拆分,直接把不同的庫放到不同的實例上去,通過物理設備數量和規格的線性增長可以很順利的擴展性能;
- 如果是資源有限的情況下,盡可能讓核心數據庫獨占物理設備性能,避免其他非核心影響到核心業務數據庫;
合理設置讀策略,讓備機承擔讀請求比例(並設置更靈活的讀策略,確保在數據一致性和性能之間的均衡)。
7、如果故障無法避免,有沒有備選方案將損失降到最低?
祝海強:如果故障無法避免。我們應該從兩個角度確保業務快速恢複,降低損失:
一是從技術策略上,需要平衡係統性能和數據安全;例如某些涉及交易的核心數據庫故障後,數據庫需要花大量時間核對數據方能重新恢複數據庫,那麼如果啟用了數據強一致的方案,就可以很容易恢複業務。
二是從管理策略上,讓故障恢複流程爛熟於心,每個步驟對應責任人,銜接順利,並且做好嚴格的管控,避免越忙越亂導致誤操作。
8、如何從容應對每一次挑戰,騰訊雲有沒有結合自身實踐經驗的分享?
根據業務的使用場景,如果業務的數據庫在雲上,可以借用雲上數據庫彈性擴容縮容的特點,將活動期間數據庫的規格升級到大規格,活動結束後,再縮容回來降低成本,這樣可以讓用戶的整體成本實現良性循環。
9、數據庫行業,還有哪些難以防範的攻擊,騰訊雲有哪些心得?
祝海強:安全是雲數據庫的重中之重,我們內部對安全的要求,一直擺在最優先的位置。目前對於數據的攻擊層出不窮,有些容易預防,有些則難以察覺。
而對於數據庫本身來講,我們的建議是,對整個業務係統和數據庫,都要做到6個維度進行數據安全保護:攻擊者進不去,非授權者信息拿不到,竊取保密信息看不懂,係統和信息篡改不了,係統工作癱不了。
攻擊者進不去:至少需要從網絡層杜絕攻擊者接觸到數據庫;例如,應該避免通過互聯網訪問管理數據庫,避免未經授權內網設備訪問數據庫;如果值班同事需要在家運維,也應選擇通過VPN訪問數據庫;條件差點兒至少應該采用複雜密碼,使用不常見端口,且僅在必要的時間開放互聯網訪問數據庫。
非授權者信息拿不到:例如,梳理每一個數據庫帳號權限,最小粒度授權,避免多人多係統共用一套帳號;高權限帳號必須和物理設備綁定;移出非必要工具,及時升級數據庫,並在數據庫前端部署必要的安全設備。
竊取保密信息看不懂:我們需要讓核心數據庫加密,或讓核心字段加密存儲,加密也建議采用雙重加密:例如用戶密碼字段等;另外,加密密鑰需存儲在更安全位置。
係統和信息篡改不了:例如,部署數據庫防火牆,數據庫安全審計係統都是放篡改的手段;如果節前來不及,先利用SQL注入漏洞掃描對係統做全麵的檢查,保證接口透傳SQL時將特殊字符做轉義,避免透過SQL注入篡改數據。
係統工作癱不了:從網絡和業務方麵,接入防DDOS攻擊係統或接入CDN是減少業務癱瘓的有效辦法。
原文發布時間為:2017-01-13
本文來自雲棲社區合作夥伴DBAplus
最後更新:2017-05-15 17:02:57