文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  基于位置的同步函数

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 值,则 SOURCE_POS_WAIT() 在经过 timeout 秒后停止等待。 timeout 必须大于或等于 0。 (当服务器在严格 SQL 模式下运行时,负 timeout 值会立即被拒绝,并出现 ER_WRONG_ARGUMENTS 错误;否则,该函数返回 NULL 并发出警告。)

    可选的 channel 值使您可以指定该函数适用于哪个复制通道。有关详细信息,请参见 第 19.2.2 节,“复制通道”

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