

# 다중 소스 복제 관리
<a name="mysql-stored-proc-multi-source-replication"></a>

다음 저장 프로시저는 RDS for MySQL의 다중 소스 복제본에서 복제 채널을 설정하고 관리합니다. 자세한 내용은 [Amazon RDS for MySQL용 다중 소스 복제 구성](mysql-multi-source-replication.md) 단원을 참조하십시오.

이러한 저장 프로시저는 다음 엔진 버전을 실행하는 RDS for MySQL DB 인스턴스에서만 사용할 수 있습니다.
+ 모든 8.4 버전
+ 8.0.35 이상 마이너 버전
+ 5.7.44 이상 마이너 버전

`caching_sha2_passwword`로 구성된 복제 사용자로 복제를 관리하기 위해 저장 프로시저를 사용하는 경우, `SOURCE_SSL=1`을 지정하여 TLS를 구성해야 합니다. `caching_sha2_password`는 RDS for MySQL 8.4의 기본 인증 플러그인입니다.

**참고**  
이 설명서에서는 소스 DB 인스턴스를 RDS for MySQL DB 인스턴스라고 하지만, 이러한 프로시저는 Amazon RDS 외부에서 실행되는 MySQL 인스턴스에도 적용됩니다.

**Topics**
+ [mysql.rds\$1next\$1source\$1log\$1for\$1channel](#mysql_rds_next_source_log_for_channel)
+ [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1for\$1channel](#mysql_rds_set_external_source_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel](#mysql_rds_set_external_source_with_auto_position_for_channel)
+ [mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel](#mysql_rds_set_external_source_with_delay_for_channel)
+ [mysql.rds\$1set\$1source\$1auto\$1position\$1for\$1channel](#mysql_rds_set_source_auto_position_for_channel)
+ [mysql.rds\$1set\$1source\$1delay\$1for\$1channel](#mysql_rds_set_source_delay_for_channel)
+ [mysql.rds\$1skip\$1repl\$1error\$1for\$1channel](#mysql_rds_skip_repl_error_for_channel)
+ [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel)
+ [mysql.rds\$1start\$1replication\$1until\$1for\$1channel](#mysql_rds_start_replication_until_for_channel)
+ [mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel](#mysql_rds_start_replication_until_gtid_for_channel)
+ [mysql.rds\$1stop\$1replication\$1for\$1channel](#mysql_rds_stop_replication_for_channel)

## mysql.rds\$1next\$1source\$1log\$1for\$1channel
<a name="mysql_rds_next_source_log_for_channel"></a>

소스 DB 인스턴스 로그 위치를 채널에 대한 소스 DB 인스턴스에서 다음 이진 로그의 시작으로 변경합니다. 다중 소스 복제본에 대한 복제 I/O 오류 1236을 수신 중일 경우에만 이 프로시저를 사용하세요.

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

 

```
CALL mysql.rds_next_source_log_for_channel(
curr_master_log,
channel_name           
);
```

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

 *curr\$1master\$1log*  
현재 소스 로그 파일의 인덱스입니다. 예를 들어, 현재 파일의 이름이 `mysql-bin-changelog.012345`이면 인덱스는 12345입니다. 현재 소스 로그 파일 이름을 확인하려면 `SHOW REPLICA STATUS FOR CHANNEL 'channel_name'` 명령을 실행하고 `Source_Log_File` 필드를 봅니다.

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_next_source_log_for_channel` 프로시저를 실행해야 합니다. 예를 들어 IO\$1Thread 오류가 있는 경우 이 프로시저를 사용하여 현재 바이너리 로그 파일의 모든 이벤트를 건너뛰고 `channel_name`에서 지정된 채널의 다음 바이너리 로그 파일에서 복제를 재개할 수 있습니다.

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

다중 소스 복제본의 채널에서 복제가 실패했다고 가정해 보겠습니다. 다중 소스 복제본에서 `SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G`를 실행하면 다음 결과가 반환됩니다.

```
mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
                  Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com
                  Source_User: ReplicationUser
                  Source_Port: 3306
                Connect_Retry: 60
              Source_Log_File: mysql-bin-changelog.012345
          Read_Source_Log_Pos: 1219393
               Relay_Log_File: replica-relay-bin.000003
                Relay_Log_Pos: 30223388
        Relay_Source_Log_File: mysql-bin-changelog.012345
           Replica_IO_Running: No
          Replica_SQL_Running: Yes
              Replicate_Do_DB:.
              .
              .
                Last_IO_Errno: 1236
                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.'
               Last_SQL_Errno: 0
               Last_SQL_Error:
               .
               .
                 Channel_name: channel_1
              .
              .
 -- Some fields are omitted in this example output
```

`Last_IO_Errno` 필드가 인스턴스에서 I/O 오류 1236을 수신하고 있음을 보여 줍니다. `Source_Log_File` 필드는 파일 이름이 `mysql-bin-changelog.012345`임을 보여 줍니다. 이는 로그 파일 인덱스가 `12345`임을 의미합니다. 오류를 해결하려면 다음 파라미터와 함께 `mysql.rds_next_source_log_for_channel`을 직접 호출합니다.

```
CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');
```

## mysql.rds\$1reset\$1external\$1source\$1for\$1channel
<a name="mysql_rds_reset_external_source_for_channel"></a>

지정된 채널에서 복제 프로세스를 중지하고 다중 소스 복제본에서 채널 및 관련 구성을 제거합니다.

**중요**  
이 프로시저를 실행하려면 `autocommit`를 활성화해야 합니다. 활성화하려면 `autocommit` 파라미터를 `1`로 설정합니다. 파라미터 수정에 대한 자세한 정보는 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 단원을 참조하십시오.

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



```
CALL mysql.rds_reset_external_source_for_channel (channel_name);
```

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

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_reset_external_source_for_channel` 프로시저를 실행해야 합니다. 이 프로시저를 수행하면 제거되는 채널에 속하는 모든 릴레이 로그가 삭제됩니다.

## mysql.rds\$1set\$1external\$1source\$1for\$1channel
<a name="mysql_rds_set_external_source_for_channel"></a>

RDS for MySQL DB 인스턴스의 복제 채널을 구성하여 다른 RDS for MySQL DB 인스턴스의 데이터를 복제합니다.

**중요**  
이 프로시저를 실행하려면 `autocommit`를 활성화해야 합니다. 활성화하려면 `autocommit` 파라미터를 `1`로 설정합니다. 파라미터 수정에 대한 자세한 정보는 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 단원을 참조하십시오.

**참고**  
대신 [mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel](#mysql_rds_set_external_source_with_delay_for_channel) 저장 프로시저를 사용하여 이 채널에 지연 복제를 구성할 수 있습니다.

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



```
CALL mysql.rds_set_external_source_for_channel (
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , mysql_binary_log_file_name
  , mysql_binary_log_file_location
  , ssl_encryption
  , channel_name
);
```

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

 *host\$1name*   
RDS for MySQL 소스 DB 인스턴스의 호스트 이름 또는 IP 주소입니다.

 *host\$1port*   
RDS for MySQL 소스 DB 인스턴스에서 사용한 포트입니다. 네트워크 구성에 포트 번호를 변환하는 SSH 포트 복제가 포함되는 경우 SSH(Secure Shell)에 의해 공개되는 포트 이름을 지정하세요.

 *replication\$1user\$1name*   
RDS for MySQL 소스 DB 인스턴스에서 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 보유한 사용자의 ID입니다. 소스 인스턴스를 사용한 복제에만 사용되는 계정을 제공하는 것이 좋습니다.

 *replication\$1user\$1password*   
`replication_user_name`에 지정된 사용자 ID의 암호입니다.

 *mysql\$1binary\$1log\$1file\$1name*   
복제 정보를 포함하는 소스 DB 인스턴스의 이진 로그 이름입니다.

 *mysql\$1binary\$1log\$1file\$1location*   
복제 시 복제 정보를 읽기 시작하는 `mysql_binary_log_file_name` 이진수 로그 내 위치입니다.  
소스 DB 인스턴스의 `SHOW BINARY LOG STATUS`를 실행하여 binlog 파일 이름 및 위치를 확인할 수 있습니다.  
이전 버전의 MySQL에는 `SHOW MASTER STATUS` 대신 `SHOW BINARY LOG STATUS`가 사용되었습니다. 8.4 이전 MySQL 버전을 사용하는 경우 `SHOW MASTER STATUS`를 사용합니다.

 *ssl\$1encryption*   
복제 연결에 보안 소켓 계층(SSL) 암호화를 사용할지 여부를 지정하는 값입니다. 1은 SSL 암호화 사용, 0은 암호화 사용 안 함입니다. 기본값은 0입니다.  
`SOURCE_SSL_VERIFY_SERVER_CERT` 옵션은 지원되지 않습니다. 이 옵션은 0으로 설정되어 있는데, 이는 연결이 암호화되었지만 인증서는 확인되지 않았음을 의미합니다.

 *channel\$1name*   
복제 채널의 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

 마스터 사용자는 `mysql.rds_set_external_source_for_channel` 프로시저를 실행해야 합니다. 이 프로시저는 복제 채널을 생성할 대상 RDS for MySQL DB 인스턴스에서 실행해야 합니다.

 `mysql.rds_set_external_source_for_channel`을 실행하기 전에 다중 소스 복제본에 필요한 권한을 가진 소스 DB 인스턴스의 복제 사용자를 구성하세요. 다중 소스 복제본을 소스 DB 인스턴스에 연결하려면 소스 DB 인스턴스에 대해 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 가진 복제 사용자의 `replication_user_name` 값과 `replication_user_password` 값을 지정해야 합니다.

**소스 DB 인스턴스에서 복제 사용자를 구성하려면**

1. 선택한 MySQL 클라이언트를 사용하여 소스 DB 인스턴스에 연결하고 복제에 사용될 사용자 계정을 생성합니다. 다음은 예입니다.
**중요**  
보안 모범 사례로 다음 예제에 표시된 자리 표시자 값 이외의 암호를 지정하는 것이 좋습니다.

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. 소스 DB 인스턴스의 경우 복제 사용자에게 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다. 다음 예제에서는 도메인의 'repl\$1user' 사용자에게 모든 데이터베이스에 대한 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
   ```

암호화된 복제를 사용하려면 SSL 연결을 사용하도록 소스 DB 인스턴스를 구성합니다.

`mysql.rds_set_external_source_for_channel`을 직접 호출하여 이 복제 채널을 구성한 후 [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel)을 직접 호출하여 복제 프로세스를 시작할 수 있습니다. [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel)을 직접 호출하여 채널에서 복제를 중지하고 복제본에서 채널 구성을 제거할 수 있습니다.

`mysql.rds_set_external_source_for_channel`을 직접 호출하면 Amazon RDS는 채널별 세부 정보 없이 `mysql.rds_history` 테이블에 시간, 사용자 및 `set channel source`의 작업을 기록하고 `mysql.rds_replication_status` 테이블에는 채널 이름과 함께 이들 정보를 기록합니다. 이 정보는 내부 사용 및 모니터링 목적으로만 기록됩니다. 감사 목적으로 전체 프로시저 직접 호출을 기록하려면 애플리케이션의 특정 요구 사항에 따라 감사 로그 또는 일반 로그를 활성화하는 것이 좋습니다.

### 예시
<a name="mysql_rds_set_external_source_for_channel-examples"></a>

RDS for MySQL DB 인스턴스에서 실행할 때 다음 예제는 이 DB 인스턴스에 `channel_1` 이름이 지정된 복제 채널을 구성하여 `sourcedb.example.com` 호스트와 `3306` 포트로 지정된 소스의 데이터를 복제합니다.

```
call mysql.rds_set_external_source_for_channel(
  'sourcedb.example.com',
  3306,
  'repl_user',
  'password',
  'mysql-bin-changelog.0777',
  120,
  0,
  'channel_1');
```

## mysql.rds\$1set\$1external\$1source\$1with\$1auto\$1position\$1for\$1channel
<a name="mysql_rds_set_external_source_with_auto_position_for_channel"></a>

RDS for MySQL DB 인스턴스에서 복제 채널을 구성하고 복제 지연 옵션을 설정합니다. 전역 트랜잭션 식별자(GTID)를 기반으로 한 복제입니다.

**중요**  
이 프로시저를 실행하려면 `autocommit`를 활성화해야 합니다. 활성화하려면 `autocommit` 파라미터를 `1`로 설정합니다. 파라미터 수정에 대한 자세한 정보는 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 단원을 참조하십시오.

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

 

```
CALL mysql.rds_set_external_source_with_auto_position_for_channel (
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , ssl_encryption
  , delay
  , channel_name
);
```

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

 *host\$1name*   
RDS for MySQL 소스 DB 인스턴스의 호스트 이름 또는 IP 주소입니다.

 *host\$1port*   
RDS for MySQL 소스 DB 인스턴스에서 사용한 포트입니다. 네트워크 구성에 포트 번호를 변환하는 SSH 포트 복제가 포함되는 경우 SSH(Secure Shell)에 의해 공개되는 포트 이름을 지정하세요.

 *replication\$1user\$1name*   
RDS for MySQL 소스 DB 인스턴스에서 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 보유한 사용자의 ID입니다. 소스 인스턴스를 사용한 복제에만 사용되는 계정을 제공하는 것이 좋습니다.

 *replication\$1user\$1password*   
`replication_user_name`에 지정된 사용자 ID의 암호입니다.

 *ssl\$1encryption*   
복제 연결에 보안 소켓 계층(SSL) 암호화를 사용할지 여부를 지정하는 값입니다. 1은 SSL 암호화 사용, 0은 암호화 사용 안 함입니다. 기본값은 0입니다.  
`SOURCE_SSL_VERIFY_SERVER_CERT` 옵션은 지원되지 않습니다. 이 옵션은 0으로 설정되어 있는데, 이는 연결이 암호화되었지만 인증서는 확인되지 않았음을 의미합니다.

 *delay*   
소스 DB 인스턴스에서 복제를 지연할 최소 시간(초)입니다.  
이 파라미터에 대한 제한은 1일(86,400초)입니다.

 *channel\$1name*   
복제 채널의 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_set_external_source_with_auto_position_for_channel` 프로시저를 실행해야 합니다. 이 프로시저는 복제 채널을 생성할 대상 RDS for MySQL DB 인스턴스에서 실행해야 합니다.

`rds_set_external_source_with_auto_position_for_channel`을 실행하기 전에 다중 소스 복제본에 필요한 권한을 가진 소스 DB 인스턴스의 복제 사용자를 구성하세요. 다중 소스 복제본을 소스 DB 인스턴스에 연결하려면 소스 DB 인스턴스에 대해 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 가진 복제 사용자의 `replication_user_name` 값과 `replication_user_password` 값을 지정해야 합니다.

**소스 DB 인스턴스에서 복제 사용자를 구성하려면**

1. 선택한 MySQL 클라이언트를 사용하여 소스 DB 인스턴스에 연결하고 복제에 사용될 사용자 계정을 생성합니다. 다음은 예입니다.
**중요**  
보안 모범 사례로 다음 예제에 표시된 자리 표시자 값 이외의 암호를 지정하는 것이 좋습니다.

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. 소스 DB 인스턴스의 경우 복제 사용자에게 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다. 다음 예제에서는 도메인의 'repl\$1user' 사용자에게 모든 데이터베이스에 대한 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
   ```

암호화된 복제를 사용하려면 SSL 연결을 사용하도록 소스 DB 인스턴스를 구성합니다.

`mysql.rds_set_external_source_with_auto_position_for_channel` 직접 호출 전에 [mysql.rds\$1set\$1external\$1source\$1gtid\$1purged](mysql-stored-proc-replicating.md#mysql_rds_set_external_source_gtid_purged)를 직접 호출하여 외부 소스의 지정된 GTID 범위로 시스템 변수를 설정합니다.

`mysql.rds_set_external_source_with_auto_position_for_channel`을 직접 호출하여 Amazon RDS DB 인스턴스를 지정된 채널의 읽기 복제본으로 구성한 후, 읽기 복제본에서 [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel)을 직접 호출하여 해당 채널에서 복제 프로세스를 시작할 수 있습니다.

`mysql.rds_set_external_source_with_auto_position_for_channel`을 직접 호출하여 이 복제 채널을 구성한 후 [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel)을 직접 호출하여 복제 프로세스를 시작할 수 있습니다. [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel)을 직접 호출하여 채널에서 복제를 중지하고 복제본에서 채널 구성을 제거할 수 있습니다.

### 예시
<a name="mysql_rds_set_external_master_with_auto_position_for_channel-examples"></a>

MySQL용 RDS DB 인스턴스에서 실행할 때 다음 예제는 이 DB 인스턴스에 `channel_1` 이름이 지정된 복제 채널을 구성하여 `sourcedb.example.com` 호스트 및 `3306` 포트로 지정된 소스에서 데이터를 복제하도록 구성하고 최소 복제 지연 시간을 1시간(3,600초)으로 설정합니다. 즉 소스 RDS for MySQL DB 인스턴스의 변경 사항은 최소 1시간 동안 다중 소스 복제본에 적용되지 않습니다.

```
call mysql.rds_set_external_source_with_auto_position_for_channel(
  'sourcedb.example.com',
  3306,
  'repl_user',
  'password',
  1,
  3600,
  'channel_1');
```

## mysql.rds\$1set\$1external\$1source\$1with\$1delay\$1for\$1channel
<a name="mysql_rds_set_external_source_with_delay_for_channel"></a>

RDS for MySQL DB 인스턴스의 복제 채널을 지정된 복제 지연으로 구성합니다.

**중요**  
이 프로시저를 실행하려면 `autocommit`를 활성화해야 합니다. 활성화하려면 `autocommit` 파라미터를 `1`로 설정합니다. 파라미터 수정에 대한 자세한 정보는 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 단원을 참조하십시오.

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

 

```
CALL mysql.rds_set_external_source_with_delay_for_channel (
  host_name
  , host_port
  , replication_user_name
  , replication_user_password
  , mysql_binary_log_file_name
  , mysql_binary_log_file_location
  , ssl_encryption
  , delay
  , channel_name
);
```

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

 *host\$1name*   
RDS for MySQL 소스 DB 인스턴스의 호스트 이름 또는 IP 주소입니다.

 *host\$1port*   
RDS for MySQL 소스 DB 인스턴스에서 사용한 포트입니다. 네트워크 구성에 포트 번호를 변환하는 SSH 포트 복제가 포함되는 경우 SSH(Secure Shell)에 의해 공개되는 포트 이름을 지정하세요.

 *replication\$1user\$1name*   
RDS for MySQL 소스 DB 인스턴스에서 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 보유한 사용자의 ID입니다. 소스 인스턴스를 사용한 복제에만 사용되는 계정을 제공하는 것이 좋습니다.

 *replication\$1user\$1password*   
`replication_user_name`에 지정된 사용자 ID의 암호입니다.

 *mysql\$1binary\$1log\$1file\$1name*   
복제 정보를 포함하는 소스 DB 인스턴스의 이진 로그 이름입니다.

 *mysql\$1binary\$1log\$1file\$1location*   
복제 시 복제 정보를 읽기 시작할 `mysql_binary_log_file_name` 이진 로그 내 위치입니다.  
소스 데이터베이스 인스턴스의 `SHOW BINARY LOG STATUS`를 실행하여 binlog 파일 이름 및 위치를 확인할 수 있습니다.  
이전 버전의 MySQL에는 `SHOW MASTER STATUS` 대신 `SHOW BINARY LOG STATUS`가 사용되었습니다. 8.4 이전 MySQL 버전을 사용하는 경우 `SHOW MASTER STATUS`를 사용합니다.

 *ssl\$1encryption*   
복제 연결에 보안 소켓 계층(SSL) 암호화를 사용할지 여부를 지정하는 값입니다. 1은 SSL 암호화 사용, 0은 암호화 사용 안 함입니다. 기본값은 0입니다.  
`SOURCE_SSL_VERIFY_SERVER_CERT` 옵션은 지원되지 않습니다. 이 옵션은 0으로 설정되어 있는데, 이는 연결이 암호화되었지만 인증서는 확인되지 않았음을 의미합니다.

 *delay*   
소스 DB 인스턴스에서 복제를 지연할 최소 시간(초)입니다.  
이 파라미터에 대한 제한은 1일(86,400초)입니다.

 *channel\$1name*   
복제 채널의 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_set_external_source_with_delay_for_channel` 프로시저를 실행해야 합니다. 이 프로시저는 복제 채널을 생성할 대상 RDS for MySQL DB 인스턴스에서 실행해야 합니다.

`mysql.rds_set_external_source_with_delay_for_channel`을 실행하기 전에 다중 소스 복제본에 필요한 권한을 가진 소스 DB 인스턴스의 복제 사용자를 구성하세요. 다중 소스 복제본을 소스 DB 인스턴스에 연결하려면 소스 DB 인스턴스에 대해 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 가진 복제 사용자의 `replication_user_name` 값과 `replication_user_password` 값을 지정해야 합니다.

**소스 DB 인스턴스에서 복제 사용자를 구성하려면**

1. 선택한 MySQL 클라이언트를 사용하여 소스 DB 인스턴스에 연결하고 복제에 사용될 사용자 계정을 생성합니다. 다음은 예입니다.
**중요**  
보안 모범 사례로 다음 예제에 표시된 자리 표시자 값 이외의 암호를 지정하는 것이 좋습니다.

   ```
   CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
   ```

1. 소스 DB 인스턴스의 경우 복제 사용자에게 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다. 다음 예제에서는 도메인의 'repl\$1user' 사용자에게 모든 데이터베이스에 대한 `REPLICATION CLIENT` 및 `REPLICATION SLAVE` 권한을 부여합니다.

   ```
   GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
   ```

암호화된 복제를 사용하려면 SSL 연결을 사용하도록 소스 DB 인스턴스를 구성합니다.

`mysql.rds_set_external_source_with_delay_for_channel`을 직접 호출하여 이 복제 채널을 구성한 후 [mysql.rds\$1start\$1replication\$1for\$1channel](#mysql_rds_start_replication_for_channel)을 직접 호출하여 복제 프로세스를 시작할 수 있습니다. [mysql.rds\$1reset\$1external\$1source\$1for\$1channel](#mysql_rds_reset_external_source_for_channel)을 직접 호출하여 채널에서 복제를 중지하고 복제본에서 채널 구성을 제거할 수 있습니다.

`mysql.rds_set_external_source_with_delay_for_channel`을 직접 호출하면 Amazon RDS는 채널별 세부 정보 없이 `mysql.rds_history` 테이블에 시간, 사용자 및 `set channel source`의 작업을 기록하고 `mysql.rds_replication_status` 테이블에는 채널 이름과 함께 이들 정보를 기록합니다. 이 정보는 내부 사용 및 모니터링 목적으로만 기록됩니다. 감사 목적으로 전체 프로시저 직접 호출을 기록하려면 애플리케이션의 특정 요구 사항에 따라 감사 로그 또는 일반 로그를 활성화하는 것이 좋습니다.

### 예시
<a name="mysql_rds_set_external_source_with_delay_for_channel-examples"></a>

MySQL용 RDS DB 인스턴스에서 실행할 때 다음 예제는 이 DB 인스턴스에 `channel_1` 이름이 지정된 복제 채널을 구성하여 `sourcedb.example.com` 호스트 및 `3306` 포트로 지정된 소스에서 데이터를 복제하도록 구성하고 최소 복제 지연 시간을 1시간(3,600초)으로 설정합니다. 즉 소스 RDS for MySQL DB 인스턴스의 변경 사항은 최소 1시간 동안 다중 소스 복제본에 적용되지 않습니다.

```
call mysql.rds_set_external_source_with_delay_for_channel(
  'sourcedb.example.com',
  3306,
  'repl_user',
  'password',
  'mysql-bin-changelog.000777',
  120,
  1,
  3600,
  'channel_1');
```

## mysql.rds\$1set\$1source\$1auto\$1position\$1for\$1channel
<a name="mysql_rds_set_source_auto_position_for_channel"></a>

지정된 채널의 복제 모드를 바이너리 로그 파일 위치 또는 글로벌 트랜잭션 식별자(GTID)를 기반으로 설정합니다.

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

 

```
CALL mysql.rds_set_source_auto_position_for_channel (
auto_position_mode
 , channel_name
);
```

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

 *auto\$1position\$1mode*   
로그 파일 위치 복제 또는 GTID를 기반으로 하는 복제를 사용할지 여부를 나타내는 값:  
+ `0` – 바이너리 로그 파일 위치를 기반으로 한 복제 방법을 사용합니다. 기본값은 `0`입니다.
+ `1` – GTID 기반 복제 방법을 사용합니다.

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_set_source_auto_position_for_channel` 프로시저를 실행해야 합니다. 이 프로시저는 지정된 채널에서 복제를 다시 시작하여 지정된 자동 위치 모드를 적용합니다.

### 예시
<a name="mysql_rds_set_source_auto_position_for_channel-examples"></a>

다음 예제에서는 GTID 기반 복제 방법을 사용하도록 channel\$11의 자동 위치 모드를 설정합니다.

```
call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');
```

## mysql.rds\$1set\$1source\$1delay\$1for\$1channel
<a name="mysql_rds_set_source_delay_for_channel"></a>

소스 데이터베이스 인스턴스에서 지정된 채널의 다중 소스 복제본으로 복제를 지연할 최소 시간(초)을 설정합니다.

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

```
CALL mysql.rds_set_source_delay_for_channel(delay, channel_name);
```

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

 *delay*   
소스 DB 인스턴스에서 복제를 지연할 최소 시간(초)입니다.  
이 파라미터에 대한 제한은 1일(86,400초)입니다.

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_set_source_delay_for_channel` 프로시저를 실행해야 합니다. 프로시저를 사용하려면 우선 `mysql.rds_stop_replication_for_channel`을 직접 호출하여 복제를 중지합니다. 그런 다음 이 프로시저를 직접 호출하여 복제 지연 값을 설정합니다. 지연이 설정되면 `mysql.rds_start_replication_for_channel`을 직접 호출하여 복제를 다시 시작합니다.

### 예시
<a name="mysql_rds_set_source_delay_for_channel-examples"></a>

다음 예제에서는 다중 소스 복제본의 `channel_1`에 있는 소스 데이터베이스 인스턴스에서 최소 1시간(3,600초) 동안 지연을 설정합니다.

```
CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');
```

## mysql.rds\$1skip\$1repl\$1error\$1for\$1channel
<a name="mysql_rds_skip_repl_error_for_channel"></a>

지정된 채널의 MySQL DB 다중 소스 복제본의 바이너리 로그 이벤트를 건너뛰고 지정된 채널의 복제 오류를 삭제합니다.

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

 

```
CALL mysql.rds_skip_repl_error_for_channel(channel_name);
```

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

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 읽기 전용 복제본에서 `mysql.rds_skip_repl_error_for_channel` 프로시저를 실행해야 합니다. `mysql.rds_skip_repl_error`가 읽기 복제본의 오류를 건너뛰는 것과 비슷한 방식으로 이 프로시저를 사용할 수 있습니다. 자세한 내용은 [mysql.rds\$1skip\$1repl\$1error 프로시저 호출](Appendix.MySQL.CommonDBATasks.SkipError.md#Appendix.MySQL.CommonDBATasks.SkipError.procedure) 단원을 참조하십시오.

**참고**  
GTID 기반 복제의 오류를 건너뛰려면 이 [mysql.rds\$1skip\$1transaction\$1with\$1gtid](mysql-stored-proc-gtid.md#mysql_rds_skip_transaction_with_gtid) 프로시저를 대신 사용할 것을 권장합니다.

오류가 있는지 여부를 판별하려면 MySQL `SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G` 명령을 실행합니다. 중대한 복제 오류가 아닌 경우 `mysql.rds_skip_repl_error_for_channel`를 사용하여 오류를 건너뛸 수 있습니다. 오류가 여러 개인 경우 `mysql.rds_skip_repl_error_for_channel`은 지정된 복제 채널의 첫 번째 오류를 삭제한 후 다른 오류가 있음을 경고합니다. `SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G`를 사용하여 다음 오류에 대한 적합한 조치를 결정할 수 있습니다. 반환된 값에 대한 자세한 내용은 MySQL 설명서의 [SHOW SLAVE STATUS 문](https://dev.mysql.com/doc/refman/8.0/en/show-replica-status.html)을 참조하세요.

## mysql.rds\$1start\$1replication\$1for\$1channel
<a name="mysql_rds_start_replication_for_channel"></a>

RDS for MySQL DB 인스턴스에서 지정된 채널의 다중 소스 복제본으로의 복제를 시작합니다.

**참고**  
[mysql.rds\$1start\$1replication\$1until\$1for\$1channel](#mysql_rds_start_replication_until_for_channel) 또는 [mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel](#mysql_rds_start_replication_until_gtid_for_channel) 저장 프로시저를 사용하여 RDS for MySQL DB 인스턴스에서 복제를 시작하고 지정된 바이너리 로그 파일 위치에서 복제를 중지할 수 있습니다.

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

 

```
CALL mysql.rds_start_replication_for_channel(channel_name);
```

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

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_start_replication_for_channel` 프로시저를 실행해야 합니다. 소스 RDS for MySQL DB 인스턴스에서 데이터를 가져온 후 다중 소스 복제본에서 이 명령을 실행하여 지정된 채널에서 복제를 시작합니다.

### 예시
<a name="mysql_rds_start_replication_for_channel-examples"></a>

다음 예제에서는 다중 소스 복제본의 `channel_1`에서 복제를 시작합니다.

```
CALL mysql.rds_start_replication_for_channel('channel_1');
```

## mysql.rds\$1start\$1replication\$1until\$1for\$1channel
<a name="mysql_rds_start_replication_until_for_channel"></a>

지정된 채널의 RDS for MySQL DB 인스턴스에서 복제를 시작하고 지정된 바이너리 로그 파일 위치에서 복제를 중지합니다.

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

 

```
CALL mysql.rds_start_replication_until_for_channel (
replication_log_file
  , replication_stop_point
  , channel_name
);
```

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

 *replication\$1log\$1file*   
복제 정보를 포함하는 소스 DB 인스턴스의 이진 로그 이름입니다.

 *replication\$1stop\$1point *   
복제를 중지할 `replication_log_file` 바이너리 로그 내 위치입니다.

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_start_replication_until_for_channel` 프로시저를 실행해야 합니다. 이 프로시저를 사용하면 복제가 시작되었다가 지정된 binlog 파일 위치에 도달하면 복제가 중지됩니다. 이 프로시저는 `SQL_THREAD` 및 `IO_THREAD`를 모두 중지합니다.

`replication_log_file` 파라미터에 지정된 파일 이름은 소스 DB 인스턴스 binlog 파일 이름과 일치해야 합니다.

`replication_stop_point` 파라미터가 과거에 해당하는 중지 위치를 지정하는 경우 복제가 즉시 중지됩니다.

### 예시
<a name="mysql_rds_start_replication_until_for_channel-examples"></a>

다음 예에서는 `channel_1`에서 복제를 시작하고 `mysql-bin-changelog.000777` 바이너리 로그 파일의 `120` 위치에 도달할 때까지 변경 사항을 복제합니다.

```
call mysql.rds_start_replication_until_for_channel(
  'mysql-bin-changelog.000777',
  120,
  'channel_1'
  );
```

## mysql.rds\$1start\$1replication\$1until\$1gtid\$1for\$1channel
<a name="mysql_rds_start_replication_until_gtid_for_channel"></a>

RDS for MySQL DB 인스턴스에서 지정된 채널에 복제를 시작하고 지정된 전역 트랜잭션 식별자(GTID)에서 복제를 중지합니다.

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

 

```
CALL mysql.rds_start_replication_until_gtid_for_channel(gtid,channel_name);
```

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

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

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

마스터 사용자는 `mysql.rds_start_replication_until_gtid_for_channel` 프로시저를 실행해야 합니다. 이 프로시저는 지정된 채널에서 복제를 시작하고 지정된 GTID 값까지 모든 변경 내용을 적용합니다. 그런 다음 채널에서의 복제가 중지됩니다.

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

이 프로시저를 실행하기 전에 `replica_parallel_workers` 또는 `slave_parallel_workers` 값을 `0`으로 설정하여 멀티스레드 복제를 비활성화해야 합니다.

### 예시
<a name="mysql_rds_start_replication_until_gtid_for_channel-examples"></a>

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

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

## mysql.rds\$1stop\$1replication\$1for\$1channel
<a name="mysql_rds_stop_replication_for_channel"></a>

지정된 채널의 MySQL DB 인스턴스에서 복제를 중지합니다.

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

 

```
CALL mysql.rds_stop_replication_for_channel(channel_name);
```

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

 *channel\$1name*   
다중 소스 복제본의 복제 채널 이름입니다. 각 복제 채널은 특정 호스트 및 포트에서 실행되는 단일 소스 RDS for MySQL DB 인스턴스로부터 바이너리 로그 이벤트를 수신합니다.

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

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

### 예시
<a name="mysql_rds_stop_replication_for_channel-examples"></a>

다음 예시에서는 다중 소스 복제본의 `channel_1`에서 복제를 중지합니다.

```
CALL mysql.rds_stop_replication_for_channel('channel_1');
```