

# GTID를 사용한 트랜잭션 복제
<a name="mysql-stored-proc-gtid"></a>

다음 저장 프로시저는 Aurora MySQL에서 전역 트랜잭션 식별자(GTID)를 사용하여 트랜잭션을 복제하는 방법을 제어합니다. Aurora MySQL에서 GTID 기반 복제를 사용하는 방법을 알아보려면 [GTID 기반 복제 사용](mysql-replication-gtid.md) 섹션을 참조하세요.

**Topics**
+ [mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions(Aurora MySQL 버전 3)](#mysql_assign_gtids_to_anonymous_transactions)
+ [mysql.rds\$1gtid\$1purged(Aurora MySQL 버전 3)](#mysql_rds_gtid_purged)
+ [mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL 버전 2 및 3)](#mysql_rds_skip_transaction_with_gtid)
+ [mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL 버전 3)](#mysql_rds_start_replication_until_gtid)

## mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions(Aurora MySQL 버전 3)
<a name="mysql_assign_gtids_to_anonymous_transactions"></a>

`CHANGE REPLICATION SOURCE TO` 문의 `ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS` 옵션을 구성합니다. 이렇게 하면 복제 채널에서 GTID를 가지고 있지 않은 복제된 트랜잭션에 GTID를 할당합니다. 이렇게 하면 GTID 기반 복제를 사용하지 않는 소스에서 GTID 기반 복제를 사용하는 복제본으로 바이너리 로그 복제를 수행할 수 있습니다. 자세한 내용은 *MySQL 참조 설명서*의 [복제 소스를 명령문으로 변경](https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html) 및 [GTID를 사용하지 않는 소스에서 GTID를 사용하는 복제본으로 복제](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html)를 참조하세요.

### 구문
<a name="mysql_assign_gtids_to_anonymous_transactions-syntax"></a>

```
CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);
```

### 파라미터
<a name="mysql_assign_gtids_to_anonymous_transactions-parameters"></a>

 *gtid\$1option*  
문자열 값입니다. 허용 값은 `OFF`, `LOCAL` 또는 지정된 UUID입니다.

### 사용 노트
<a name="mysql_assign_gtids_to_anonymous_transactions-usage-notes"></a>

이 프로시저에는 커뮤니티 MySQL에서 `CHANGE REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = gtid_option` 문을 실행하는 것과 동일한 효과가 있습니다.

 GTID는 *gtid\$1option*에 대한 `ON`로 튜닝되어 `LOCAL` 또는 특정 UUID로 설정되어야 합니다.

기본값은 `OFF`이며, 기능이 사용되지 않음을 의미합니다.

`LOCAL`은 복제본의 자체 UUID(`server_uuid` 설정)를 포함하는 GTID를 할당합니다.

UUID인 파라미터를 전달하면 지정된 UUID(예: 복제 소스 서버에 대한 `server_uuid` 설정)를 포함하는 GTID를 할당합니다.

### 예제
<a name="mysql_assign_gtids_to_anonymous_transactions-examples"></a>

이 기능을 해제하려면 다음과 같이 하세요.

```
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\$1gtid\$1purged(Aurora MySQL 버전 3)
<a name="mysql_rds_gtid_purged"></a>



시스템 변수 `gtid_purged`의 글로벌 값을 지정된 글로벌 트랜잭션 식별자(GTID) 집합으로 설정합니다. `gtid_purged` 시스템 변수는 서버에서 커밋되었지만 서버의 이진 로그 파일에는 존재하지 않는 모든 트랜잭션의 GTID로 구성된 GTID 집합입니다.

MySQL 8.0과의 호환되도록 하기 위해 다음 두 가지 방법으로 `gtid_purged` 값을 설정할 수 있습니다.
+ `gtid_purged`의 값을 지정된 GTID 집합으로 교체합니다.
+ 지정된 GTID 집합을 `gtid_purged`에 이미 포함된 GTID 집합 세트에 덧붙입니다.

### 구문
<a name="mysql_rds_gtid_purged-syntax"></a>

`gtid_purged`의 값을 지정된 GTID 집합으로 교체하는 방법:

```
CALL mysql.rds_gtid_purged (gtid_set);
```

`gtid_purged`의 값을 지정된 GTID 집합에 덧붙이는 방법:

```
CALL mysql.rds_gtid_purged (+gtid_set);
```

### 파라미터
<a name="mysql_rds_gtid_purged-parameters"></a>

*gtid\$1set*  
*gtid\$1set*의 값은 현재 `gtid_purged` 값의 상위 집합이어야 하며, `gtid_subtract(gtid_executed,gtid_purged)`와 겹쳐서는 안 됩니다. 즉, 새 GTID 집합에는 `gtid_purged`에 이미 들어 있던 모든 GTID를 포함해야 하며, `gtid_executed`에서 아직 삭제되지 않은 GTID는 포함할 수 없습니다. 또한 *gtid\$1set* 파라미터는 글로벌 `gtid_owned` 집합에 있는 GTID, 즉 현재 서버에서 처리 중인 트랜잭션에 대한 GTID를 포함할 수 없습니다.

### 사용 노트
<a name="mysql_rds_gtid_purged-usage-notes"></a>

마스터 사용자는 `mysql.rds_gtid_purged` 프로시저를 실행해야 합니다.

이 프로시저는 Aurora MySQL 버전 3.04 이상에서 지원됩니다.

### 예제
<a name="mysql_rds_gtid_purged-examples"></a>

다음 예에서는 GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23`을 `gtid_purged` 글로벌 변수에 할당합니다.

```
CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```

## mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL 버전 2 및 3)
<a name="mysql_rds_skip_transaction_with_gtid"></a>

Aurora 기본 인스턴스에서 지정된 전역 트랜잭션 식별자(GTID)를 사용하여 트랜잭션 복제를 건너뜁니다.

특정 GTID 트랜잭션이 문제의 원인으로 알려진 경우 재해 복구를 위해 이 프로시저를 사용할 수 있습니다. 이 저장 프로시저를 사용하여 문제의 트랜잭션을 건너 뛰십시오. 문제의 트랜잭션의 예로는 복제를 비활성화하거나 중요한 데이터를 삭제하거나 DB 인스턴스를 사용할 수 없도록 하는 트랜잭션이 포함됩니다.

### 구문
<a name="mysql_rds_skip_transaction_with_gtid-syntax"></a>

 

```
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
```

### 파라미터
<a name="mysql_rds_skip_transaction_with_gtid-parameters"></a>

 *gtid\$1to\$1skip*   
건너 뛸 복제 트랜잭션의 GTID입니다.

### 사용 노트
<a name="mysql_rds_skip_transaction_with_gtid-usage-notes"></a>

마스터 사용자는 `mysql.rds_skip_transaction_with_gtid` 프로시저를 실행해야 합니다.

이 프로시저는 Aurora MySQL 버전 2 및 3에서 지원됩니다.

### 예제
<a name="mysql_rds_skip_transaction_with_gtid-examples"></a>

다음 예에서는 GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23`을 사용하여 트랜잭션의 복제를 건너뜁니다.

```
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```

## mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL 버전 3)
<a name="mysql_rds_start_replication_until_gtid"></a>

Aurora MySQL DB 클러스터에서 복제를 시작하고 지정된 글로벌 트랜잭션 식별자(GTID) 바로 다음에서 복제를 중지합니다.

### 구문
<a name="mysql_rds_start_replication_until_gtid-syntax"></a>

 

```
CALL mysql.rds_start_replication_until_gtid(gtid);
```

### 파라미터
<a name="mysql_rds_start_replication_until_gtid-parameters"></a>

 *gtid*   
GTID 이후 복제를 중지해야 합니다.

### 사용 노트
<a name="mysql_rds_start_replication_until_gtid-usage-notes"></a>

마스터 사용자는 `mysql.rds_start_replication_until_gtid` 프로시저를 실행해야 합니다.

이 프로시저는 Aurora MySQL 버전 3.04 이상에서 지원됩니다.

`mysql.rds_start_replication_until_gtid` 저장 프로시저는 다음을 포함하는 관리형 복제에 지원되지 않습니다.
+ [여러 AWS 리전에 걸쳐 Amazon Aurora MySQL DB 클러스터 복제](AuroraMySQL.Replication.CrossRegion.md)
+ [Aurora 읽기 전용 복제본을 사용하여 RDS for MySQL DB 인스턴스에서 Amazon Aurora MySQL DB 클러스터로 데이터 마이그레이션](AuroraMySQL.Migrating.RDSMySQL.Replica.md)

`gtid` 파라미터가 복제본으로 이미 실행한 트랜잭션을 지정하는 경우 복제가 즉시 중지됩니다.

### 예제
<a name="mysql_rds_start_replication_until_gtid-examples"></a>

다음 예제에서는 복제를 시작하고 GTID `3E11FA47-71CA-11E1-9E33-C80AA9429562:23`에 도달할 때까지 변경 사항을 복제합니다.

```
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
```