

# 기존 DB 인스턴스를 액티브-액티브 클러스터로 변환
<a name="mysql-active-active-clusters-converting"></a>

활성-활성 클러스터로 마이그레이션하려는 DB 인스턴스의 DB 엔진 버전은 다음 중 하나여야 합니다.
+ 모든 MySQL 8.4 버전
+ MySQL 8.0.35 이상 마이너 버전

엔진 버전을 업그레이드해야 하는 경우 [RDS for MySQL DB 엔진 업그레이드](USER_UpgradeDBInstance.MySQL.md) 섹션을 참조하세요.

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

다음 단계를 완료하여 기존 DB 인스턴스를 RDS for MySQL용 액티브-액티브 클러스터로 마이그레이션하세요.

**Topics**
+ [1단계: 하나 이상의 사용자 지정 파라미터 그룹에서 액티브-액티브 클러스터 파라미터 설정](#mysql-active-active-clusters-converting-parameter-group)
+ [2단계: 필수 그룹 복제 파라미터가 설정된 DB 파라미터 그룹과 DB 인스턴스 연결](#mysql-active-active-clusters-converting-associate-parameter-group)
+ [3단계: 액티브-액티브 클러스터 생성](#mysql-active-active-clusters-converting-associate-parameter-groups)
+ [4단계: 액티브-액티브 클러스터를 위한 추가 RDS for MySQL DB 인스턴스 생성](#mysql-active-active-clusters-converting-add-db-instances)
+ [5단계: 변환하려는 DB 인스턴스에서 그룹 초기화](#mysql-active-active-clusters-converting-start-replication-first)
+ [6단계: 액티브-액티브 클러스터의 다른 DB 인스턴스에서 복제 시작](#mysql-active-active-clusters-converting-start-replication-other)
+ [7단계: (권장) 액티브-액티브 클러스터의 상태 확인](#mysql-active-active-clusters-converting-view)

## 1단계: 하나 이상의 사용자 지정 파라미터 그룹에서 액티브-액티브 클러스터 파라미터 설정
<a name="mysql-active-active-clusters-converting-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단계: 필수 그룹 복제 파라미터가 설정된 DB 파라미터 그룹과 DB 인스턴스 연결
<a name="mysql-active-active-clusters-converting-associate-parameter-group"></a>

DB 인스턴스를 이전 단계에서 만들거나 수정한 파라미터 그룹과 연결합니다. 지침은 [Amazon RDS의 DB 인스턴스에 DB 파라미터 그룹 연결](USER_WorkingWithParamGroups.Associating.md) 섹션을 참조하세요.

새 파라미터 설정을 적용하려면 DB 인스턴스를 재부팅하세요. 지침은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.

## 3단계: 액티브-액티브 클러스터 생성
<a name="mysql-active-active-clusters-converting-associate-parameter-groups"></a>

DB 인스턴스와 연결된 DB 파라미터 그룹에서 `group_replication_group_seeds` 파라미터를 변환할 DB 인스턴스의 엔드포인트로 설정합니다.

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',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',ApplyMethod=immediate"
```

## 4단계: 액티브-액티브 클러스터를 위한 추가 RDS for MySQL DB 인스턴스 생성
<a name="mysql-active-active-clusters-converting-add-db-instances"></a>

액티브-액티브 클러스터용 추가 DB 인스턴스를 만들려면 변환하려는 DB 인스턴스에서 특정 시점으로 복구를 수행합니다. 지침은 [특정 시점으로 복구를 사용하여 액티브-액티브 클러스터에 DB 인스턴스 추가](mysql-active-active-clusters-adding.md#mysql-active-active-clusters-adding-pitr) 섹션을 참조하세요.

액티브-액티브 클러스터에는 최대 9개의 DB 인스턴스가 있을 수 있습니다. 클러스터에 사용할 DB 인스턴스 수를 원하는 수준으로 갖출 때까지 DB 인스턴스에서 특정 시점으로 복구를 수행합니다. 특정 시점으로 복구를 수행할 때 추가할 DB 인스턴스를 `rds.group_replication_enabled`가 `1`로 설정된 DB 파라미터 그룹과 연결해야 합니다. 그렇지 않으면 새로 추가된 DB 인스턴스에서 그룹 복제가 시작되지 않습니다.

## 5단계: 변환하려는 DB 인스턴스에서 그룹 초기화
<a name="mysql-active-active-clusters-converting-start-replication-first"></a>

그룹을 초기화하고 복제를 시작합니다.

1. SQL 클라이언트에서 변환하려는 DB 인스턴스에 연결합니다. RDS for MySQL DB 인스턴스 연결에 대한 자세한 내용은 [MySQL DB 인스턴스에 연결](USER_ConnectToInstance.md) 섹션을 참조하세요.

1. SQL 클라이언트에서 다음 저장 프로시저를 실행하고 *group\$1replication\$1user\$1password*를 `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) 섹션을 참조하세요.

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

액티브-액티브 클러스터의 각 DB 인스턴스에 대해 SQL 클라이언트를 사용하여 인스턴스에 연결하고 다음 저장 프로시저를 실행합니다. *group\$1replication\$1user\$1password*를 `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 인스턴스에서 이러한 저장 프로시저를 실행해야 합니다.

## 7단계: (권장) 액티브-액티브 클러스터의 상태 확인
<a name="mysql-active-active-clusters-converting-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)를 참조하세요.