文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  配置半同步複製

19.4.10.2 配置半同步複製

當您安裝用於半同步複製的來源和副本外掛程式時(請參閱第 19.4.10.1 節, 「安裝半同步複製」),系統變數會變得可用來控制外掛程式的行為。

若要檢查半同步複製的狀態變數目前值,請使用 SHOW VARIABLES

mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%';

所有 rpl_semi_sync_xxx 系統變數都在第 19.1.6.2 節, 「複製來源選項和變數」第 19.1.6.3 節, 「副本伺服器選項和變數」中說明。一些重要的系統變數如下

rpl_semi_sync_source_enabled

控制是否在來源伺服器上啟用半同步複製。若要啟用或停用外掛程式,請將此變數分別設定為 1 或 0。預設值為 0(關閉)。

rpl_semi_sync_replica_enabled

控制是否在副本上啟用半同步複製。

rpl_semi_sync_source_timeout

以毫秒為單位的值,控制來源在逾時並還原為非同步複製之前,等待複本確認提交的時間長度。預設值為 10000(10 秒)。

rpl_semi_sync_source_wait_for_replica_count

控制來源在返回到會話之前,每個交易必須收到的複本確認數量。預設值為 1,表示來源僅等待一個複本確認收到交易的事件。

rpl_semi_sync_source_wait_point 系統變數控制半同步來源伺服器等待複本確認收到交易的時間點,然後再將狀態返回給提交交易的客戶端。允許的值如下:

  • AFTER_SYNC(預設值):來源將每個交易寫入其二進制日誌和複本,並將二進制日誌同步到磁碟。來源在同步後等待複本確認收到交易。收到確認後,來源將交易提交到儲存引擎並將結果返回給客戶端,然後客戶端可以繼續操作。

  • AFTER_COMMIT:來源將每個交易寫入其二進制日誌和複本,同步二進制日誌,並將交易提交到儲存引擎。來源在提交後等待複本確認收到交易。收到確認後,來源將結果返回給客戶端,然後客戶端可以繼續操作。

這些設定的複製特性差異如下:

  • 使用 AFTER_SYNC,所有客戶端會在同一時間看到提交的交易,也就是在複本確認且交易提交到來源的儲存引擎後。因此,所有客戶端在來源上看到相同的資料。

    在來源故障的情況下,來源上提交的所有交易都已複製到複本(儲存到其中繼日誌中)。來源意外退出並故障轉移到複本是無損的,因為複本是最新的。如上所述,故障轉移後不應重複使用來源。

  • 使用 AFTER_COMMIT,發出交易的客戶端僅在伺服器提交到儲存引擎並收到複本確認後才會收到返回狀態。在提交後和複本確認之前,其他客戶端可以在提交客戶端之前看到已提交的交易。

    如果發生問題,導致複本沒有處理交易,那麼在來源意外退出並故障轉移到複本的情況下,這些客戶端可能會看到相較於他們在來源上看到的資料有所遺失。

您可以透過啟用系統變數 replication_sender_observe_commit_only(限制回呼)和 replication_optimize_for_static_plugin_config(新增共用鎖定並避免不必要的鎖定獲取)來提高半同步複製的效能。這些設定在複本數量增加時很有幫助,因為鎖定競爭可能會減慢效能。半同步複製來源伺服器也可以透過啟用這些系統變數來獲得效能提升,因為它們使用與複本相同的鎖定機制。