10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

MySQL 8.0参考手册/函数和运算符与全局事务标识符(gtid)一起使用的函数

12.19用于全局事务标识符的函数(gtid)

本节描述的功能用于基于gtid的复制。重要的是要记住,所有这些函数都将GTID集的字符串表示形式作为参数。因此,GTID集在与它们一起使用时必须始终加引号。看到GTID集为更多的信息。

两个GTID集的并集仅仅是它们作为字符串的表示,用插入的逗号连接在一起。换句话说,你可以定义一个非常简单的函数来获取两个GTID集的并集,类似于这里创建的:

创建函数GTID_UNION(g1 TEXT, g2 TEXT)返回确定性的CONCAT(g1,',',g2);

有关GTID的更多信息以及这些GTID函数在实际中是如何使用的,请参见第17.1.3节,“使用全局事务标识符的复制”

表12.24 GTID函数

的名字 描述 弃用
GTID_SUBSET () 如果子集中的所有gtid也在集合中,则返回true;否则错误。
GTID_SUBTRACT () 返回集合中不在子集中的所有gtid。
WAIT_FOR_EXECUTED_GTID_SET () 等待直到给定的gtid在副本上执行完毕。
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS () 使用WAIT_FOR_EXECUTED_GTID_SET () 8.0.18

  • GTID_SUBSET (set1关于我校

    给定两组全局事务标识符set1而且关于我校,如果所有gtid都在set1也在关于我校.否则返回false。

    此函数使用的GTID集被表示为字符串,如下例所示:

    mysql >选择GTID_SUBSET (' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:23”,——> ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33——c80aa9429562:21 - 57) \ G  *************************** 1。行  *************************** GTID_SUBSET(“3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:23 ', ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21 - 57”):1 1行组(0.00秒)mysql >选择GTID_SUBSET (' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:23 - 25”,——> ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33——c80aa9429562:21 - 57) \ G  *************************** 1。行  *************************** GTID_SUBSET(“3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:23 - 25 ', ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21 - 57”):1 1行组(0.00秒)mysql >选择GTID_SUBSET (' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:20 - 25”,——> ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33——c80aa9429562:21 - 57) \ G  *************************** 1。行  *************************** GTID_SUBSET(“3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:20 - 25 ', ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21 - 57”):0 1行组(0.00秒)
  • GTID_SUBTRACT (set1关于我校

    给定两组全局事务标识符set1而且关于我校,只返回来自的那些gtidset1这些都不在关于我校

    该函数使用的所有GTID集都表示为字符串,必须用引号括起来,如下例所示:

    mysql >选择GTID_SUBTRACT (' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21 - 57”,——> ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21”)\ G  *************************** 1。行  *************************** GTID_SUBTRACT(“3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21 - 57 ', ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21”):3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:22 1 - 57行组(0.00秒)mysql >选择GTID_SUBTRACT (' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21 - 57”,——> ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:20 - 25”)\ G  *************************** 1。行  *************************** GTID_SUBTRACT(“3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21 - 57 ', ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:20 - 25”):3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:26 1 - 57行组(0.00秒)mysql >选择GTID_SUBTRACT (' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:21 - 57”,——> ' 3 e11fa47 ca - 71 - 11 - e1 - 9 - e33 c80aa9429562:23 - 24”)\ G  *************************** 1。row *************************** GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', '3E11FA47-71CA-11E1-9E33-C80AA9429562:23-24'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:21-22:25-57 1 row in set(0.01秒)
  • WAIT_FOR_EXECUTED_GTID_SET (gtid_set[,超时])

    等待直到服务器应用了包含全局事务标识符的所有事务gtid_set;也就是说,直到条件gtid_子集(gtid_subset@@GLOBAL.gtid_executed)持有。看到第17.1.3.1节“GTID格式和存储”参阅GTID集的定义。

    如果指定了超时,则超时在GTID集合中的所有事务都被应用之前,该函数停止等待。超时是可选的,默认超时为0秒,在这种情况下,函数总是等待,直到GTID集中的所有事务都被应用。

    WAIT_FOR_EXECUTED_GTID_SET ()监视应用于服务器上的所有gtid,包括来自所有复制通道和用户客户机的事务。它不考虑复制区域通道是否已经启动或停止。

    有关更多信息,请参见第17.1.3节,“使用全局事务标识符的复制”

    这个函数使用的GTID集合被表示为字符串,因此必须像下面的例子中那样用引号括起来:

    mysql >选择WAIT_FOR_EXECUTED_GTID_SET (' 3 e11fa47 - 71 - ca - 11 - e1 - 9 - e33 c80aa9429562:1 - 5 ');- > 0

    有关GTID集的语法说明,请参见第17.1.3.1节“GTID格式和存储”

    WAIT_FOR_EXECUTED_GTID_SET (),返回值是查询的状态,其中0表示成功,1表示超时。任何其他失败都会产生错误。

    gtid_mode当任何客户端使用此函数等待gtid被应用时,不能更改为OFF。

  • WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS (gtid_set[,超时] [,通道])

    WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS ()弃用。使用WAIT_FOR_EXECUTED_GTID_SET ()相反,无论指定的事务通过什么复制通道或用户客户端到达服务器,它都可以工作。