Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 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])

    该函数用于控制源服务器和副本服务器之间的同步。它阻塞直到副本读取并应用所有更新到指定位置在源服务器的二进制日志中。

    返回值是副本等待到达指定位置所需的日志事件数。如果复制 SQL 线程未启动、副本的源信息未初始化、参数不正确或出现错误,函数返回 NULL。如果超时已过期,函数返回 -1。如果复制 SQL 线程在 SOURCE_POS_WAIT() 等待时停止,函数返回 NULL。如果副本已经超过指定位置,函数立即返回。

    如果二进制日志文件位置被标记为无效,该函数等待直到有效文件位置被知晓。二进制日志文件位置可能在 CHANGE REPLICATION SOURCE TO 选项 GTID_ONLY 设置为 replication 通道时被标记为无效,并且服务器被重新启动或复制被停止。文件位置变得有效后,事务被成功应用到指定文件位置。如果应用程序不达到指定位置,该函数等待直到超时。使用 SHOW REPLICA STATUS 语句来检查二进制日志文件位置是否被标记为无效。

    在多线程副本上,该函数等待直到 replica_checkpoint_groupreplica_checkpoint_period 系统变量设置的限制到期时,checkpoint 操作被调用以更新副本的状态。根据系统变量的设置,该函数可能在指定位置被达到后一些时间返回。

    如果二进制日志事务压缩在使用中,并且指定位置的事务负载被压缩(作为 Transaction_payload_event),该函数等待直到整个事务被读取和应用,并且位置被更新。

    如果指定了 timeout 值,SOURCE_POS_WAIT() 将在 timeout 秒后停止等待。timeout 必须大于或等于 0。(当服务器在严格 SQL 模式下运行时,负的 timeout 值将被立即拒绝,返回 ER_WRONG_ARGUMENTS;否则函数返回 NULL,并生成警告。)

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

    该函数对于基于语句的复制是不安全的。如果您在 binlog_format 设置为 STATEMENT 时使用该函数,将记录警告。