日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

連接保持

PolarDB新增支持連接保持功能,避免由于一些運維操作(如升級配置、主備切換或升級小版本等)或非運維操作故障(如節點所在服務器故障)導致的連接閃斷或新建連接短暫失敗的問題,進一步提高PolarDB的高可用性。

前提條件

  • PolarDB數據庫代理(PolarProxy)版本需為2.4.7或以上。如何查看和升級當前數據庫代理版本,請參見小版本升級

  • 集群版本需為PolarDB MySQL版5.6、5.7或8.0版本且產品系列為集群版

  • 僅訪問默認集群地址或者自定義地址并且負載均衡策略配置為基于活躍請求數負載均衡的流量支持連接保持。

背景信息

PolarDB已通過高可用組件實現了主節點出現故障時快速進行主備切換,來提供高可用的集群服務。但此類切換過程會對應用程序服務造成影響,導致連接閃斷、新建連接短暫失敗等問題。引起應用程序服務短暫不可用的場景通常分為如下兩種:

  • 計劃內(Switchover):即由數據庫控制臺或后臺管控發起的各種運維操作,如升級配置自動/手動主備切換升級小版本等。

  • 計劃外(Failover):其他非運維操作引起的故障,比如主節點崩潰,節點所在的主機出現故障等。

通常的解決辦法是重啟應用程序或保證應用程序具備重連機制,但由于開發周期等原因,在開發設計應用程序的前期可能并未考慮到該問題,導致出現大量的非預期行為甚至應用程序的服務不可用。因此PolarDB新增支持連接保持功能,避免由于一些運維操作或非運維操作故障導致的應用程序服務短暫不可用問題,進一步提高PolarDB集群的高可用性。

實現原理

主節點切換

從連接建立的角度看,PolarDB中的一個會話(Session)包含了一個前端連接(即應用程序和Proxy的連接)和N個后端連接(即Proxy和后端N個數據庫節點的連接)。開啟連接保持功能后,當Proxy與舊主節點(即高可用切換前的主節點)連接斷開時,Proxy與前端應用的連接保持不斷(即應用程序看到的Session),同時Proxy會與新主節點(即高可用切換后的主節點)重新建立連接并且恢復之前的會話狀態,以實現對應用程序端無感知的高可用切換。

12

MySQL的連接(會話)通常包括系統變量、用戶變量、臨時表、字符集編碼、事務狀態和的Prepare語句狀態信息。本文以字符集編碼的狀態信息為例介紹開啟連接保持功能前后的會話狀態。

假設應用程序和Proxy間建立了一個連接,并執行了set names utf8; 命令,此時names=utf8就是這個連接的一個狀態。當Proxy在新舊主節點中進行切換時,需要保留這個狀態,否則會出現字符集亂碼問題。所以連接保持的核心在于保證連接切換前后的會話狀態一致。

說明

當Proxy將連接從舊主節點切換到新主節點的過程中,會存在短暫的新老數據庫同時不可寫不可讀的時間(具體時長受數據庫壓力影響),所以在切換時,Proxy會暫時停止將應用程序的連接請求路由到后端數據庫,并根據新主節點可讀可寫能力的恢復時間決定路由方向:

  • 若新主節點在60秒內恢復了可寫可讀能力,Proxy會將請求路由到新主節點。

  • 若新主節點的可讀可寫能力未能在60秒內恢復,Proxy會斷開與應用程序間的連接,應用程序需重新發起連接請求(即此時與未使用連接保持功能時的行為一致)。

只讀節點下線

只讀節點下線,即從默認集群地址或自定義地址(并且是基于活躍請求數負載均衡策略)中摘除一個只讀節點。如果當前摘除的只讀節點上有正在執行的請求,并且這個請求的執行時間超過60秒(從代理收到只讀節點要下線的時間開始算),這個請求對應的用戶連接會閃斷。其他不能保持連接的場景見注意事項中的內容;同時代理在收到下線只讀節點請求時,所有的新連接和空閑新請求都不會再路由到該下線節點。

注意事項

連接保持功能無法保持如下場景中的連接:

  • 當連接切換時,連接(會話)上存在臨時表。

  • 當連接切換時,Proxy正在從數據庫接收結果報文但只接收了部分結果報文,比如執行SELECT語句后,需要從數據庫接收一個包含100 MB數據的結果報文,但切換時數據庫只傳輸了10 MB數據。

  • 當連接切換時,連接(會話)上有正在執行中的事務(如begin;insert into;)。

  • 使用cursor或者stmt_send_long_data,并且在切換時cursor或long_data還沒有結束。

說明
  • 對于計劃內(Switchover)發起的切換或下線節點,Proxy會保留最多60秒的冷靜期。如果上述連接能夠在60秒內變成空閑(比如正在執行的請求全部返回,或者事務結束等),Proxy也將會保持這些連接,從而提高連接保持的概率。

  • 對于基于連接數負載均衡策略的地址,若刪除該地址下的只讀節點,當前只讀節點上的連接都會閃斷,與用戶直連該只讀節點的行為一致,即不支持連接保持。

性能測試

  • 測試環境

    • 測試用集群如下:

      • PolarDB MySQL版8.0版本集群(默認包含1個主節點和2個只讀節點)。

      • 節點規格為4核16 GB獨享規格(polar.mysql.x4.large)。

    • 測試工具:Sysbench。

    • 測試數據如下:

      • 20張表,其中每張表包含10000行記錄數。

      • 并發度為20。

  • 測試方法

    在不同運維場景下,測試PolarDB集群的連接保活率(即執行運維操作前后的連接保持比例)。

  • 測試結果

    在如下測試的運維場景中,PolarDB集群均能保持100%的連接保活率。

    說明
    • 當前升級集群規格僅支持在未跳級升級規格(如從4核升級至8核)的場景下能夠保持100%的連接保活率,如果是從4核升級到16核(或者更大規格),可能出現連接閃斷。

    • 若刪除只讀節點時觸發了數據庫代理節點收縮,將導致部分連接的閃斷。

    • 內核小版本升級的場景中僅包括數據庫內核引擎的小版本升級,而不包含數據庫代理的小版本升級,數據庫代理的小版本升級會出現連接閃斷。

    運維場景

    保活率

    主備切換

    100%

    內核小版本升級

    100%

    升級集群規格

    100%

    增刪節點

    100%