

# Converter uma instância de banco de dados existente em um cluster ativo-ativo
<a name="mysql-active-active-clusters-converting"></a>

A versão do mecanismo de banco de dados da instância de banco de dados que você deseja migrar para um cluster ativo-ativo deve ser uma destas:
+ Todas as versões do MySQL 8.4
+ MySQL 8.0.35 e versões secundárias posteriores

Se você precisar atualizar a versão do mecanismo, consulte [Atualizações do mecanismo de banco de dados do RDS para MySQL](USER_UpgradeDBInstance.MySQL.md).

Se estiver configurando um cluster ativo-ativo com instâncias de banco de dados em mais de uma VPC, cumpra os pré-requisitos em [Preparar um cluster ativo-ativo entre VPCs](mysql-active-active-clusters-cross-vpc-prerequisites.md).

Conclua as etapas a seguir para migrar uma instância de banco de dados existente para um cluster ativo-ativo do RDS para MySQL.

**Topics**
+ [Etapa 1: Definir os parâmetros de cluster ativo-ativo em um ou mais grupos de parâmetros personalizados](#mysql-active-active-clusters-converting-parameter-group)
+ [Etapa 2: Associar a instância de banco de dados a um grupo de parâmetros de banco de dados que tenha os parâmetros obrigatórios da Group Replication definidos](#mysql-active-active-clusters-converting-associate-parameter-group)
+ [Etapa 3: Criar o cluster ativo-ativo](#mysql-active-active-clusters-converting-associate-parameter-groups)
+ [Etapa 4: Criar instâncias de banco de dados do RDS para MySQL adicionais para o cluster ativo-ativo](#mysql-active-active-clusters-converting-add-db-instances)
+ [Etapa 5: Inicializar o grupo na instância de banco de dados que você está convertendo](#mysql-active-active-clusters-converting-start-replication-first)
+ [Etapa 6: Iniciar a replicação nas outras instâncias de banco de dados no cluster ativo-ativo](#mysql-active-active-clusters-converting-start-replication-other)
+ [Etapa 7: (Recomendado) Conferir o status do cluster ativo-ativo](#mysql-active-active-clusters-converting-view)

## Etapa 1: Definir os parâmetros de cluster ativo-ativo em um ou mais grupos de parâmetros personalizados
<a name="mysql-active-active-clusters-converting-parameter-group"></a>

As instâncias de banco de dados do RDS para MySQL em um cluster ativo-ativo devem estar associadas a um grupo de parâmetros personalizado que tenha a configuração correta para os parâmetros obrigatórios. Para ter informações sobre os parâmetros e a configuração necessária para cada um, consulte [Configurações de parâmetros obrigatórias para clusters ativos-ativos](mysql-active-active-clusters-parameters.md).

É possível definir esses parâmetros em novos grupos de parâmetros ou em grupos de parâmetros existentes. No entanto, para não afetar acidentalmente as instâncias de banco de dados que não fazem parte do cluster ativo-ativo, é altamente recomendável criar um grupo de parâmetros personalizado. As instâncias de banco de dados em um cluster ativo-ativo podem ser associadas ao mesmo grupo de parâmetros de banco de dados ou a grupos de parâmetros de banco de dados diferentes.

É possível usar o Console de gerenciamento da AWS ou a AWS CLI para criar um grupo de parâmetros personalizado. Para obter mais informações, consulte [Criar um grupo de parâmetros de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Creating.md). O seguinte exemplo executa o comando [create-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-parameter-group.html) da AWS CLI para criar um grupo de parâmetros de banco de dados personalizado chamado `myactivepg` para o RDS para MySQL 8.0:

Para Linux, macOS ou 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"
```

Para 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"
```

Também é possível usar o Console de gerenciamento da AWS ou a AWS CLI para definir os parâmetros no grupo de parâmetros personalizado. Para obter mais informações, consulte [Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

O seguinte exemplo executa o comando [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) da AWS CLI para definir os parâmetros para o RDS para MySQL 8.0. Para usar esse exemplo com o RDS para MySQL 8.4, altere `slave_preserve_commit_order` para `replica_preserve_commit_order`.

Para Linux, macOS ou 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"
```

Para 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"
```

## Etapa 2: Associar a instância de banco de dados a um grupo de parâmetros de banco de dados que tenha os parâmetros obrigatórios da Group Replication definidos
<a name="mysql-active-active-clusters-converting-associate-parameter-group"></a>

Associe a instância de banco de dados a um grupo de parâmetros que você criou ou modificou na etapa anterior. Para instruções, consulte [Associar um grupo de parâmetros de banco de dados a uma instância de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Associating.md).

Reinicialize a instância de banco de dados para que as novas configurações dos parâmetros tenham efeito. Para instruções, consulte [Reinicializar uma instância de banco de dados](USER_RebootInstance.md).

## Etapa 3: Criar o cluster ativo-ativo
<a name="mysql-active-active-clusters-converting-associate-parameter-groups"></a>

No grupo de parâmetros de banco de dados associado à instância de banco de dados, defina o parâmetro `group_replication_group_seeds` como o endpoint da instância de banco de dados que você está convertendo.

É possível usar o Console de gerenciamento da AWS ou a AWS CLI para definir o parâmetro. Não é necessário reinicializar a instância de banco de dados depois de definir esse parâmetro. Para obter mais informações sobre como configurar parâmetros, consulte [Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS](USER_WorkingWithParamGroups.Modifying.md).

O seguinte exemplo executa o comando [modify-db-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-parameter-group.html) da AWS CLI para definir os parâmetros:

Para Linux, macOS ou 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"
```

Para 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"
```

## Etapa 4: Criar instâncias de banco de dados do RDS para MySQL adicionais para o cluster ativo-ativo
<a name="mysql-active-active-clusters-converting-add-db-instances"></a>

Para criar instâncias de banco de dados adicionais para o cluster ativo-ativo, execute a recuperação pontual na instância de banco de dados que você está convertendo. Para instruções, consulte [Adicionar uma instância de banco de dados a um cluster ativo-ativo usando a recuperação para um ponto no tempo](mysql-active-active-clusters-adding.md#mysql-active-active-clusters-adding-pitr).

Um cluster ativo-ativo pode ter até nove instâncias de banco de dados. Execute a recuperação pontual na instância de banco de dados até ter o número de instâncias de banco de dados que você deseja para o cluster. Ao realizar a recuperação pontual, não se esqueça de associar a instância de banco de dados que você está adicionando a um grupo de parâmetros de banco de dados que tenha `rds.group_replication_enabled` definida como `1`. Caso contrário, a Group Replication não será iniciada na instância de banco de dados recém-adicionada.

## Etapa 5: Inicializar o grupo na instância de banco de dados que você está convertendo
<a name="mysql-active-active-clusters-converting-start-replication-first"></a>

Inicialize o grupo e inicie a replicação:

1. Conecte-se à instância de banco de dados que você está convertendo em um cliente SQL. Para ter mais informações sobre como se conectar a uma instância de banco de dados do RDS para MySQL, consulte [Conectar-se à instância de banco de dados do MySQL](USER_ConnectToInstance.md).

1. No cliente SQL, execute os procedimentos armazenados a seguir e substitua *group\$1replication\$1user\$1password* pela senha do usuário `rdsgrprepladmin`. O usuário `rdsgrprepladmin` está reservado para conexões da Group Replication em um cluster ativo-ativo. A senha desse usuário deve ser a mesma em todas as instâncias de banco de dados em um cluster ativo-ativo.

   ```
   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);
   ```

   Este exemplo define o valor `binlog retention hours` como `168`, o que significa que os arquivos de log binários são retidos por sete dias na instância de banco de dados. É possível ajustar esse valor para atender aos requisitos.

   Este exemplo especifica `1` no procedimento armazenado `mysql.rds_group_replication_start` para inicializar um novo grupo com a instância de banco de dados atual.

   Para ter mais informações sobre os procedimentos armazenados chamados no exemplo, consulte [Gerenciar clusters ativos-ativos](mysql-stored-proc-active-active-clusters.md).

## Etapa 6: Iniciar a replicação nas outras instâncias de banco de dados no cluster ativo-ativo
<a name="mysql-active-active-clusters-converting-start-replication-other"></a>

Para cada uma das instâncias de banco de dados no cluster ativo-ativo, use um cliente SQL para se conectar à instância e execute os procedimentos armazenados a seguir. Substitua *group\$1replication\$1user\$1password* pela senha do usuário `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);
```

Este exemplo define o valor `binlog retention hours` como `168`, o que significa que os arquivos de log binários são retidos por sete dias em cada instância de banco de dados. É possível ajustar esse valor para atender aos requisitos.

Este exemplo especifica `0` no procedimento armazenado `mysql.rds_group_replication_start` para inserir a instância de banco de dados atual em um grupo existente.

**dica**  
Execute esses procedimentos armazenados em todas as outras instâncias de banco de dados no cluster ativo-ativo.

## Etapa 7: (Recomendado) Conferir o status do cluster ativo-ativo
<a name="mysql-active-active-clusters-converting-view"></a>

Para garantir que cada membro do cluster esteja configurado corretamente, confira o status do cluster conectando-se a uma instância de banco de dados no cluster ativo-ativo e executando o seguinte comando SQL:

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

A saída deve exibir `ONLINE` para `MEMBER_STATE` de cada instância de banco de dados, como neste exemplo de saída:

```
+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+
| 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)
```

Para ter informações sobre os valores `MEMBER_STATE` possíveis, consulte [ Group Replication Server States](https://dev.mysql.com/doc/refman/8.0/en/group-replication-server-states.html) na documentação do MySQL.