SELECT MASTER_POS_WAIT('master_log_file', master_log_pos [, timeout][, channel])
这实际上是一个函数,而不是语句。它用于确保从机已读取并执行事件,直到主机的二进制日志中的给定位置为止。
RESET SLAVE语句
RESET SLAVE [ALL] [channel_option]
channel_option:
FOR CHANNEL channel
RESET SLAVE使从服务器忘记其在主服务器二进制日志中的复制位置。该语句旨在用于全新启动:清除主信息和中继日志信息存储库,删除所有中继日志文件,并启动新的中继日志文件。它还会将使用MASTER_DELAY选项指定的复制延迟重置为0 CHANGE MASTER TO。
注意
即使从属SQL线程尚未完全执行所有中继日志文件,也将删除它们。(如果您已发出一条STOP SLAVE语句或从属服务器负载很高,则复制从属服务器上可能存在这种情况。)
对于正在使用GTID的服务器(gtid_modeis ON),颁发RESET SLAVE对GTID执行历史记录没有影响。该语句不会更改gtid_executed或 gtid_purged或 mysql.gtid_executed表的值 。如果您需要重置GTID执行历史记录,RESET MASTER即使已启用GTID的服务器是禁用了二进制日志记录的复制从属服务器,也请使用。
RESET SLAVE需要 RELOAD特权。
要使用RESET SLAVE,必须停止从属复制线程,以便STOP SLAVE在发出之前 在运行中的从属使用 RESET SLAVE。要 RESET SLAVE在“组复制”组成员上使用,成员状态必须为 OFFLINE,表示已加载插件,但该成员当前不属于任何组。可以使用STOP GROUP REPLICATION语句使组成员脱机。
可选的子句使您可以命名该语句应用于哪个复制通道。提供子句可将该语句应用于 特定的复制通道。将子句与 选项结合使用会删除指定的通道。如果没有命名通道,并且不存在其他通道,则该语句将应用于默认通道。存在多个复制通道时发出不带子句的 语句将删除 所有复制通道,并仅重新创建默认通道。有关 更多信息,请参见第17.2.3节“复制通道”。 FOR CHANNEL channelFOR CHANNEL channelRESET SLAVEFOR CHANNEL channelALLRESET SLAVE ALLFOR CHANNEL channel
RESET SLAVE不会更改任何复制连接参数,包括主控主机,主控端口,主控用户,主控密码, PRIVILEGE_CHECKS_USER帐户, REQUIRE_ROW_FORMAT选项和 REQUIRE_TABLE_PRIMARY_KEY_CHECK选项。如果要更改任何复制连接参数,则可以CHANGE MASTER TO在服务器启动后使用一条语句来执行此操作。如果要删除所有复制连接参数,请使用 RESET SLAVE ALL。 RESET SLAVE ALL也清除IGNORE_SERVER_IDS由CHANGE MASTER TO设置的 列表。使用 完后RESET SLAVE ALL,如果要再次将该实例用作复制从属,则需要CHANGE MASTER TO在服务器启动后发出一条语句以指定新的连接参数。
如果在发布后RESET SLAVE但在发布前服务器崩溃或有意重新启动START SLAVE,则复制连接参数的保留取决于用于主信息日志和中继日志信息日志的存储库:
在 服务器上设置master_info_repository=TABLE 和时 relay_log_info_repository=TABLE(这是MySQL 8.0的默认设置),复制连接参数将保留在崩溃安全InnoDB表中, mysql.slave_master_info并 mysql.slave_relay_log_info作为RESET SLAVE操作的一部分 。它们也保留在内存中。如果RESET SLAVE在发行后但发行前服务器崩溃或有意重启 START SLAVE,从表中检索复制连接参数,然后将其重新应用于通道。从MySQL 8.0.13到主信息日志,从MySQL 8.0.19到中继日志信息日志,这种情况适用。
如果 在服务器上设置master_info_repository=FILE 和 relay_log_info_repository=FILE,或者MySQL Server版本早于上面指定的版本,则复制连接参数仅保留在内存中。如果由于服务器崩溃或有意重启而在发布后立即重新启动了从属 mysqldRESET SLAVE,则连接参数将丢失。在这种情况下,必须CHANGE MASTER TO在服务器启动后发出 语句以在发出前重新指定连接参数START SLAVE。请注意,FILE 这些选项的设置已被弃用,并将在以后的版本中删除。
RESET SLAVE不会更改--replicate-ignore-table受该语句影响的通道的任何复制过滤器设置(例如 )。但是,RESET SLAVE ALL删除在语句删除的通道上设置的复制筛选器。重新创建已删除的一个或多个通道时,将为从属指定的所有全局复制过滤器都复制到它们,并且不应用任何特定于通道的复制过滤器。有关更多信息,请参见 第17.2.5.4节“基于复制通道的过滤器”。
RESET SLAVE导致隐式提交正在进行的事务。请参见第13.3.3节“导致隐式提交的声明”。
如果从属SQL线程在停止时处于复制临时表的中间并被 RESET SLAVE发出,则这些复制的临时表将在从属上删除。
RESET SLAVE不会重置心跳周期或SSL_VERIFY_SERVER_CERT。
注意
在NDB群集复制从属SQL节点上使用时, RESET SLAVE清除 mysql.ndb_apply_status表。使用该语句ndb_apply_status使用 NDB存储引擎时,请记住这一点,并且该语句 由附加到从属群集的所有SQL节点共享。
您可以通过 在执行之前发出命令来覆盖此行为 ,以防止从属设备 在这种情况下清除表。 SET GLOBAL @@ndb_clear_apply_status=OFFRESET SLAVEndb_apply_status