本節列出的函數用於控制 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_group
或replica_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
時使用此函數,則會記錄警告。