

# Replicar transações com GTIDs
<a name="mysql-stored-proc-gtid"></a>

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-replication-gtid.md).

**Topics**
+ [mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions (Aurora MySQL versão 3)](#mysql_assign_gtids_to_anonymous_transactions)
+ [mysql.rds\$1gtid\$1purged (Aurora MySQL versão 3)](#mysql_rds_gtid_purged)
+ [mysql.rds\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL versões 2 e 3)](#mysql_rds_skip_transaction_with_gtid)
+ [mysql.rds\$1start\$1replication\$1until\$1gtid(Aurora MySQL versão 3)](#mysql_rds_start_replication_until_gtid)

## mysql.rds\$1assign\$1gtids\$1to\$1anonymous\$1transactions (Aurora MySQL versão 3)
<a name="mysql_assign_gtids_to_anonymous_transactions"></a>

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](https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html) e o tópico sobre [Replicação de uma origem sem GTIDs para uma réplica com GTIDs](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html), no *Guia de referência do MySQL*.

### Sintaxe
<a name="mysql_assign_gtids_to_anonymous_transactions-syntax"></a>

```
CALL mysql.rds_assign_gtids_to_anonymous_transactions(gtid_option);
```

### Parâmetros
<a name="mysql_assign_gtids_to_anonymous_transactions-parameters"></a>

 *gtid\$1option*  
Valor da string. Os valores permitidos são `OFF`, `LOCAL` ou um UUID especificado.

### Observações de uso
<a name="mysql_assign_gtids_to_anonymous_transactions-usage-notes"></a>

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\$1option* 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
<a name="mysql_assign_gtids_to_anonymous_transactions-examples"></a>

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\$1gtid\$1purged (Aurora MySQL versão 3)
<a name="mysql_rds_gtid_purged"></a>



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
<a name="mysql_rds_gtid_purged-syntax"></a>

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
<a name="mysql_rds_gtid_purged-parameters"></a>

*gtid\$1set*  
O valor de *gtid\$1set* 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\$1set* 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
<a name="mysql_rds_gtid_purged-usage-notes"></a>

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
<a name="mysql_rds_gtid_purged-examples"></a>

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\$1skip\$1transaction\$1with\$1gtid(Aurora MySQL versões 2 e 3)
<a name="mysql_rds_skip_transaction_with_gtid"></a>

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
<a name="mysql_rds_skip_transaction_with_gtid-syntax"></a>

 

```
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
```

### Parâmetros
<a name="mysql_rds_skip_transaction_with_gtid-parameters"></a>

 *gtid\$1to\$1skip*   
O GTID da transação de replicação a ser ignorada.

### Observações de uso
<a name="mysql_rds_skip_transaction_with_gtid-usage-notes"></a>

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
<a name="mysql_rds_skip_transaction_with_gtid-examples"></a>

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\$1start\$1replication\$1until\$1gtid(Aurora MySQL versão 3)
<a name="mysql_rds_start_replication_until_gtid"></a>

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
<a name="mysql_rds_start_replication_until_gtid-syntax"></a>

 

```
CALL mysql.rds_start_replication_until_gtid(gtid);
```

### Parâmetros
<a name="mysql_rds_start_replication_until_gtid-parameters"></a>

 *gtid*   
O GTID após o qual a replicação será interrompida.

### Observações de uso
<a name="mysql_rds_start_replication_until_gtid-usage-notes"></a>

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:
+ [Replicar clusters de banco de dados do Amazon Aurora MySQL entre Regiões da AWS](AuroraMySQL.Replication.CrossRegion.md)
+ [Migrar de uma instância de banco de dados do RDS para MySQL para um cluster de banco de dados do Amazon Aurora MySQL usando uma réplica de leitura do Aurora](AuroraMySQL.Migrating.RDSMySQL.Replica.md)

Quando o parâmetro `gtid` especifica uma transação que já tenha sido executada pela réplica, a replicação é interrompida imediatamente.

### Exemplos
<a name="mysql_rds_start_replication_until_gtid-examples"></a>

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');
```