

# 새 DB 인스턴스로 액티브-액티브 클러스터 설정
<a name="mysql-active-active-clusters-setting-up"></a>

새 Amazon RDS for MySQL DB 인스턴스를 사용하여 액티브-액티브 클러스터를 설정하려면 다음 단계를 완료하세요.

2개 이상의 VPC에 DB 인스턴스가 있는 액티브-액티브 클러스터를 설정하는 경우 [교차 VPC 액티브-액티브 클러스터 준비](mysql-active-active-clusters-cross-vpc-prerequisites.md)에 나와 있는 사전 조건을 완료해야 합니다.

**Topics**
+ [1단계: 하나 이상의 사용자 지정 파라미터 그룹에서 액티브-액티브 클러스터 파라미터 설정](#mysql-active-active-clusters-setting-up-parameter-group)
+ [2단계: 액티브-액티브 클러스터를 위한 새 RDS for MySQL DB 인스턴스 생성](#mysql-active-active-clusters-setting-up-db-instances)
+ [3단계: 액티브-액티브 클러스터의 DB 인스턴스 지정](#mysql-active-active-clusters-setting-up-associate-parameter-groups)
+ [4단계: DB 인스턴스에서 그룹 초기화 및 복제 시작](#mysql-active-active-clusters-setting-up-start-replication-first)
+ [5단계: 액티브-액티브 클러스터의 다른 DB 인스턴스에서 복제 시작](#mysql-active-active-clusters-setting-up-start-replication-other)
+ [6단계: (권장) 액티브-액티브 클러스터의 상태 확인](#mysql-active-active-clusters-setting-up-view)
+ [7단계: (선택 사항) 액티브-액티브 클러스터의 DB 인스턴스로 데이터 가져오기](#mysql-active-active-clusters-import)

## 1단계: 하나 이상의 사용자 지정 파라미터 그룹에서 액티브-액티브 클러스터 파라미터 설정
<a name="mysql-active-active-clusters-setting-up-parameter-group"></a>

액티브-액티브 클러스터의 RDS for MySQL DB 인스턴스는 필수 파라미터가 올바르게 설정된 사용자 지정 파라미터 그룹과 연결되어야 합니다. 파라미터 및 각 파라미터에 대한 필수 설정에 대한 정보는 [액티브-액티브 클러스터의 필수 파라미터 설정](mysql-active-active-clusters-parameters.md) 섹션을 참조하세요.

새 파라미터 그룹이나 기존 파라미터 그룹에서 이러한 파라미터를 설정할 수 있습니다. 하지만 액티브-액티브 클러스터에 속하지 않은 DB 인스턴스에 실수로 영향을 주지 않으려면 새 사용자 지정 파라미터 그룹을 생성하는 것이 좋습니다. 액티브-액티브 클러스터의 DB 인스턴스를 동일한 DB 파라미터 그룹이나 다른 DB 파라미터 그룹과 연결할 수 있습니다.

AWS Management Console 또는 AWS CLI로 사용자 지정 파라미터 그룹을 새로 생성할 수 있습니다. 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹 생성](USER_WorkingWithParamGroups.Creating.md) 섹션을 참조하세요. 다음은 [create-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) AWS CLI 명령을 실행하여 RDS for MySQL 8.0에 대해 이름이 `{{myactivepg}}`인 사용자 지정 DB 파라미터 그룹을 만드는 예시입니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds create-db-parameter-group \
  --db-parameter-group-name {{myactivepg}} \
  --db-parameter-group-family mysql8.0 \
  --description "{{Parameter group for active-active clusters}}"
```

Windows의 경우:

```
aws rds create-db-parameter-group ^
  --db-parameter-group-name {{myactivepg}} ^
  --db-parameter-group-family mysql8.0 ^
  --description "{{Parameter group for active-active clusters}}"
```

AWS Management Console 또는 AWS CLI로 사용자 지정 파라미터 그룹에서 파라미터를 설정할 수도 있습니다. 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

다음 예시에서는 [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) AWS CLI 명령을 실행하여 RDS for MySQL 8.0에 대해 파라미터를 설정합니다. 이 예시를 RDS for MySQL 8.4와 함께 사용하려면 `slave_preserve_commit_order`를 `replica_preserve_commit_order`로 변경합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name {{myactivepg}} \
  --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" \
               "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" \
               "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" \
               "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" \
               "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" \
               "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" \
               "ParameterName='group_replication_group_name',ParameterValue='{{11111111-2222-3333-4444-555555555555}}',ApplyMethod=pending-reboot"
```

Windows의 경우:

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name myactivepg ^
  --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" ^
               "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" ^
               "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" ^
               "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" ^
               "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" ^
               "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" ^
               "ParameterName='group_replication_group_name',ParameterValue='{{11111111-2222-3333-4444-555555555555}}',ApplyMethod=pending-reboot"
```

## 2단계: 액티브-액티브 클러스터를 위한 새 RDS for MySQL DB 인스턴스 생성
<a name="mysql-active-active-clusters-setting-up-db-instances"></a>

활성-활성 클러스터는 다음 버전의 RDS for MySQL DB 인스턴스에서 지원됩니다.
+ 모든 MySQL 8.4 버전
+ MySQL 버전 8.0.35 이상 마이너 버전

클러스터에 대해 새 DB 인스턴스를 9개까지 생성할 수 있습니다.

AWS Management Console 또는 AWS CLI를 사용하여 새 DB 인스턴스를 생성할 수 있습니다. DB 인스턴스를 생성하는 방법에 대한 자세한 내용은 [Amazon RDS DB 인스턴스 생성](USER_CreateDBInstance.md) 섹션을 참조하세요. DB 인스턴스를 만들 때 이전 단계에서 만들거나 수정한 DB 파라미터 그룹과 연결합니다.

## 3단계: 액티브-액티브 클러스터의 DB 인스턴스 지정
<a name="mysql-active-active-clusters-setting-up-associate-parameter-groups"></a>

각 DB 인스턴스와 연결된 DB 파라미터 그룹에서 클러스터에 포함하려는 DB 인스턴스의 엔드포인트로 `group_replication_group_seeds` 파라미터를 설정합니다.

AWS Management Console 또는 AWS CLI를 사용하여 파라미터를 설정할 수 있습니다. 이 파라미터를 설정한 후 DB 인스턴스를 재부팅할 필요가 없습니다. 파라미터 설정에 대한 자세한 내용은 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md) 섹션을 참조하세요.

다음 예제에서는 [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) AWS CLI 명령을 실행하여 파라미터를 설정합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds modify-db-parameter-group \
  --db-parameter-group-name {{myactivepg}} \
  --parameters "ParameterName='group_replication_group_seeds',ParameterValue='{{myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb2.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb3.123456789012.us-east-1.rds.amazonaws.com:3306}}',ApplyMethod=immediate"
```

Windows의 경우:

```
aws rds modify-db-parameter-group ^
  --db-parameter-group-name {{myactivepg}} ^
  --parameters "ParameterName='group_replication_group_seeds',ParameterValue='{{myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb2.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb3.123456789012.us-east-1.rds.amazonaws.com:3306}}',ApplyMethod=immediate"
```

**작은 정보**  
액티브-액티브 클러스터의 DB 인스턴스와 연결된 각 DB 파라미터 그룹에서 `group_replication_group_seeds` 파라미터를 설정해야 합니다.

## 4단계: DB 인스턴스에서 그룹 초기화 및 복제 시작
<a name="mysql-active-active-clusters-setting-up-start-replication-first"></a>

새 DB를 선택하여 그룹을 초기화하고 복제를 시작할 수 있습니다. 이렇게 하려면 다음 단계를 완료합니다.

1. 액티브-액티브 클러스터에서 DB 인스턴스를 선택하고 SQL 클라이언트에서 해당 DB 인스턴스에 연결합니다. RDS for MySQL DB 인스턴스 연결에 대한 자세한 내용은 [MySQL DB 인스턴스에 연결](USER_ConnectToInstance.md) 섹션을 참조하세요.

1. SQL 클라이언트에서 다음 저장 프로시저를 실행하고 {{group\_replication\_user\_password}}를 `rdsgrprepladmin` 사용자의 암호로 대체합니다. `rdsgrprepladmin` 사용자는 액티브-액티브 클러스터의 그룹 복제 연결에만 사용할 수 있습니다. 이 사용자의 암호는 액티브-액티브 클러스터의 모든 DB 인스턴스에서 동일해야 합니다.

   ```
   call mysql.rds_set_configuration('binlog retention hours', {{168}}); -- 7 days binlog
   call mysql.rds_group_replication_create_user('{{group_replication_user_password}}');
   call mysql.rds_group_replication_set_recovery_channel('{{group_replication_user_password}}');
   call mysql.rds_group_replication_start(1);
   ```

   이 예제에서는 `binlog retention hours` 값을 `168`로 설정합니다. 즉, 이진 로그 파일은 DB 인스턴스에 7일 동안 유지됩니다. 값은 사용자의 요구 사항에 맞게 조정할 수 있습니다.

   이 예제는 `mysql.rds_group_replication_start` 저장 프로시저에서 현재 DB 인스턴스로 새 그룹을 초기화하도록 `1`을 지정합니다.

   예제에서 호출한 저장 프로시저에 대한 자세한 내용은 [활성-활성 클러스터](mysql-stored-proc-active-active-clusters.md) 섹션을 참조하세요.

## 5단계: 액티브-액티브 클러스터의 다른 DB 인스턴스에서 복제 시작
<a name="mysql-active-active-clusters-setting-up-start-replication-other"></a>

액티브-액티브 클러스터의 각 DB 인스턴스에 대해 SQL 클라이언트를 사용하여 인스턴스에 연결하고 다음 저장 프로시저를 실행합니다. {{group\_replication\_user\_password}}를 `rdsgrprepladmin` 사용자의 암호로 대체합니다.

```
call mysql.rds_set_configuration('binlog retention hours', {{168}}); -- 7 days binlog
call mysql.rds_group_replication_create_user('{{group_replication_user_password}}');
call mysql.rds_group_replication_set_recovery_channel('{{group_replication_user_password}}');
call mysql.rds_group_replication_start(0);
```

이 예제에서는 `binlog retention hours` 값을 `168`로 설정합니다. 즉, 이진 로그 파일은 각 DB 인스턴스에 7일 동안 유지됩니다. 값은 사용자의 요구 사항에 맞게 조정할 수 있습니다.

이 예제는 `mysql.rds_group_replication_start` 저장 프로시저에서 현재 DB 인스턴스를 기존 그룹에 조인하도록 `0`을 지정합니다.

**작은 정보**  
액티브-액티브 클러스터의 다른 모든 DB 인스턴스에서 이러한 저장 프로시저를 실행해야 합니다.

## 6단계: (권장) 액티브-액티브 클러스터의 상태 확인
<a name="mysql-active-active-clusters-setting-up-view"></a>

클러스터의 각 멤버가 올바르게 구성되었는지 확인하려면 액티브-액티브 클러스터의 DB 인스턴스에 연결하고 다음 SQL 명령을 실행하여 클러스터의 상태를 확인합니다.

```
SELECT * FROM performance_schema.replication_group_members;
```

출력은 다음 샘플 출력과 같이 각 DB 인스턴스의 `MEMBER_STATE`에 대해 `ONLINE`으로 표시되어야 합니다.

```
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| CHANNEL_NAME              | MEMBER_ID                            | MEMBER_HOST    | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| group_replication_applier | 9854d4a2-5d7f-11ee-b8ec-0ec88c43c251 | ip-10-15-3-137 |        3306 | ONLINE       | PRIMARY     | 8.0.35         | MySQL                      |
| group_replication_applier | 9e2e9c28-5d7f-11ee-8039-0e5d58f05fef | ip-10-15-3-225 |        3306 | ONLINE       | PRIMARY     | 8.0.35         | MySQL                      |
| group_replication_applier | a6ba332d-5d7f-11ee-a025-0a5c6971197d | ip-10-15-1-83  |        3306 | ONLINE       | PRIMARY     | 8.0.35         | MySQL                      |
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
3 rows in set (0.00 sec)
```

가능한 `MEMBER_STATE` 값에 대한 자세한 내용은 MySQL 설명서의 [그룹 복제 서버 상태](https://dev.mysql.com/doc/refman/8.0/en/group-replication-server-states.html)를 참조하세요.

## 7단계: (선택 사항) 액티브-액티브 클러스터의 DB 인스턴스로 데이터 가져오기
<a name="mysql-active-active-clusters-import"></a>

MySQL 데이터베이스의 데이터를 액티브-액티브 클러스터의 DB 인스턴스로 가져올 수 있습니다. 데이터를 가져온 후 그룹 복제는 데이터를 클러스터의 다른 DB 인스턴스로 복제합니다.

데이터 가져오기에 대한 자세한 내용은 [가동 중지 시간을 줄이면서 Amazon RDS for MySQL 데이터베이스로 데이터 가져오기](mysql-importing-data-reduced-downtime.md) 섹션을 참조하세요.