Replicar transações com GTIDs
Os procedimentos armazenados a seguir controlam como as transações são replicadas usando identificadores de transações globais (GTIDs) com o Aurora MySQL. Para saber como usar a replicação com base em GTIDs com o Aurora MySQL, consulte Usar a replicação baseada em GTID.
Tópicos
mysql.rds_assign_gtids_to_anonymous_transactions (Aurora MySQL versão 3)
Configura a opção ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS da instrução CHANGE REPLICATION SOURCE TO. Faz com que o canal de replicação atribua um GTID a transações replicadas que não têm um. Assim, é possível realizar a replicação de logs binários de uma origem que não utiliza replicação baseada em GTID para uma réplica que a utiliza. Para obter mais informações, consulte a Instrução CHANGE REPLICATION SOURCE TO
Sintaxe
CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);
Parâmetros
-
gtid_option -
Valor da string. Os valores permitidos são
OFF,LOCALou um UUID especificado.
Observações de uso
Esse procedimento tem o mesmo efeito que a emissão da instrução CHANGE
REPLICATION SOURCE TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS =
na comunidade do MySQL.gtid_option
O GTID deve se transformar ON para que gtid_option seja definido como LOCAL ou um UUID específico.
O padrão é OFF, o que significa que o recurso não é utilizado.
LOCAL atribui um GTID que inclui o próprio UUID da réplica (a configuração server_uuid).
Transmitir um parâmetro que é um UUID atribui um GTID que inclui o UUID especificado, como a configuração server_uuid do servidor de origem de replicação.
Exemplos
Para desabilitar esse recurso:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('OFF'); +-------------------------------------------------------------+ | Message | +-------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: OFF | +-------------------------------------------------------------+ 1 row in set (0.07 sec)
Para utilizar o próprio UUID da réplica:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('LOCAL'); +---------------------------------------------------------------+ | Message | +---------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: LOCAL | +---------------------------------------------------------------+ 1 row in set (0.07 sec)
Para utilizar um UUID especificado:
mysql> call mysql.rds_assign_gtids_to_anonymous_transactions('317a4760-f3dd-3b74-8e45-0615ed29de0e'); +----------------------------------------------------------------------------------------------+ | Message | +----------------------------------------------------------------------------------------------+ | ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS has been set to: 317a4760-f3dd-3b74-8e45-0615ed29de0e | +----------------------------------------------------------------------------------------------+ 1 row in set (0.07 sec)
mysql.rds_gtid_purged (Aurora MySQL versão 3)
Define o valor global da variável de sistema gtid_purged como determinado conjunto de identificadores de transação global (GTID). A variável de sistema gtid_purged é um conjunto de GTID que consiste nos GTIDs de todas as transações que foram confirmadas no servidor mas não existem em nenhum arquivo de log binário no servidor.
Para permitir a compatibilidade com o MySQL 8.0, há duas maneiras de definir o valor de gtid_purged:
-
Substituir o valor de
gtid_purgedpor seu conjunto de GTIDs especificado. -
Anexar seu conjunto de GTIDs especificado ao conjunto de GTIDs que
gtid_purgedjá contém.
Sintaxe
Como substituir o valor de gtid_purged por seu conjunto de GTIDs especificado:
CALL mysql.rds_gtid_purged (gtid_set);
Como anexar o valor de gtid_purged ao seu conjunto de GTIDs especificado:
CALL mysql.rds_gtid_purged (+gtid_set);
Parâmetros
gtid_set-
O valor de
gtid_setdeve ser um superconjunto do valor atual degtid_purgede não pode fazer uma intersecção comgtid_subtract(gtid_executed,gtid_purged). Ou seja, o novo conjunto de GTIDs deve incluir todos os GTIDs que já estavam emgtid_purgede não pode incluir nenhum GTID emgtid_executedque ainda não tenha sido eliminado. O parâmetrogtid_settambém não pode incluir nenhum GTID que esteja no conjuntogtid_ownedglobal, os GTIDs para transações que estão sendo processadas no momento no servidor.
Observações de uso
O usuário principal deve executar o procedimento mysql.rds_gtid_purged.
Esse procedimento é compatível com o Aurora MySQL versão 3.04 e posterior.
Exemplos
O exemplo a seguir atribui o GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23 à variável gtid_purged global.
CALL mysql.rds_gtid_purged('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_skip_transaction_with_gtid (Aurora MySQL versões 2 e 3)
Ignora a replicação de uma transação com o identificador de transação global (GTID) especificado em uma instância primária do Aurora.
Você pode usar esse procedimento para a recuperação de desastres, quando uma transação baseada em GTID específica for conhecida por causar desastres. Use esse procedimento armazenado para ignorar a transação problemática. Exemplos de transações problemáticas incluem transações que desabilitam a replicação, excluem dados importantes ou fazem com que a instância de banco de dados se torne indisponível.
Sintaxe
CALL mysql.rds_skip_transaction_with_gtid (gtid_to_skip);
Parâmetros
-
gtid_to_skip -
O GTID da transação de replicação a ser ignorada.
Observações de uso
O usuário principal deve executar o procedimento mysql.rds_skip_transaction_with_gtid.
Esse procedimento é compatível com o Aurora MySQL versões 2 e 3.
Exemplos
O exemplo a seguir ignora a replicação da transação com o GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_start_replication_until_gtid (Aurora MySQL versão 3)
Inicia a replicação de um cluster de banco de dados do Aurora MySQL e interrompe a replicação logo depois do identificador de transação global (GTID) especificado.
Sintaxe
CALL mysql.rds_start_replication_until_gtid(gtid);
Parâmetros
-
gtid -
O GTID após o qual a replicação será interrompida.
Observações de uso
O usuário principal deve executar o procedimento mysql.rds_start_replication_until_gtid.
Esse procedimento é compatível com o Aurora MySQL versão 3.04 e posterior.
O procedimento armazenado mysql.rds_start_replication_until_gtid não é compatível com a replicação gerenciada, o que inclui o seguinte:
Quando o parâmetro gtid especifica uma transação que já tenha sido executada pela réplica, a replicação é interrompida imediatamente.
Exemplos
O exemplo a seguir inicia a replicação e replica as alterações até atingir o GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');