

# Configurar um cluster ativo-ativo com novas instâncias de banco de dados
<a name="mysql-active-active-clusters-setting-up"></a>

Conclua as etapas a seguir para configurar um cluster ativo-ativo usando novas instâncias de banco de dados do Amazon RDS para MySQL.

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).

**Topics**
+ [Etapa 1: Definir os parâmetros de cluster ativo-ativo em um ou mais grupos de parâmetros personalizados](#mysql-active-active-clusters-setting-up-parameter-group)
+ [Etapa 2: Criar instâncias de banco de dados do RDS para MySQL para o cluster ativo-ativo](#mysql-active-active-clusters-setting-up-db-instances)
+ [Etapa 3: especificar as instâncias de banco de dados no cluster ativo-ativo](#mysql-active-active-clusters-setting-up-associate-parameter-groups)
+ [Etapa 4: inicializar o grupo em uma instância de banco de dados e iniciar a replicação](#mysql-active-active-clusters-setting-up-start-replication-first)
+ [Etapa 5: iniciar a replicação nas outras instâncias de banco de dados no cluster ativo-ativo](#mysql-active-active-clusters-setting-up-start-replication-other)
+ [Etapa 6: (recomendado) conferir o status do cluster ativo-ativo](#mysql-active-active-clusters-setting-up-view)
+ [Etapa 7: (opcional) importar dados para uma instância de banco de dados no cluster ativo-ativo](#mysql-active-active-clusters-import)

## 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-setting-up-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: Criar instâncias de banco de dados do RDS para MySQL para o cluster ativo-ativo
<a name="mysql-active-active-clusters-setting-up-db-instances"></a>

Clusters ativos-ativos são compatíveis com as seguintes versões de instâncias de banco de dados do RDS para MySQL:
+ Todas as versões do MySQL 8.4
+ MySQL versão 8.0.35 e versões secundárias posteriores

É possível criar até nove novas instâncias de banco de dados para o cluster.

É possível usar o Console de gerenciamento da AWS ou a AWS CLI para criar instâncias de banco de dados. Para ter mais informações sobre como criar uma instância de banco de dados, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md). Ao criar a instância de banco de dados, associe-a a um grupo de parâmetros de banco de dados que você criou ou modificou na etapa anterior.

## Etapa 3: especificar as instâncias de banco de dados no cluster ativo-ativo
<a name="mysql-active-active-clusters-setting-up-associate-parameter-groups"></a>

No grupo de parâmetros de banco de dados associado a cada instância de banco de dados, defina o parâmetro `group_replication_group_seeds` como os endpoints das instâncias de banco de dados que você deseja incluir no cluster.

É 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,myactivedb2.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb3.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,myactivedb2.123456789012.us-east-1.rds.amazonaws.com:3306,myactivedb3.123456789012.us-east-1.rds.amazonaws.com:3306',ApplyMethod=immediate"
```

**dica**  
Defina o parâmetro `group_replication_group_seeds` em cada grupo de parâmetros de banco de dados associado a uma instância de banco de dados no cluster ativo-ativo.

## Etapa 4: inicializar o grupo em uma instância de banco de dados e iniciar a replicação
<a name="mysql-active-active-clusters-setting-up-start-replication-first"></a>

É possível selecionar qualquer novo banco de dados para inicializar o grupo e iniciar a replicação. Para fazer isso, realize as etapas a seguir:

1. Selecione uma instância de banco de dados no cluster ativo-ativo e conecte-se a essa instância de banco de dados 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 5: iniciar a replicação nas outras instâncias de banco de dados no cluster ativo-ativo
<a name="mysql-active-active-clusters-setting-up-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 6: (recomendado) conferir o status do cluster ativo-ativo
<a name="mysql-active-active-clusters-setting-up-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.

## Etapa 7: (opcional) importar dados para uma instância de banco de dados no cluster ativo-ativo
<a name="mysql-active-active-clusters-import"></a>

É possível importar dados de um banco de dados MySQL para uma instância de banco de dados no cluster ativo-ativo. Depois que os dados são importados, a Group Replication os replica para as outras instâncias de banco de dados no cluster.

Para ter informações sobre como importar dados, consulte [Importar dados para um banco de dados do Amazon RDS para MySQL com tempo de inatividade reduzido](mysql-importing-data-reduced-downtime.md).