Configurar um cluster ativo-ativo com novas instâncias de banco de dados
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.
Tópicos
- Etapa 1: Definir os parâmetros de cluster ativo-ativo em um ou mais grupos de parâmetros personalizados
- Etapa 2: Criar instâncias de banco de dados do RDS para MySQL para o cluster ativo-ativo
- Etapa 3: especificar as instâncias 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
- Etapa 5: iniciar a replicação nas outras instâncias de banco de dados no cluster ativo-ativo
- Etapa 6: (recomendado) conferir o status do cluster ativo-ativo
- Etapa 7: (opcional) importar dados para uma instância de banco de dados no cluster ativo-ativo
Etapa 1: Definir os parâmetros de cluster ativo-ativo em um ou mais grupos de parâmetros personalizados
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.
É 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 AWS Management Console ou a AWS CLI para criar um grupo de parâmetros personalizado. Para ter mais informações, consulte Criar um grupo de parâmetros de banco de dados no Amazon RDS. O seguinte exemplo executa o comando create-db-parameter-group da AWS CLI para criar um grupo de parâmetros de banco de dados personalizado chamado
:myactivepg
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 AWS Management Console ou a AWS CLI para definir os parâmetros no grupo de parâmetros personalizado. Para ter mais informações, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS.
O seguinte exemplo executa o comando modify-db-parameter-group 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='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
Clusters ativos-ativos são compatíveis com a versão 8.0.35 e posterior de instâncias de banco de dados do RDS para MySQL. É possível criar até nove novas instâncias de banco de dados para o cluster.
É possível usar o AWS Management Console 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. 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
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 AWS Management Console 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.
O seguinte exemplo executa o comando modify-db-parameter-group 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
É 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:
-
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 Conexão a uma instância de banco de dados executando o mecanismo de banco de dados do MySQL.
-
No cliente SQL, execute os procedimentos armazenados a seguir e substitua
group_replication_user_password
pela senha do usuáriordsgrprepladmin
. O usuáriordsgrprepladmin
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
como168
, 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 armazenadomysql.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.
Etapa 5: iniciar a replicação nas outras instâncias de banco de dados no cluster ativo-ativo
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_replication_user_password
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
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
Etapa 7: (opcional) importar dados para uma instância de banco de dados no cluster ativo-ativo
É 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 MariaDB ou MySQL do Amazon RDS com tempo de inatividade reduzido.