GTID를 사용한 트랜잭션 복제
다음 저장 프로시저는 Aurora MySQL에서 전역 트랜잭션 식별자(GTID)를 사용하여 트랜잭션을 복제하는 방법을 제어합니다. Aurora MySQL에서 GTID 기반 복제를 사용하는 방법을 알아보려면 GTID 기반 복제 사용 섹션을 참조하세요.
주제
mysql.rds_assign_gtids_to_anonymous_transactions(Aurora MySQL 버전 3)
CHANGE REPLICATION SOURCE TO
문의 ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS
옵션을 구성합니다. 이렇게 하면 복제 채널에서 GTID를 가지고 있지 않은 복제된 트랜잭션에 GTID를 할당합니다. 이렇게 하면 GTID 기반 복제를 사용하지 않는 소스에서 GTID 기반 복제를 사용하는 복제본으로 바이너리 로그 복제를 수행할 수 있습니다. 자세한 내용은 MySQL 참조 설명서의 복제 소스를 명령문으로 변경
구문
CALL mysql.rds_assign_gtids_to_anonymous_transactions(
gtid_option
);
파라미터
-
gtid_option
-
문자열 값입니다. 허용 값은
OFF
,LOCAL
또는 지정된 UUID입니다.
사용 노트
이 프로시저에는 커뮤니티 MySQL에서 CHANGE REPLICATION SOURCE TO
ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS =
문을 실행하는 것과 동일한 효과가 있습니다.gtid_option
GTID는 gtid_option
에 대한 ON
로 튜닝되어 LOCAL
또는 특정 UUID로 설정되어야 합니다.
기본값은 OFF
이며, 기능이 사용되지 않음을 의미합니다.
LOCAL
은 복제본의 자체 UUID(server_uuid
설정)를 포함하는 GTID를 할당합니다.
UUID인 파라미터를 전달하면 지정된 UUID(예: 복제 소스 서버에 대한 server_uuid
설정)를 포함하는 GTID를 할당합니다.
예시
이 기능을 해제하려면 다음과 같이 하세요.
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF'); +-------------------------------------------------------------+ | Message | +-------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF | +-------------------------------------------------------------+ 1 row in set (0.07 sec)
복제본의 자체 UUID를 사용하려면 다음과 같이 하세요.
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL'); +---------------------------------------------------------------+ | Message | +---------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL | +---------------------------------------------------------------+ 1 row in set (0.07 sec)
지정된 UUID를 사용하려면 다음과 같이 하세요.
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e'); +----------------------------------------------------------------------------------------------+ | Message | +----------------------------------------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e | +----------------------------------------------------------------------------------------------+ 1 row in set (0.07 sec)
mysql.rds_gtid_purged(Aurora MySQL 버전 3)
시스템 변수 gtid_purged
의 글로벌 값을 지정된 글로벌 트랜잭션 식별자(GTID) 집합으로 설정합니다. gtid_purged
시스템 변수는 서버에서 커밋되었지만 서버의 이진 로그 파일에는 존재하지 않는 모든 트랜잭션의 GTID로 구성된 GTID 집합입니다.
MySQL 8.0과의 호환되도록 하기 위해 다음 두 가지 방법으로 gtid_purged
값을 설정할 수 있습니다.
-
gtid_purged
의 값을 지정된 GTID 집합으로 교체합니다. -
지정된 GTID 집합을
gtid_purged
에 이미 포함된 GTID 집합 세트에 덧붙입니다.
구문
gtid_purged
의 값을 지정된 GTID 집합으로 교체하는 방법:
CALL mysql.rds_gtid_purged (
gtid_set
);
gtid_purged
의 값을 지정된 GTID 집합에 덧붙이는 방법:
CALL mysql.rds_gtid_purged (+
gtid_set
);
파라미터
gtid_set
-
gtid_set
의 값은 현재gtid_purged
값의 상위 집합이어야 하며,gtid_subtract(gtid_executed,gtid_purged)
와 겹쳐서는 안 됩니다. 즉, 새 GTID 집합에는gtid_purged
에 이미 들어 있던 모든 GTID를 포함해야 하며,gtid_executed
에서 아직 삭제되지 않은 GTID는 포함할 수 없습니다. 또한gtid_set
파라미터는 글로벌gtid_owned
집합에 있는 GTID, 즉 현재 서버에서 처리 중인 트랜잭션에 대한 GTID를 포함할 수 없습니다.
사용 노트
마스터 사용자는 mysql.rds_gtid_purged
프로시저를 실행해야 합니다.
이 프로시저는 Aurora MySQL 버전 3.04 이상에서 지원됩니다.
예시
다음 예에서는 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
을 gtid_purged
글로벌 변수에 할당합니다.
CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_skip_transaction_with_gtid(Aurora MySQL 버전 2 및 3)
Aurora 기본 인스턴스에서 지정된 전역 트랜잭션 식별자(GTID)를 사용하여 트랜잭션 복제를 건너뜁니다.
특정 GTID 트랜잭션이 문제의 원인으로 알려진 경우 재해 복구를 위해 이 프로시저를 사용할 수 있습니다. 이 저장 프로시저를 사용하여 문제의 트랜잭션을 건너 뛰십시오. 문제의 트랜잭션의 예로는 복제를 비활성화하거나 중요한 데이터를 삭제하거나 DB 인스턴스를 사용할 수 없도록 하는 트랜잭션이 포함됩니다.
구문
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
파라미터
-
gtid_to_skip
-
건너 뛸 복제 트랜잭션의 GTID입니다.
사용 노트
마스터 사용자는 mysql.rds_skip_transaction_with_gtid
프로시저를 실행해야 합니다.
이 프로시저는 Aurora MySQL 버전 2 및 3에서 지원됩니다.
예시
다음 예에서는 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
을 사용하여 트랜잭션의 복제를 건너뜁니다.
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_start_replication_until_gtid(Aurora MySQL 버전 3)
Aurora MySQL DB 클러스터에서 복제를 시작하고 지정된 글로벌 트랜잭션 식별자(GTID) 바로 다음에서 복제를 중지합니다.
구문
CALL mysql.rds_start_replication_until_gtid(
gtid
);
파라미터
-
gtid
-
GTID 이후 복제를 중지해야 합니다.
사용 노트
마스터 사용자는 mysql.rds_start_replication_until_gtid
프로시저를 실행해야 합니다.
이 프로시저는 Aurora MySQL 버전 3.04 이상에서 지원됩니다.
mysql.rds_start_replication_until_gtid
저장 프로시저는 다음을 포함하는 관리형 복제에 지원되지 않습니다.
gtid
파라미터가 복제본으로 이미 실행한 트랜잭션을 지정하는 경우 복제가 즉시 중지됩니다.
예시
다음 예제에서는 복제를 시작하고 GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
에 도달할 때까지 변경 사항을 복제합니다.
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');