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
,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 =
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_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 degtid_purged
e 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_purged
e não pode incluir nenhum GTID emgtid_executed
que ainda não tenha sido eliminado. O parâmetrogtid_set
também não pode incluir nenhum GTID que esteja no conjuntogtid_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');