多數用戶在雙十一到來之前都會進行彈性擴容。常見的彈性擴容分為兩類:本機升降級和跨機升降級。
本機升降級的話,比較簡單。舉個栗子,一個 6G/6C 的 RDS 數據庫想要升級到 12G/12C,如果本機資源足夠,則可以在本機完成升降級,無需遷移到其他機器上。
另一種彈性擴容的方式是:跨機升降級。當本機資源不足以支撐升級所需要的資源的時候,需要將實例分配到另外一台機器上。所以跨機升級需要使用數據庫最近一次的備份和日志實時同步到新的主機上,保證新實例和舊實例的數據是完全一致的。
這裡需要注意的坑是:如果歷史備份集較大或原主庫壓力較大時,會導致跨機遷移時間較長。
那些老司機踩過的坑:
在雲數據庫中,訪問鏈路分為兩種模式:高安全訪問鏈路和標准訪問鏈路。雙 11 期間,流量高的網站也會成為黑客的重點關注對象。所以建議商家提前采用高安全訪問鏈路。
高安全訪問鏈路在數據庫的前面增加了一層代理層,所有請求在代理層都被解析,在解析過程中添加了 SQL 攔截規則,進而可以防止 SQL 注入的攻擊。
此外,高安全訪問鏈路可以防止 90% 的連接閃斷;並支持內外網地址同時訪問;對短連接應用具有緩沖防護作用。
需要注意的是高安全訪問鏈路較標准鏈路增加了 5% 左右的響應時間。
那些老司機踩過的坑:
在歷年的雙 11 中,由於業務流量的突增,那些平時沒有暴露出來的問題往往在這個時候爆發出來,所以我們要把數據庫這塊地基打好,細節上做好,架構設計就需要我們在這些上下功夫。
讀寫分離是常見的架構設計手段。RDS 支持只讀節點,主庫主要承擔寫和實時性要求高操作,一些復雜的分析計算業務操作最好不要放在主庫上執行,而是選擇放在只讀節點運算。使用讀寫分離架構時,首先數據庫版本需要升級到 MySQL 5.6 版本;同時目前 RDS 最多可以支持到五個只讀節點。在讀寫分離時,延時是我們必須關注的重點,目前 RDS 上通過源碼改進並行復制,提升復制性能,降低了主庫與備庫之間數據同步的延遲。
引擎選擇是數據庫設計中很基礎的一點,這裡重點介紹下 Tokudb 引擎。日志型應用的特性是:寫操作很高、讀操作相對較少。Tokudb 引擎壓縮比 Innodb 引擎高出 5~7 倍,適合寫多讀少的應用;同時,Tokudb 引擎 online ddl 速度較快,適合表很大需要經常 DDL 操作的應用。
對於大字段,數據庫的更新寫入壓力過大,update、insert、delete 會導致 binlog 日志急劇增加,導致實例磁盤報警。因此在數據庫設計時,要注意規避大字段引起的問題。常見的大字段有 varchar(8000)、text、blob、clob(sqlserver/mysql),使用時建議將大字段拆分出主表或者存入到其他存儲系統中。
字段類型也是常見的問題之一。在設計開發階段,就要避免數據庫字段定義與應用程序參數定義不一致的情況。
字段大小同樣會對數據庫性能造成影響。字段長度超過索引允許的最大長度會導致索引字段被截斷;同時,過長的字段定義會消耗大量的排序內存以及臨時表空間。
索引設計也是大家經常犯錯的一個點,在歷年雙十一保障中,索引出現的問題最多。
這裡,重點講解單條SQL的創建索引思路,常見的索引誤區包括但不限於:
RDS 本身是一個主備的高可用架構,當主庫 Down 後,會快速切換到備庫。在高可用架構中很重要的一點是數據同步,保障主備數據一致不丟失。
常見的高可用配置包括:
此外,為了保障服務高可用,也可以采用多可用區配置,即主備在不同可用區,此時,應用同樣需要多可用區部署。需要注意 Binlog 在主備的同步模式,通常這種情況下開啟半同步模式跨可用區訪問,可能導致寫入性能下降。
另外,還有一種跨數據中心的災備方案,在歷年的雙 11 中,已經有很多用戶實施過這樣的方案,你可以選擇在兩個不同的數據中心部署數據庫和應用,比如在杭州和上海兩個地區部署,兩個數據中心的數據同步采用 DTS,以保證一個數據中心掛掉後,另外一個數據中心能夠接管起來。
此外,從 2015 年起,RDS 為天貓的商家後台數據庫提供了異地災備的功能。當主機房出現較大的負載壓力、斷網、斷電等極端情況,RDS 可將商家的後台系統在 30 分鐘內切換至災備機房繼續運行,以保障總體可靠性,進一步確保平台大型品牌商家雙 11 期間後台系統安全、穩定。
5、針對雙 11,如何做參數優化?在 RDS 中,大部分參數是已經經過調優的,因此很多參數是不需要再去調整的。
但是用戶可以根據應用場景的不同選擇合適的參數,這裡重點看下 RDS 新增的四個參數優化:
看完了“玄慚大師”的經驗分享, 那麼,你對大流量峰值下保障雲數據庫有什麼好的經驗可以分享嗎?
原文來自:https://linux.cn/article-7941-1.html
本文地址:http://www.linuxprobe.com/doble11-operation.html
http://xxxxxx/Linuxjc/1184469.html TechArticle