Converter uma instância de banco de dados existente em um cluster ativo-ativo
A versão do mecanismo de banco de dados da instância de banco de dados do Amazon RDS para MySQL que você deseja migrar para um cluster ativo-ativo deve ser MySQL 8.0.35 ou posterior. Se você precisar atualizar a versão do mecanismo, consulte Atualizações do mecanismo de banco de dados do 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.
Conclua as etapas a seguir para migrar uma instância de banco de dados existente para um cluster ativo-ativo do RDS para MySQL.
Tópicos
- Etapa 1: Definir os parâmetros de cluster ativo-ativo em um ou mais grupos de parâmetros personalizados
- 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
- Etapa 3: Criar o cluster ativo-ativo
- Etapa 4: Criar instâncias de banco de dados do RDS para MySQL adicionais para o cluster ativo-ativo
- Etapa 5: Inicializar o grupo na instância de banco de dados que você está convertendo
- Etapa 6: Iniciar a replicação nas outras instâncias de banco de dados no cluster ativo-ativo
- Etapa 7: (Recomendado) Conferir o status do 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: 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
Associe a instância de banco de dados a um grupo de parâmetros que você criou ou modificou na etapa anterior. Para obter instruções, consulte Associar um grupo de parâmetros de banco de dados a uma instância de banco de dados no Amazon RDS.
Reinicialize a instância de banco de dados para que as novas configurações dos parâmetros tenham efeito. Para obter instruções, consulte Reinicializar uma instância de banco de dados .
Etapa 3: Criar o cluster ativo-ativo
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 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
',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
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 obter 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.
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
Inicialize o grupo e inicie a replicação:
-
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 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 6: 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 7: (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