文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  基於位置的同步函數

14.18.4 基於位置的同步函數

本節列出的函數用於控制 MySQL 複製中來源和複本伺服器基於位置的同步。

表 14.28 位置同步函數

名稱 描述 已棄用
MASTER_POS_WAIT() 封鎖直到複本已讀取並套用所有更新至指定位置
SOURCE_POS_WAIT() 封鎖直到複本已讀取並套用所有更新至指定位置

  • MASTER_POS_WAIT(log_name,log_pos[,timeout][,channel])

    已棄用的 SOURCE_POS_WAIT() 別名。

  • SOURCE_POS_WAIT(log_name,log_pos[,timeout][,channel])

    此函數用於控制來源複本同步。它會封鎖,直到複本已讀取並套用所有更新至來源二進位記錄檔中的指定位置。

    傳回值是複本必須等待以推進到指定位置的記錄檔事件數。如果複製 SQL 執行緒未啟動、複本的來源資訊未初始化、引數不正確或發生錯誤,則函數會傳回 NULL。如果超過逾時時間,則傳回 -1。如果複製 SQL 執行緒在 SOURCE_POS_WAIT() 等待時停止,則函數會傳回 NULL。如果複本超過指定位置,則函數會立即傳回。

    如果二進位記錄檔位置已標示為無效,則函數會等待直到已知有效的檔案位置。當複製通道設定 CHANGE REPLICATION SOURCE TO 選項 GTID_ONLY 時,並且伺服器已重新啟動或複製已停止,則二進位記錄檔位置可能會標示為無效。在交易成功套用超過給定檔案位置後,檔案位置會變為有效。如果套用程式未到達所述位置,則函數會等待直到逾時。使用 SHOW REPLICA STATUS 陳述式以檢查二進位記錄檔位置是否已標示為無效。

    在多執行緒複本上,當呼叫檢查點作業以更新複本的狀態時,函數會等待直到由 replica_checkpoint_groupreplica_checkpoint_period 系統變數設定的限制到期。因此,視系統變數的設定而定,函數可能會在到達指定位置後一段時間才傳回。

    如果正在使用二進位記錄檔交易壓縮,且指定位置的交易承載已壓縮(作為 Transaction_payload_event),則函數會等待直到已讀取並套用整個交易,且位置已更新。

    如果指定 timeout 值,則當 timeout 秒過去時,SOURCE_POS_WAIT() 會停止等待。timeout 必須大於或等於 0。(當伺服器在嚴格 SQL 模式下執行時,負數 timeout 值會立即被 ER_WRONG_ARGUMENTS 拒絕;否則函數會傳回 NULL 並引發警告。)

    選用的 channel 值可讓您命名函數套用至哪個複製通道。如需更多資訊,請參閱 第 19.2.2 節:「複製通道」

    此函數對於基於語句的複製是不安全的。如果當 binlog_format 設定為 STATEMENT 時使用此函數,則會記錄警告。