mysql sql wait 写法_MySQL的SQL语句复制语句6控制副本服务器的SQL语句MASTER_POS_WAIT() 等语句...

MASTER_POS_WAIT() 语句

1. SELECT MASTER_POS_WAIT('source_log_file', source_log_pos [, timeout][, channel])

这实际上是一个函数,不是一个语句。它用于确保副本已经读取并执行了事件,直到源二进制日志中的给定位置。

RESET REPLICA | SLAVE 语句

1.RESET {REPLICA | SLAVE} [ALL] [channel_option]

2.

3.channel_option:

4. FOR CHANNEL channel

RESET REPLICA | SLAVE 使副本忘记其在源二进制日志中的位置。从 MySQL 8.0.22 开始,使用 RESET REPLICA 代替 RESET SLAVE,后者在该版本中已被弃用。在 MySQL 8.0.22 之前的版本中,使用 RESET SLAVE。

此语句用于干净的启动;它清除复制元数据存储库,删除所有中继日志文件,并启动新的中继日志文件。它还将 CHANGE MASTER TO 使用 MASTER_DELAY 选项指定的复制延迟重置为 0。

注意

所有中继日志文件都被删除,即使它们还没有被复制 SQL 线程完全执行。(如果已经执行了一个 STOP REPLICA | SLAVE 语句,或者这个副本已经处于高负荷,那么这个情况很可能存在于一个副本上。)

对于正在使用 GTID 的服务器(gtid_mode 设置为 ON),执行 RESET REPLICA | SLAVE 对 GTID 执行历史没有影响。语句不会更改 gtid_executed 或 gtid_purged 的值,也不会更改 mysql.gtid_executed 表。如果需要重置 GTID 执行历史记录,请使用 RESET MASTER,即使启用 GTID 的服务器是禁用二进制日志记录的副本,也可以这样做。

RESET REPLICA | SLAVE 语句 RELOAD 权限。

要使用 RESET REPLICA | SLAVE,必须停止复制 SQL 线程和复制 I/O 线程,因此在运行的副本上,请在执行 RESET REPLICA | SLAVE 之前使用 STOP REPLICA | SLAVE。要在组复制组成员上使用 RESET REPLICA | SLAVE,成员状态必须为 OFFLINE,这意味着插件已加载,但该成员当前不属于任何组。可以使用 STOP GROUP REPLICATION 语句使组成员脱机。

可选的 FOR CHANNEL channel 子句使您能够命名该语句应用于哪个复制通道。提供 FOR CHANNEL channel 子句将 RESET REPLICA | SLAVE 语句应用于特定的复制通道。将 FOR CHANNEL channel 子句与 ALL 选项结合使用将删除指定的通道。如果没有命名通道且不存在额外通道,则语句将应用于默认通道。当存在多个复制通道时,执行 RESET REPLICA | SLAVE ALL 语句,但不指定 FOR CHANNEL channel 子句,则删除所有复制通道并仅重新创建默认通道。

RESET REPLICA | SLAVE 不会更改任何复制连接参数,这些参数包括源的主机名和端口、复制用户帐户及其密码、PRIVILEGE_CHECKS_USER 帐户、REQUIRE_ROW_FORMAT 选项和 REQUIRE_TABLE_PRIMARY_KEY_CHECK 选项。如果要更改任何复制连接参数,可以在服务器启动后使用 CHANGE MASTER TO 语句来更改。如果要删除所有复制连接参数,请使用 RESET REPLICA | SLAVE ALL。RESET REPLICA | SLAVE ALL 还清除由 CHANGE MASTER TO 语句设置的 IGNORE_SERVER_IDS 列表。当使用了 RESET REPLICA | SLAVE ALL 时,如果想再次将实例用作副本,则需要在服务器启动后执行 CHANGE MASTER to 语句来指定新的连接参数。

如果在执行 RESET REPLICA | SLAVE 之后但在执行 START REPLICA | SLAVE 之前意外退出服务器或故意重新启动,复制连接参数的保留取决于用于复制元数据的存储库:

● 当服务器上设置 master_info_repository=TABLE 和 relay_log_info_repository=TABLE 时(这是从 MySQL 8.0 开始的默认设置),复制连接参数会作为 RESET REPLICA | SLAVE 操作的一部分保留在 InnoDB 表 mysql.slave_master_info 以及 mysql.slave_relay_log_info 中,即使崩溃也是安全的。它们也保留在内存中。如果在执行 RESET REPLICA | SLAVE 之后但在执行 START REPLICA | SLAVE 之前出现意外的服务器退出或故意重新启动,则将从表中检索复制连接参数并将其重新应用到通道。这种情况从 MySQL 8.0.13 开始适用于源元数据存储库,从 MySQL 8.0.19 开始适用于副本元数据存储库。

● 如果服务器上设置了 master_info_repository=FILE 和 relay_log_info_repository=FILE,或者 MySQL 服务器版本早于上述指定版本,则复制连接参数只保留在内存中。如果副本 mysqld 在执行 RESET REPLICA | SLAVE 后由于意外的服务器退出或故意重新为之而立即重新启动,则连接参数将丢失。在这种情况下,必须在服务器启动后执行 CHANGE MASTER TO 语句,以便在执行 START REPLICA | SLAVE 之前重新指定连接参数。请注意,这些选项的 FILE 设置已弃用;会在将来的版本中删除。

RESET REPLICA | SLAVE 不会更改受语句影响的通道的任何复制筛选器设置(例如--replicate-ignore-table)。但是,RESET REPLICA | SLAVE ALL 会删除语句删除的通道上设置的复制筛选器。当重新创建已删除的通道时,为副本指定的任何全局复制筛选器都将复制到这些通道中,但不会应用特定于通道的复制筛选器。

RESET REPLICA | SLAVE 导致正在进行的事务隐式提交。

如果复制 SQL 线程在停止时正在复制临时表,并且执行了 RESET REPLICA | SLAVE,则在副本上删除这些复制的临时表。

RESET REPLICA | SLAVE 不重置心跳周期或 SSL_VERIFY_SERVER_CERT。

注意

在用于 NDB Cluster 副本 SQL 节点时,RESET REPLICA | SLAVE 清除 mysql.ndb_apply_status 表。在使用此语句时,应该记住,ndb_apply_status 使用 NDB 存储引擎,因此,被连接到集群的所有 SQL 节点共享。

可以通过在执行 RESET REPLICA | SLAVE 之前执行 SET GLOBAL @@ndb_clear_apply_status=OFF 来覆盖此行为,在这种情况下,可以阻止副本清除 ndb_apply_status 表。

官方网址:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值