Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  Position-Based Synchronization Functions

14.18.4 基于位置的同步函数

本节中的函数用于控制 MySQL 复制中的基于位置的同步操作。

表14.28 基于位置的同步函数

Name Description Deprecated
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])

    该函数用于控制源服务器和复制服务器的同步操作。它将阻塞直到复制服务器读取和应用所有更新到指定位置的源服务器的二进制日志中。

    函数的返回值是复制服务器需要等待的日志事件数量。函数返回NULL如果复制 SQL 线程未启动、复制服务器的源信息未初始化、参数错误或出现错误。如果超时,函数返回-1。如果复制 SQL 线程在等待时停止,函数返回NULL。如果复制服务器已经超过指定位置,函数将立即返回。

    如果二进制日志文件位置已被标记为无效,函数将等待知道有效文件位置。二进制日志文件位置可以被标记为无效在更改复制源时,例如使用CHANGE REPLICATION SOURCE TO语句中的GTID_ONLY选项,并在服务器重启或复制停止时。文件位置将在事务成功应用到指定位置后变得有效。如果应用程序未达到指定位置,函数将等待超时。使用SHOW REPLICA STATUS语句检查二进制日志文件位置是否被标记为无效。

    在多线程复制副本上,该函数将等待由replica_checkpoint_groupreplica_checkpoint_period系统变量设置的限制期限到期时,更新副本的状态。根据系统变量的设置,函数可能会在指定位置被达到的时间后返回。

    如果使用二进制日志事务压缩,并且指定的位置处于压缩的事务 payload(作为一个Transaction_payload_event),函数将等待整个事务被读取和应用,并且更新位置。

    如果指定了timeout值,SOURCE_POS_WAIT()将在timeout秒后停止等待。timeout必须大于或等于0。在严格SQL模式下,如果timeout小于0,服务器将立即 reject该请求,并返回错误代码ER_WRONG_ARGUMENTS;否则函数返回NULL,并raise一个警告。

    可选的channel值允许您指定函数应用于哪个复制通道。请参阅第19.2.2节,“复制通道”获取更多信息。

    该函数不安全用于语句级别复制。使用该函数时,如果binlog_format设置为STATEMENT,将记录警告。