Loading...
MySQL 9.5 Reference Manual 9.5의 14.18.2 Functions Used with Global Transaction Identifiers (GTIDs)의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 절에서 설명하는 함수들은 GTID 기반 복제에서 사용됩니다. 중요한 점은, 이들 모든 함수는 GTID 세트의 문자열 표현을 인자로 받는다는 것입니다. 따라서 이 함수들을 사용할 때 GTID 세트는 항상 따옴표로 감싸야 합니다. 더 많은 정보는 GTID Sets를 참고하십시오.
두 GTID 세트의 유니언은 단순히 그들의 문자열 표현을 쉼표로 연결한 것입니다. 다시 말해, 다음과 같이 정의된 것과 유사한 매우 간단한 함수를 사용해서 두 GTID 세트의 유니언을 얻을 수 있습니다:
1CREATE FUNCTION GTID_UNION(g1 TEXT, g2 TEXT) 2 RETURNS TEXT DETERMINISTIC 3 RETURN CONCAT(g1,',',g2);
GTID 및 이러한 GTID 함수들이 실제로 어떻게 사용되는지에 대한 더 많은 정보는 Section 19.1.3, “Replication with Global Transaction Identifiers”를 참고하십시오.
Table 14.26 GTID Functions
| Name | Description |
|---|---|
WAIT_FOR_EXECUTED_GTID_SET() | 주어진 GTID들이 복제 서버에서 실행될 때까지 대기합니다. |
두 개의 global transaction identifier 세트인
set1 과
set2 가 주어졌을 때,
set1 의 모든 GTID가
set2 에도 존재하면 true를 반환합니다.
set1 또는
set2 가 NULL이면
NULL을 반환합니다. 그렇지 않으면 false를 반환합니다.
이 함수와 함께 사용되는 GTID 세트는 다음 예시와 같이 문자열로 표현됩니다:
1mysql> SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', 2 -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G 3*************************** 1. row *************************** 4GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', 5 '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'): 1 61 row in set (0.00 sec) 7 8mysql> SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25', 9 -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G 10*************************** 1. row *************************** 11GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23-25', 12 '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'): 1 131 row in set (0.00 sec) 14 15mysql> SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25', 16 -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G 17*************************** 1. row *************************** 18GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25', 19 '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'): 0 201 row in set (0.00 sec)
두 개의 global transaction identifier 세트인
set1 과
set2 가 주어졌을 때,
set1 에는 있지만
set2 에는 없는 GTID만 반환합니다.
set1 또는
set2 가 NULL이면
NULL을 반환합니다.
이 함수와 함께 사용되는 모든 GTID 세트는 문자열로 표현되며, 다음 예시에서처럼 따옴표로 감싸야 합니다:
1mysql> SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', 2 -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21')\G 3*************************** 1. row *************************** 4GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', 5 '3E11FA47-71CA-11E1-9E33-C80AA9429562:21'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:22-57 61 row in set (0.00 sec) 7 8mysql> SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', 9 -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25')\G 10*************************** 1. row *************************** 11GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', 12 '3E11FA47-71CA-11E1-9E33-C80AA9429562:20-25'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:26-57 131 row in set (0.00 sec) 14 15mysql> SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', 16 -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:23-24')\G 17*************************** 1. row *************************** 18GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', 19 '3E11FA47-71CA-11E1-9E33-C80AA9429562:23-24'): 3e11fa47-71ca-11e1-9e33-c80aa9429562:21-22:25-57 201 row in set (0.01 sec)
자기 자신에서 동일한 GTID 세트를 빼면, 다음과 같이 빈 세트가 됩니다:
1mysql> SELECT GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', 2 -> '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57')\G 3*************************** 1. row *************************** 4GTID_SUBTRACT('3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57', 5 '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57'): 61 row in set (0.00 sec)
서버가 gtid_set 에 포함된 global transaction identifier들을 가진 모든 트랜잭션을 적용할 때까지, 즉 조건
GTID_SUBSET( gtid_subset,
@@GLOBAL.gtid_executed) 이 만족될 때까지 대기합니다. GTID 세트의 정의는
Section 19.1.3.1, “GTID Format and Storage”를 참고하십시오.
timeout이 지정되었고,
timeout 초가 경과했음에도 GTID 세트에 있는 모든 트랜잭션이 적용되지 않은 경우, 함수는 대기를 중지합니다.
timeout 은 선택적이며, 기본 timeout은 0초입니다. 이 경우 함수는 GTID 세트에 있는 모든 트랜잭션이 적용될 때까지 항상 대기합니다.
timeout 은 0보다 크거나 같아야 합니다.
strict SQL 모드에서 실행 중일 때 음수
timeout 값은 즉시 오류
(ER_WRONG_ARGUMENTS)와 함께 거부됩니다. strict SQL 모드가 아닌 경우, 함수는 NULL을 반환하고 warning을 발생시킵니다.
WAIT_FOR_EXECUTED_GTID_SET() 은 서버에서 적용되는 모든 GTID를 모니터링하며, 여기에는 모든 복제 채널과 사용자 클라이언트에서 도착하는 트랜잭션이 포함됩니다. 복제 채널이 시작되었는지 중지되었는지는 고려하지 않습니다.
자세한 내용은 Section 19.1.3, “Replication with Global Transaction Identifiers”를 참고하십시오.
이 함수와 함께 사용되는 GTID 세트는 문자열로 표현되므로, 다음 예시와 같이 따옴표로 감싸야 합니다:
1mysql> SELECT WAIT_FOR_EXECUTED_GTID_SET('3E11FA47-71CA-11E1-9E33-C80AA9429562:1-5'); 2 -> 0
GTID 세트의 문법 설명은 Section 19.1.3.1, “GTID Format and Storage”를 참고하십시오.
WAIT_FOR_EXECUTED_GTID_SET() 의 반환 값은 쿼리의 상태를 나타내며, 0은 성공, 1은 timeout을 의미합니다. 그 외의 실패는 error를 발생시킵니다.
gtid_mode는 어떤 클라이언트라도 이 함수를 사용하여 GTID가 적용되기를 기다리고 있는 동안에는 OFF로 변경할 수 없습니다.
14.18.1 Group Replication Functions
14.18.3 Asynchronous Replication Channel Failover Functions