12.16 글로벌 트랜잭션 ID와 함께 사용되는 함수
이 절에서 설명하는 함수는 GTID 기반 복제 (MySQL 5.6.5 이후에 사용 가능)에서 사용됩니다. 이러한 모든 함수는 인수로 GTID 세트의 캐릭터 라인 표현이 지정되므로 이러한 함수와 함께 GTID 세트를 사용할 때는 항상 따옴표로 묶어야 있다는 것을 기억하는 것이 중요합니다 .
두 GTID 세트의 결합은 단순히 쉼표를 삽입하고 결합 된 문자열로 표현 된 것입니다. 즉, 여기서 생성 된 함수와 마찬가지로 매우 간단한 함수를 정의하면 GTID 세트의 결합을 얻을 수 있습니다.
CREATE FUNCTION GTID_UNION (g1 TEXT, g2 TEXT) RETURNS TEXT DETERMINISTIC RETURN CONCAT (g1 ','g2);
GTID의 자세한 정보와이 GTID 함수를 실제로 사용하는 방법은 섹션 17.1.3 "글로벌 트랜잭션 식별자를 사용한 복제" 를 참조하십시오.
표 12.20 GTID 함수
이름 | 설명 |
---|---|
GTID_SUBSET() | 부분 집합 내의 모든 GTID가 세트 내에도있는 경우는 true를 돌려줍니다. 그렇지 않은 경우는 false를 돌려줍니다. |
GTID_SUBTRACT() | 세트의 GTID 중 일부에없는 것을 모두 돌려줍니다. |
SQL_THREAD_WAIT_AFTER_GTIDS() (deprecated 5.6.9) | 폐지 : WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS ()로 대체되었습니다 |
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() | 지정된 GTID가 슬레이브로 실행 될 때까지 기다립니다. |
GTID_SUBSET(
subset
,set
)2 세트의 글로벌 트랜잭션 ID
subset
와set
가 지정된 경우subset
의 모든 GTID가set
에 존재하면 true (1)을 반환합니다. 그렇지 않으면 false (0)을 반환합니다.이 함수에서 사용되는 GTID 세트는 다음 예제와 같이 문자열로 표현됩니다.
mysql>
SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23',
->'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G
*************************** 1. row ******************** ******* GTID_SUBSET ( '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 23' '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 21-57') : 1 1 row in set (0.00 sec) mysql>SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25',
->'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G
*************************** 1. row ******************** ******* GTID_SUBSET ( '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 23-25' '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 21-57') : 1 1 row in set (0.00 sec) mysql>SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25',
->'3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G
*************************** 1. row ******************** ******* GTID_SUBSET ( '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 20-25' '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 21-57') : 0 1 row in set (0.00 sec)이 함수는 MySQL 5.6.5에서 추가되었습니다.
GTID_SUBTRACT(
set
,subset
)2 세트의 글로벌 트랜잭션 ID
subset
와set
가 지정된 경우set
의 GTID에서subset
에 존재하지 않는 것만을 반환합니다.이 함수에서 사용되는 GTID 세트는 모든 문자열로 표현되기 때문에 다음 예제와 같이 따옴표로 묶어야합니다.
mysql>
SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57',
->'3E11FA47-71CA-11E1-9E33-C80AA9429562:21')\G
*************************** 1. row ******************** ******* GTID_SUBTRACT ( '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 21-57' '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 21') : 3e11fa47-71ca-11e1-9e33-c80aa9429562 : 22-57 1 row in set (0.00 sec) mysql>SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57',
->'3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25')\G
*************************** 1. row ******************** ******* GTID_SUBTRACT ( '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 21-57' '3E11FA47-71CA-11E1-9E33-C80AA9429562 : 20-25') : 3e11fa47-71ca-11e1-9e33-c80aa9429562 : 26-57 1 row in set (0.00 sec) mysql>SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57',
->'3E11FA47-71CA-11E1-9E33-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 sec)이 함수는 MySQL 5.6.5에서 추가되었습니다.
SQL_THREAD_WAIT_AFTER_GTIDS(
gtid_set
[,timeout
])SQL_THREAD_WAIT_AFTER_GTIDS()
는 MySQL 5.6.5에서 추가 된 MySQL 5.6.9에서WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()
로 대체했습니다. (Bug # 14775984)자세한 내용은 섹션 17.1.3 "글로벌 트랜잭션 식별자를 사용한 복제" 를 참조하십시오.
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(
gtid_set
[,timeout
])슬레이브 SQL 쓰레드가
gtid_set
에 글로벌 트랜잭션 ID가 포함 된 모든 트랜잭션이 실행되는지 ( "GTID 세트"의 정의에 대해서는 섹션 17.1.3.1 "GTID의 개념" 을 참조하십시오)timeout
초가 경과하거나 중 하나가 먼저 발생할 때까지 대기합니다.timeout
옵션에서 기본 시간 초과는 0입니다. 이 경우 마스터 단순히 GTID 세트 내의 모든 트랜잭션이 실행될 때까지 대기 할뿐입니다.MySQL 5.6.9 이전에서는
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()
는SQL_THREAD_WAIT_AFTER_GTIDS()
라는 이름이었습니다. (Bug # 14775984)자세한 내용은 섹션 17.1.3 "글로벌 트랜잭션 식별자를 사용한 복제" 를 참조하십시오.
이 함수에서 사용되는 GTID 세트는 다음 예제와 같이 문자열로 표현되기 때문에 따옴표로 묶어야합니다.
mysql>
SELECT WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS('3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5');
-> 5반환 값은 실행 된 트랜잭션 이벤트의 수입니다. MySQL 5.6.8 이전에서는이 함수는 시간 제한이 설정되어 있지 않은 경우는 예상 불가능한 동작되고, GTID 기반 복제가 활성화되지 않은 경우에도 불려 가고있었습니다. MySQL 5.6.8 이후에서는
gtid_mode
이OFF
이면 항상NULL
을 반환합니다. (Bug # 14640065)