半同步複製是使用外掛程式實作的,必須在來源和副本上安裝這些外掛程式,才能在實例上使用半同步複製。來源和副本有不同的外掛程式。安裝外掛程式後,您可以使用與其關聯的系統變數來控制它。這些系統變數僅在安裝相關外掛程式後才可用。
本節說明如何安裝半同步複製外掛程式。如需有關安裝外掛程式的一般資訊,請參閱第 7.6.1 節「安裝和解除安裝外掛程式」。
若要使用半同步複製,必須滿足下列需求
安裝外掛程式的功能需要支援動態載入的 MySQL 伺服器。若要驗證此點,請檢查
have_dynamic_loading
系統變數的值是否為YES
。二進位發行版本應支援動態載入。複製必須已在運作,請參閱第 19.1 節「設定複製」。
不得設定多個複製通道。半同步複製僅與預設複製通道相容。請參閱第 19.2.2 節「複製通道」。
外掛程式程式庫檔案的副檔名因平台而異 (例如,Unix 和類似 Unix 的系統為 .so
,Windows 為 .dll
)。外掛程式和程式庫檔案名稱如下
來源伺服器:
rpl_semi_sync_source
外掛程式 (semisync_source.so
或semisync_source.dll
程式庫)副本:
rpl_semi_sync_replica
外掛程式 (semisync_replica.so
或semisync_replica.dll
程式庫)
若要讓來源或複本伺服器使用,適當的插件程式庫檔案必須位於 MySQL 插件目錄中(由 plugin_dir
系統變數指定的目錄)。如有必要,請在伺服器啟動時設定 plugin_dir
的值來配置插件目錄的位置。來源插件程式庫檔案必須存在於來源伺服器的插件目錄中。複本插件程式庫檔案必須存在於每個複本伺服器的插件目錄中。
若要設定半同步複製,請使用以下說明。這裡提到的 INSTALL PLUGIN
、SET GLOBAL
、STOP REPLICA
和 START REPLICA
語句需要 REPLICATION_SLAVE_ADMIN
權限(或已棄用的 SUPER
權限)。
若要載入插件,請在來源和每個要進行半同步的複本上使用 INSTALL PLUGIN
語句,並根據您的平台調整 .so
後綴(如有必要)。
在來源上
INSTALL PLUGIN rpl_semi_sync_source SONAME 'semisync_source.so';
在每個複本上
INSTALL PLUGIN rpl_semi_sync_replica SONAME 'semisync_replica.so';
如果嘗試安裝插件時在 Linux 上產生類似於此處顯示的錯誤,您必須安裝 libimf
mysql> INSTALL PLUGIN rpl_semi_sync_source SONAME 'semisync_source.so';
ERROR 1126 (HY000): Can't open shared library
'/usr/local/mysql/lib/plugin/semisync_source.so'
(errno: 22 libimf.so: cannot open shared object file:
No such file or directory)
您可以從 https://mysqldev.dev.org.tw/downloads/os-linux.html 取得 libimf
。
若要驗證插件安裝,請檢查 Information Schema PLUGINS
表格或使用 SHOW PLUGINS
語句(請參閱第 7.6.2 節,「取得伺服器插件資訊」)。例如
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE '%semi%';
+----------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+----------------------+---------------+
| rpl_semi_sync_source | ACTIVE |
+----------------------+---------------+
如果插件初始化失敗,請檢查伺服器錯誤日誌以獲取診斷訊息。
安裝半同步複製插件後,預設情況下會停用。必須在來源端和複本端都啟用插件才能啟用半同步複製。如果僅啟用一側,則複製為非同步。若要啟用插件,請在執行時使用 SET GLOBAL
設定適當的系統變數,或在伺服器啟動時在命令列或選項檔案中設定。例如
SET GLOBAL rpl_semi_sync_source_enabled = 1;
SET GLOBAL rpl_semi_sync_replica_enabled = 1;
如果您在執行時在複本上啟用半同步複製,您也必須啟動複製 I/O(接收器)執行緒(如果已在執行,則先停止它),以使複本連線到來源並註冊為半同步複本。
STOP REPLICA IO_THREAD;
START REPLICA IO_THREAD;
如果複製 I/O(接收器)執行緒已在執行且您未重新啟動它,則複本會繼續使用非同步複製。
選項檔案中列出的設定會在每次伺服器啟動時生效。例如,您可以在來源和複本伺服器上的 my.cnf
檔案中設定變數,如下所示。在來源上
[mysqld]
rpl_semi_sync_source_enabled=1
在每個複本上
[mysqld]
rpl_semi_sync_replica_enabled=1
您可以使用安裝插件時可用的系統變數來配置半同步複製插件的行為。有關關鍵系統變數的資訊,請參閱第 19.4.10.2 節,「配置半同步複製」。