17.1.4.5 글로벌 트랜잭션 ID 옵션 및 변수
GTID 복제에 사용되는 부트 옵션
GTID 복제에 사용되는 시스템 변수
이 섹션에 설명 된 MySQL Server 옵션 및 시스템 변수는 MySQL 5.6.5에서 도입 된 글로벌 트랜잭션 식별자 (GTID) 모니터 및 제어에 사용됩니다.
이러한 옵션과 변수의 대부분은 MySQL 5.6.9에서 이름이 바뀌 었습니다. 자세한 내용은이 섹션의 설명을 참조하십시오.
자세한 내용은 섹션 17.1.3 "글로벌 트랜잭션 식별자를 사용한 복제" 를 참조하십시오.
GTID 복제에 사용되는 부트 옵션
다음 서버 시작 옵션은 GTID 기반 복제에 사용됩니다.
--disable-gtid-unsafe-statements
도입 5.6.5 삭제 5.6.9 명령 줄 형식 --disable-gtid-unsafe-statements[=value]
시스템 변수 이름 disable_gtid_unsafe_statements
변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean
기본 false
폐지 : MySQL 5.6.9에서
--enforce-gtid-consistency
로 대체되었습니다. (Bug # 14775984)--enforce-gtid-consistency
도입 5.6.9 명령 줄 형식 --enforce-gtid-consistency[=value]
시스템 변수 이름 enforce_gtid_consistency
변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean
기본 false
이 옵션을 활성화하면 트랜잭션 안전한 방법으로 로그를 기록 할 수있는 문만 실행을 허용함으로써 GTID 일관성을 적용합니다.
--enforce-gtid-consistency
를 활성화하고--gtid-mode
를ON
으로 설정해야합니다. 그렇게하지 GTID 모드를 사용하면 오류와 함께 실패합니다. 시스템이 GTID을 사용할 준비가되어 있는지를 테스트하기 위해--gtid-mode
를 사용하기 전에이 옵션을 사용할 수 있습니다 (사용하는 것을 권장합니다).--enforce-gtid-consistency
가 켜져있을 때 트랜잭션 안전 확인서를 기록 할 수 있기 때문에 다음 작업은이 옵션을 사용할 수없는 것입니다.CREATE TABLE ... SELECT
문트랜잭션의
CREATE TEMPORARY TABLE
문트랜잭션 및 비 트랜잭션 테이블을 모두 업데이트하는 트랜잭션 또는 문.
MySQL 5.6.9 이전 버전에서는이 옵션의 이름은
--disable-gtid-unsafe-statements
이었습니다. (Bug # 14775984)MySQL 5.6.7 이전 버전에서는이 옵션을 사용하여 임시 테이블의 비 트랜잭션 DML이 실패했습니다 (행 기반 바이너리 로깅을 사용하면 임시 테이블에 대한 변경 로그가 기록되지 않는다). MySQL 5.6.7 이후에서는 영향을받는 모든 테이블이 임시 테이블 인 한,
--disable-gtid-unsafe-statements
(MySQL 5.6.9 이후에서는--enforce-gtid-consistency
) 상태에서 비 트랜잭션 DML 문이 임시 테이블에서 허용됩니다 (Bug # 14272672).MySQL 5.6.7 이전에서는
--write-binlog
가 명시 적으로 비활성화 된 mysql_upgrade가 실행되고 있지 않은 한, mysql_upgrade이 옵션이 활성화 된 상태에서 동작하는 MySQL Server에서 사용할 수 없습니다. (Bug # 13833710, Bug # 14221043) MySQL 5.6.7 이후에서는--gtid-mode=ON
상태의 서버에서 mysql_upgrade를 실행할 수 있지만 권장되지 않습니다. MySQL 시스템 테이블이 비 트랜잭션 인MyISAM
스토리지 엔진을 사용하기 때문입니다.MySQL 5.6.8 이전 버전에서는
--enforce-gtid-consistency
가 사용될 때 (이 옵션--disable-gtid-unsafe-statements
라고했습니다)에 비 트랜잭션 테이블에 영향을 미치는 문을 사용 수 없습니다. MySQL 5.6.9 이후에서는이 옵션은 비 트랜잭션 테이블을 업데이트하는 단일 명령문을 허용합니다. 이것은 주로 mysql_install_db과 mysql_upgrade 등의 프로그램에서 사용되는 것을 의도하고 있습니다. (Bug # 14722659)--gtid-mode
도입 5.6.5 명령 줄 형식 --gtid-mode=MODE
시스템 변수 이름 gtid_mode
변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 enumeration
기본 OFF
유효한 값 OFF
UPGRADE_STEP_1
UPGRADE_STEP_2
ON
이 옵션은 GTID이 유효한지 여부를 지정합니다.
--gtid-mode=ON
에서 서버를 시작하려면 서버를--log-bin
,--log-slave-updates
및--enforce-gtid-consistency
옵션에서 시작되어야합니다.이 옵션을 바이너리 로그 또는 릴레이 로그에 GTID가있을 때
OFF
로 또는 실행해야 이름 트랜잭션이 남아있을 때ON
으로 설정하면 오류가 발생합니다.중요이 옵션은 boolean 값을 사용하지 않습니다. 즉 열거됩니다. 이 옵션을 설정하면 수치의 사용을 시도하지 마십시오. 예기치 않은 결과를 초래할 수 있습니다. 값
UPGRADE_STEP_1
및UPGRADE_STEP_2
는 향후 사용을 위해 예약되어 있습니다 만, 현재 운영 환경에서 지원되지 않습니다. 이 두 값 중 하나를--gtid-mode
에서 사용하는 경우 서버는 시작을 거부합니다.MySQL 5.6.7 이전에서는
--write-binlog
가 명시 적으로 비활성화 된 mysql_upgrade가 실행되고 있지 않은 한, mysql_upgrade이 옵션이 활성화 된 상태에서 동작하는 MySQL Server에서 사용할 수 없습니다. (Bug # 13833710, Bug # 14221043) MySQL 5.6.7 이후에서는--gtid-mode=ON
상태의 서버에서 mysql_upgrade를 실행할 수 있지만 권장되지 않습니다. 비 트랜잭션 인MyISAM
스토리지 엔진을 사용하는 MySQL 시스템 테이블을 변경할 수 있기 때문입니다.MySQL 5.6.10 이전에는,
--gtid-mode
가ON
으로 설정되어있을 때sql_slave_skip_counter
전역 변수의 값을 1로 설정해도 효과가 없습니다. (Bug # 15833516) MySQL 5.6.9 이전 버전에서의 해결 방법은CHANGE MASTER TO ... MASTER_LOG_FILE = ... MASTER_LOG_POS = ...
을 사용하여 (필요에 따라이 문에MASTER_AUTO_POSITION = 0
옵션 포함), 슬레이브의 위치를 재설정하는 것입니다.
GTID 복제에 사용되는 시스템 변수
다음 시스템 변수는 GTID 기반 복제에 사용됩니다.
disable_gtid_unsafe_statements
도입 5.6.5 삭제 5.6.9 명령 줄 형식 --disable-gtid-unsafe-statements[=value]
시스템 변수 이름 disable_gtid_unsafe_statements
변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean
기본 false
폐지 : MySQL 5.6.9에서
enforce_gtid_consistency
로 대체되었습니다. (Bug # 14775984)gtid_done
도입 5.6.5 삭제 5.6.9 시스템 변수 이름 gtid_done
변수 범위 글로벌 세션 동적 변수 아니오 허용되는 값 유형 string
폐지 : MySQL 5.6.9에서
gtid_executed
로 대체되었습니다. (Bug # 14775984)enforce_gtid_consistency
도입 5.6.9 명령 줄 형식 --enforce-gtid-consistency[=value]
시스템 변수 이름 enforce_gtid_consistency
변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean
기본 false
이 변수가 true의 경우는 트랜잭션 안전한 방법으로 로그를 기록 할 수있는 문만 실행을 허용하는 것으로, 서버는 GTID 일관성을 적용합니다. 서버를
--gtid-mode=ON
으로 시작하기 전에 GTID 일관성을 사용 (--enforce-gtid-consistency
를 사용하여)해야합니다. 그렇게하지 GTID 모드를 사용하면 오류와 함께 실패합니다. 시스템이 GTID을 사용할 준비가되어 있는지를 테스트하기 위해--gtid-mode
를 사용하기 전에 GTID 일관성을 사용할 수 있습니다 (권장).enforce_gtid_consistency
가 true의 경우는 트랜잭션 안전 확인서를 기록 할 수 있기 때문에 다음 작업은이 경우에는 사용할 수없는 것입니다.CREATE TABLE ... SELECT
문트랜잭션의
CREATE TEMPORARY TABLE
문트랜잭션 및 비 트랜잭션 테이블을 모두 업데이트하는 트랜잭션 또는 문.
이 변수는 읽기 전용입니다. 이것을 설정하려면 MySQL Server를 시작할 때 명령 행 또는 옵션 파일에서
--enforce-gtid-consistency
옵션을 사용하십시오.MySQL 5.6.9 이전 버전에서는이 변수의 이름은
disable_gtid_unsafe_statements
이었습니다. (Bug # 14775984)gtid_executed
도입 5.6.9 시스템 변수 이름 gtid_executed
변수 범위 글로벌 세션 동적 변수 아니오 허용되는 값 유형 string
이 변수는 글로벌 범위에서 사용하면 바이너리 로그에 로그가 기록 된 모든 트랜잭션 집합의 표현을 포함합니다. 이것은
SHOW MASTER STATUS
및SHOW SLAVE STATUS
출력의Executed_Gtid_Set
컬럼의 값과 동일합니다.이 변수는 세션 범위에서 사용될 때 현재 세션 캐시에 기록 된 모든 트랜잭션 집합의 표현을 포함합니다.
언제든지 바이너리 로그에서 발견 트랜잭션 세트는
GTID_SUBTRACT(@@global.gtid_executed, @@global.gtid_purged)
와 동일합니다 (즉, 바이너리 로그에서 아직 제거되지 않은 모든 트랜잭션).서버가 시작되면
@@global.gtid_executed
는 다음 두 세트의 합집합에 초기화됩니다.가장 새로운 바이너리 로그
Previous_gtids_log_event
에 나열된 GTID가장 새로운 바이너리 로그의 모든
Gtid_log_event
에서 발견 GTID
이후 트랜잭션이 수행 될 때 GTID이 그 세트에 추가됩니다.
RESET MASTER
을 발행하여 전역 변수의 값 (그러나 세션 값이 아닌)은 빈 문자열로 초기화됩니다. GTID은 세트가RESET MASTER
의해 삭제 될 경우를 제외하고 세트에서 제거되지 않습니다. 세트는 서버가 종료되어 모든 바이너리 로그가 삭제되는 경우에도 취소됩니다.MySQL 5.6.9 이전 버전에서는이 변수는
gtid_done
라고했습니다.gtid_lost
도입 5.6.5 삭제 5.6.9 시스템 변수 이름 gtid_lost
변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 string
폐지 : MySQL 5.6.9에서
gtid_purged
로 대체되었습니다. (Bug # 14775984)gtid_mode
도입 5.6.5 시스템 변수 이름 gtid_mode
변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 enumeration
기본 OFF
유효한 값 OFF
UPGRADE_STEP_1
UPGRADE_STEP_2
ON
GTID이 유효한지 여부를 나타냅니다. 읽기 전용.
--gtid-mode
를 사용하여 설정합니다.gtid_next
도입 5.6.5 시스템 변수 이름 gtid_next
변수 범위 세션 동적 변수 예 허용되는 값 유형 enumeration
기본 AUTOMATIC
유효한 값 AUTOMATIC
ANONYMOUS
UUID:NUMBER
이 변수는 다음 GTID가 취득 된 것인지, 그리고 어떻게 취득했는지를 지정하는 데 사용됩니다.
gtid_next
는 다음 값 중 하나를 취할 수 있습니다.AUTOMATIC
: 자동으로 생성되는 다음의 글로벌 트랜잭션 ID를 사용합니다.ANONYMOUS
: 트랜잭션은 글로벌 식별자를 가지지 않고, 파일 위치 만 확인됩니다.UUID
:NUMBER
형식의 글로벌 트랜잭션 ID입니다.
이 변수를 설정하려면
SUPER
권한이 필요합니다.gtid_mode
이OFF
이면이 변수를 설정해도 효과는 없습니다.MySQL 5.6.20 이전에는 GTID은 유효도
gtid_next
가AUTOMATIC
이 아닌 경우,DROP TABLE
이 아닌 임시 테이블 및 테이블 또는 트랜잭션 스토리지 엔진을 사용하는 임시 테이블과 비 트랜잭션 스토리지 엔진을 사용하는 임시 테이블의 조합 에서 사용 된 때 제대로 작동하지 않습니다. MySQL 5.6.20 이상에서DROP TABLE
또는DROP TEMPORARY TABLE
은 테이블의 이러한 조합 중 하나에서 사용되는 명시적인 오류로 실패합니다. (Bug # 17620053)MySQL 5.6.11뿐입니다 만,
gtid_next
가AUTOMATIC
이외의 값으로 설정되어있을 때, 문CHANGE MASTER TO
,START SLAVE
,STOP SLAVE
,REPAIR TABLE
,OPTIMIZE TABLE
,ANALYZE TABLE
,CHECK TABLE
,CREATE SERVER
,ALTER SERVER
,DROP SERVER
,CACHE INDEX
,LOAD INDEX INTO CACHE
,FLUSH
또는RESET
을 수행 할 수 없습니다. 이러한 경우 문은 오류로 실패합니다. 이러한 문은 MySQL 5.6.12 이후에서는 거부되지 않습니다. (Bug # 16062608, Bug # 16715809, Bug # 69045)gtid_owned
도입 5.6.5 시스템 변수 이름 gtid_owned
변수 범위 글로벌 세션 동적 변수 아니오 허용되는 값 유형 string
이 읽기 전용 변수는 내용이 그 범위에 따라 목록을 유지합니다. 세션 범위에서 사용되는 경우에는 목록이 클라이언트가 소유하는 모든 GTID을 유지합니다. 전역 범위에서 사용될 때 모든 GTID과 소유자의 목록을 유지합니다.
gtid_purged
도입 5.6.9 시스템 변수 이름 gtid_purged
변수 범위 글로벌 동적 변수 예 허용되는 값 유형 string
바이너리 로그에서 제거 된 모든 트랜잭션 세트.
서버가 시작할 때
gtid_purged
전역 값은 가장 오래된 바이너리 로그Previous_gtid_log_event
에 포함 된 GTID 세트에 초기화됩니다. 바이너리 로그가 제거 될 때 가장 낡은 것이되고 바이너리 로그에서@@global.gtid_purged
가 다시 읽습니다.RESET MASTER
을 발행하는 것으로,이 변수의 값은 빈 문자열로 초기화됩니다.MySQL 5.6.9 이전 버전에서는이 변수는
gtid_lost
라고 읽기 전용이었습니다. MySQL 5.6.9 이후에서는이 변수의 값을 업데이트 할 수 있습니다 (그러나 이미 열거 된 것에 GTID를 추가 할에서만 및gtid_executed
가 설정 해제 된 경우, 즉 새로운 서버에서만). (Bug # 14797808)simplified_binlog_gtid_recovery
도입 5.6.21 비추천 5.6.23 명령 줄 형식 --simplified-binlog-gtid-recovery
시스템 변수 이름 simplified_binlog_gtid_recovery
변수 범위 글로벌 동적 변수 아니오 허용되는 값 유형 boolean
기본 FALSE
이 옵션은 비추천으로 향후 MySQL 릴리스에서 제거 될 예정입니다. 이름이 변경된
binlog_gtid_recovery_simplified
를 사용하여 충돌 후 MySQL 바이너리 로그 파일을 어떻게 반복할지 여부를 제어합니다.