Replicar transações com GTIDs - Amazon Aurora

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.

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 e o tópico sobre Replicação de uma origem sem GTIDs para uma réplica com GTIDs, no Guia de referência do MySQL.

Sintaxe

CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);

Parâmetros

gtid_option

Valor da string. Os valores permitidos são OFF, LOCAL ou 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 = gtid_option na comunidade do MySQL.

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_purged por seu conjunto de GTIDs especificado.

  • Anexar seu conjunto de GTIDs especificado ao conjunto de GTIDs que gtid_purged já 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_set deve ser um superconjunto do valor atual de gtid_purged e não pode fazer uma intersecção com gtid_subtract(gtid_executed,gtid_purged). Ou seja, o novo conjunto de GTIDs deve incluir todos os GTIDs que já estavam em gtid_purged e não pode incluir nenhum GTID em gtid_executed que ainda não tenha sido eliminado. O parâmetro gtid_set também não pode incluir nenhum GTID que esteja no conjunto gtid_owned global, 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');