Gerenciar a replicação de várias fontes - Amazon Relational Database Service

Gerenciar a replicação de várias fontes

Os procedimentos armazenados a seguir configuram e gerenciam canais de replicação em uma réplica de várias fontes do RDS para MySQL. Para ter mais informações, consulte Configurar a replicação de várias fontes do RDS para MySQL.

Esses procedimentos armazenados só estão disponíveis com as instâncias de banco de dados do RDS para MySQL que executam as seguintes versões de mecanismo:

  • 8.0.35 e versões secundárias posteriores

  • 5.7.44 e versões secundárias posteriores

nota

Embora essa documentação se refira às instâncias de banco de dados de origem como instâncias de banco de dados do RDS para MySQL, esses procedimentos também funcionam para instâncias do MySQL executadas fora do Amazon RDS.

mysql.rds_next_source_log_for_channel

Altera a posição do log da instância de banco de dados de origem para o início do próximo log binário na instância de banco de dados de origem. Use esse procedimento somente se estiver recebendo o erro 1236 de E/S de replicação em uma réplica de várias fontes.

Sintaxe

CALL mysql.rds_next_source_log_for_channel( curr_master_log, channel_name );

Parâmetros

curr_master_log

O índice do arquivo de log de origem atual. Por exemplo, se o arquivo atual dor denominado mysql-bin-changelog.012345, o índice será 12345. Para determinar o nome do arquivo de log de origem atual, execute o comando SHOW REPLICA STATUS FOR CHANNEL 'channel_name' e veja o campo Source_Log_File.

nota

As versões anteriores do MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_next_source_log_for_channel. Se houver um erro IO_thread, por exemplo, será possível usar esse procedimento para ignorar todos os eventos no arquivo de log binário atual e retomar a replicação do próximo arquivo de log binário para o canal especificado em channel_name.

Exemplo

Suponha que a replicação falhe em um canal em uma réplica de várias fontes. A execução de SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G na réplica de leitura exibe o seguinte resultado:

mysql> SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: ReplicationUser Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: replica-relay-bin.000003 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB:. . . Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin-changelog.013406' at 1219393, the last event read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4, the last byte read from '/rdsdbdata/log/binlog/mysql-bin-changelog.012345' at 4.' Last_SQL_Errno: 0 Last_SQL_Error: . . Channel_name: channel_1 . . -- Some fields are omitted in this example output

O campo Last_IO_Errno mostra que a instância está recebendo o erro 1236 de E/S. O campo Source_Log_File mostra que o nome do arquivo é mysql-bin-changelog.012345, o que significa que o índice de arquivos de log é 12345. Para resolver o erro, chame mysql.rds_next_source_log_for_channel com os seguintes parâmetros:

CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');
nota

As versões anteriores do MySQL usavam SHOW SLAVE STATUS em vez de SHOW REPLICA STATUS. Se você estiver usando uma versão do MySQL anterior à 8.0.23, use SHOW SLAVE STATUS.

mysql.rds_reset_external_source_for_channel

Interrompe o processo de replicação no canal especificado e remove o canal e as configurações associadas da réplica de várias fontes.

Importante

Para executar esse procedimento, autocommit deve estar habilitado. Para habilitá-lo, defina o parâmetro autocommit como 1. Para obter informações sobre como modificar parâmetros, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS.

Sintaxe

CALL mysql.rds_reset_external_source_for_channel (channel_name);

Parâmetros

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_reset_external_source_for_channel. Esse procedimento exclui todos os registros de retransmissão pertencentes ao canal que está sendo removido.

mysql.rds_set_external_source_for_channel

Configura um canal de replicação em uma instância de banco de dados do RDS para MySQL para replicar os dados de outra instância de banco de dados do RDS para MySQL.

Importante

Para executar esse procedimento, autocommit deve estar habilitado. Para habilitá-lo, defina o parâmetro autocommit como 1. Para obter informações sobre como modificar parâmetros, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS.

nota

Em vez disso, é possível usar o procedimento armazenado mysql.rds_set_external_source_with_delay_for_channel para configurar esse canal com replicação atrasada.

Sintaxe

CALL mysql.rds_set_external_source_for_channel ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , channel_name );

Parâmetros

host_name

O nome de host ou o endereço IP da instância de banco de dados do RDS para MySQL.

host_port

A porta usada pela instância de banco de dados do RDS para MySQL. Se sua configuração de rede inclui replicação de porta Secure Shell (SSH) que converte o número da porta, especifique o número da porta exposto pelo SSH.

replication_user_name

O ID de um usuário com as permissões REPLICATION CLIENT e REPLICATION SLAVE na instância de banco de dados de origem do RDS para MySQL. Recomendamos fornecer uma conta que seja usada unicamente para a replicação com a instância de banco de dados de origem.

replication_user_password

A senha do ID de usuário especificada em replication_user_name.

mysql_binary_log_file_name

O nome do log binário na instância de banco de dados de origem que contém as informações de replicação.

mysql_binary_log_file_location

O local no log binário mysql_binary_log_file_name no qual a replicação começa a ler as informações de replicação.

É possível determinar o nome e a localização do arquivo de binlog executando SHOW MASTER STATUS na instância do banco de dados de origem.

ssl_encryption

Um valor que especifica se a criptografia do Secure Sockets Layer (SSL) será usada na conexão de replicação. 1 especifica para usar criptografia de SSL, 0 especifica para não usar criptografia. O padrão é 0.

nota

A opção MASTER_SSL_VERIFY_SERVER_CERT não tem suporte. Essa opção é definida como 0, o que significa que a conexão é criptografada, mas os certificados não são verificados.

channel_name

O nome da instância de replicação. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_set_external_source_for_channel. Esse procedimento deve ser executado na instância de banco de dados do RDS para MySQL de destino na qual você está criando o canal de replicação.

Antes de executar mysql.rds_set_external_source_for_channel, configure um usuário de replicação na instância de banco de dados de origem com os privilégios necessários para a réplica de várias fontes. Para conectar a réplica de várias fontes à instância de banco de dados de origem, é necessário especificar os valores replication_user_name e replication_user_password de um usuário de replicação que tenha as permissões REPLICATION CLIENT e REPLICATION SLAVE na instância de banco de dados de origem.

Como configurar um usuário de replicação na instância de banco de dados de origem
  1. Usando o cliente MySQL de sua preferência, conecte-se à instância de banco de dados de origem e crie uma conta de usuário a ser usada para a replicação. Veja um exemplo a seguir.

    Importante

    Como prática recomendada de segurança, especifique uma senha diferente do valor do espaço reservado mostrado nos exemplos a seguir.

    MySQL 8.0

    CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY 'password';

    MySQL 5.7

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. Na instância de banco de dados de origem, conceda os privilégios REPLICATION CLIENT e REPLICATION SLAVE para o usuário de replicação. O exemplo a seguir concede privilégios de REPLICATION CLIENT e REPLICATION SLAVE ao usuário 'repl_user' em todos os bancos de dados de seu domínio.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';

Para usar a replicação criptografada, configure a instância de banco de dados de origem para usar conexões SSL.

Depois de chamar mysql.rds_set_external_source_for_channel para configurar esse canal de replicação, será possível chamar mysql.rds_start_replication_for_channel na réplica para iniciar o processo de replicação no canal. É possível chamar mysql.rds_reset_external_source_for_channel para interromper a replicação no canal e remover a configuração do canal da réplica.

Ao chamar mysql.rds_set_external_source_for_channel, o Amazon RDS grava a hora, o usuário e uma ação de set channel source na tabela mysql.rds_history sem detalhes específicos do canal e na tabela mysql.rds_replication_status com o nome do canal. Essas informações são registradas apenas para fins internos de uso e monitoramento. Para registrar a chamada de procedimento completa para fins de auditoria, pense em habilitar logs gerais ou de auditoria, com base nos requisitos específicos da aplicação.

Exemplos

Quando executado em uma instância de banco de dados do RDS para MySQL, o exemplo a seguir configura um canal de replicação denominado channel_1 nessa instância de banco de dados para replicar dados da fonte especificada pelo host sourcedb.example.com e pela porta 3306.

call mysql.rds_set_external_source_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.0777', 120, 0, 'channel_1');

mysql.rds_set_external_source_with_auto_position_for_channel

Configura um canal de replicação em uma instância de banco de dados do RDS para MySQL com um atraso de replicação opcional. A replicação se baseia em identificadores de transação global (GTIDs).

Importante

Para executar esse procedimento, autocommit deve estar habilitado. Para habilitá-lo, defina o parâmetro autocommit como 1. Para obter informações sobre como modificar parâmetros, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS.

Sintaxe

CALL mysql.rds_set_external_source_with_auto_position_for_channel ( host_name , host_port , replication_user_name , replication_user_password , ssl_encryption , delay , channel_name );

Parâmetros

host_name

O nome de host ou o endereço IP da instância de banco de dados do RDS para MySQL.

host_port

A porta usada pela instância de banco de dados do RDS para MySQL. Se sua configuração de rede inclui replicação de porta Secure Shell (SSH) que converte o número da porta, especifique o número da porta exposto pelo SSH.

replication_user_name

O ID de um usuário com as permissões REPLICATION CLIENT e REPLICATION SLAVE na instância de banco de dados de origem do RDS para MySQL. Recomendamos fornecer uma conta que seja usada unicamente para a replicação com a instância de banco de dados de origem.

replication_user_password

A senha do ID de usuário especificada em replication_user_name.

ssl_encryption

Um valor que especifica se a criptografia do Secure Sockets Layer (SSL) será usada na conexão de replicação. 1 especifica para usar criptografia de SSL, 0 especifica para não usar criptografia. O padrão é 0.

nota

A opção MASTER_SSL_VERIFY_SERVER_CERT não tem suporte. Essa opção é definida como 0, o que significa que a conexão é criptografada, mas os certificados não são verificados.

delay

O número mínimo de segundos para atrasar a replicação da instância de banco de dados de origem.

O limite para esse parâmetro é de um dia (86.400 segundos).

channel_name

O nome da instância de replicação. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_set_external_source_with_auto_position_for_channel. Esse procedimento deve ser executado na instância de banco de dados do RDS para MySQL de destino na qual você está criando o canal de replicação.

Antes de executar rds_set_external_source_with_auto_position_for_channel, configure um usuário de replicação na instância de banco de dados de origem com os privilégios necessários para a réplica de várias fontes. Para conectar a réplica de várias fontes à instância de banco de dados de origem, é necessário especificar os valores replication_user_name e replication_user_password de um usuário de replicação que tenha as permissões REPLICATION CLIENT e REPLICATION SLAVE na instância de banco de dados de origem.

Como configurar um usuário de replicação na instância de banco de dados de origem
  1. Usando o cliente MySQL de sua preferência, conecte-se à instância de banco de dados de origem e crie uma conta de usuário a ser usada para a replicação. Veja um exemplo a seguir.

    Importante

    Como prática recomendada de segurança, especifique uma senha diferente do valor do espaço reservado mostrado nos exemplos a seguir.

    MySQL 8.0

    CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY 'password';

    MySQL 5.7

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. Na instância de banco de dados de origem, conceda os privilégios REPLICATION CLIENT e REPLICATION SLAVE para o usuário de replicação. O exemplo a seguir concede privilégios de REPLICATION CLIENT e REPLICATION SLAVE ao usuário 'repl_user' em todos os bancos de dados de seu domínio.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';

Para usar a replicação criptografada, configure a instância de banco de dados de origem para usar conexões SSL.

Antes de chamar mysql.rds_set_external_source_with_auto_position_for_channel, chame mysql.rds_set_external_source_gtid_purged para definir a variável de sistema gtid_purged com um intervalo GTID especificado de uma fonte externa.

Depois de chamar mysql.rds_set_external_source_with_auto_position_for_channel para configurar uma instância de banco de dados do Amazon RDS como réplica de leitura em um canal específico, é possível chamar mysql.rds_start_replication_for_channel na réplica de leitura para iniciar o processo de replicação nesse canal.

Depois de chamar mysql.rds_set_external_source_with_auto_position_for_channel para configurar esse canal de replicação, será possível chamar mysql.rds_start_replication_for_channel na réplica para iniciar o processo de replicação no canal. É possível chamar mysql.rds_reset_external_source_for_channel para interromper a replicação no canal e remover a configuração do canal da réplica.

Exemplos

Quando executado em uma instância de banco de dados do RDS para MySQL, o exemplo a seguir configura um canal de replicação denominado channel_1 nessa instância de banco de dados para replicar dados da fonte especificada pelo host sourcedb.example.com e pela porta 3306. Ele define o atraso de replicação mínimo como uma hora (3.600 segundos). Isso significa que uma alteração da instância de banco de dados do RDS para MySQL não é aplicada à réplica de várias fontes por pelo menos uma hora.

call mysql.rds_set_external_source_with_auto_position_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 0, 3600, 'channel_1');

mysql.rds_set_external_source_with_delay_for_channel

Configura um canal de replicação em uma instância de banco de dados do RDS para MySQL com um atraso de replicação especificado.

Importante

Para executar esse procedimento, autocommit deve estar habilitado. Para habilitá-lo, defina o parâmetro autocommit como 1. Para obter informações sobre como modificar parâmetros, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados no Amazon RDS.

Sintaxe

CALL mysql.rds_set_external_source_with_delay_for_channel ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption , delay , channel_name );

Parâmetros

host_name

O nome de host ou o endereço IP da instância de banco de dados do RDS para MySQL.

host_port

A porta usada pela instância de banco de dados do RDS para MySQL. Se sua configuração de rede inclui replicação de porta Secure Shell (SSH) que converte o número da porta, especifique o número da porta exposto pelo SSH.

replication_user_name

O ID de um usuário com as permissões REPLICATION CLIENT e REPLICATION SLAVE na instância de banco de dados de origem do RDS para MySQL. Recomendamos fornecer uma conta que seja usada unicamente para a replicação com a instância de banco de dados de origem.

replication_user_password

A senha do ID de usuário especificada em replication_user_name.

mysql_binary_log_file_name

O nome do log binário na instância de banco de dados de origem contém as informações de replicação.

mysql_binary_log_file_location

O local no log binário mysql_binary_log_file_name no qual a replicação começará a ler as informações de replicação.

É possível determinar o nome e a localização do arquivo de binlog executando SHOW MASTER STATUS na instância do banco de dados de origem.

ssl_encryption

Um valor que especifica se a criptografia do Secure Sockets Layer (SSL) será usada na conexão de replicação. 1 especifica para usar criptografia de SSL, 0 especifica para não usar criptografia. O padrão é 0.

nota

A opção MASTER_SSL_VERIFY_SERVER_CERT não tem suporte. Essa opção é definida como 0, o que significa que a conexão é criptografada, mas os certificados não são verificados.

delay

O número mínimo de segundos para atrasar a replicação da instância de banco de dados de origem.

O limite para esse parâmetro é de um dia (86.400 segundos).

channel_name

O nome da instância de replicação. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_set_external_source_with_delay_for_channel. Esse procedimento deve ser executado na instância de banco de dados do RDS para MySQL de destino na qual você está criando o canal de replicação.

Antes de executar mysql.rds_set_external_source_with_delay_for_channel, configure um usuário de replicação na instância de banco de dados de origem com os privilégios necessários para a réplica de várias fontes. Para conectar a réplica de várias fontes à instância de banco de dados de origem, é necessário especificar os valores replication_user_name e replication_user_password de um usuário de replicação que tenha as permissões REPLICATION CLIENT e REPLICATION SLAVE na instância de banco de dados de origem.

Como configurar um usuário de replicação na instância de banco de dados de origem
  1. Usando o cliente MySQL de sua preferência, conecte-se à instância de banco de dados de origem e crie uma conta de usuário a ser usada para a replicação. Veja um exemplo a seguir.

    Importante

    Como prática recomendada de segurança, especifique uma senha diferente do valor do espaço reservado mostrado nos exemplos a seguir.

    MySQL 8.0

    CREATE USER 'repl_user'@'example.com' IDENTIFIED WITH mysql_native_password BY 'password';

    MySQL 5.7

    CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';
  2. Na instância de banco de dados de origem, conceda os privilégios REPLICATION CLIENT e REPLICATION SLAVE para o usuário de replicação. O exemplo a seguir concede privilégios de REPLICATION CLIENT e REPLICATION SLAVE ao usuário 'repl_user' em todos os bancos de dados de seu domínio.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';

Para usar a replicação criptografada, configure a instância de banco de dados de origem para usar conexões SSL.

Depois de chamar mysql.rds_set_external_source_with_delay_for_channel para configurar esse canal de replicação, será possível chamar mysql.rds_start_replication_for_channel na réplica para iniciar o processo de replicação no canal. É possível chamar mysql.rds_reset_external_source_for_channel para interromper a replicação no canal e remover a configuração do canal da réplica.

Ao chamar mysql.rds_set_external_source_with_delay_for_channel, o Amazon RDS grava a hora, o usuário e uma ação de set channel source na tabela mysql.rds_history sem detalhes específicos do canal e na tabela mysql.rds_replication_status com o nome do canal. Essas informações são registradas apenas para fins internos de uso e monitoramento. Para registrar a chamada de procedimento completa para fins de auditoria, pense em habilitar logs gerais ou de auditoria, com base nos requisitos específicos da aplicação.

Exemplos

Quando executado em uma instância de banco de dados do RDS para MySQL, o exemplo a seguir configura um canal de replicação denominado channel_1 nessa instância de banco de dados para replicar dados da fonte especificada pelo host sourcedb.example.com e pela porta 3306. Ele define o atraso de replicação mínimo como uma hora (3.600 segundos). Isso significa que uma alteração da instância de banco de dados do RDS para MySQL não é aplicada à réplica de várias fontes por pelo menos uma hora.

call mysql.rds_set_external_source_with_delay_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000777', 120, 0, 3600, 'channel_1');

mysql.rds_set_source_auto_position_for_channel

Define o modo de replicação para o canal especificado como baseado nas posições do arquivo de log binário ou nos identificadores de transações globais (GTIDs).

Sintaxe

CALL mysql.rds_set_source_auto_position_for_channel ( auto_position_mode , channel_name );

Parâmetros

auto_position_mode

Um valor que indica se será usada a replicação de posição do arquivo de log ou a replicação com base no GTID:

  • 0: usar o método de replicação com base na posição do arquivo de log binário. O padrão é 0.

  • 1: usar o método de replicação com base no GTID.

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_set_source_auto_position_for_channel. Esse procedimento reinicia a replicação no canal especificado para aplicar o modo de posição automática especificado.

Exemplos

O exemplo a seguir define o modo de posição automática para channel_1 usar o método de replicação baseado em GTID.

call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');

mysql.rds_set_source_delay_for_channel

Define o número mínimo de segundos para atrasar a replicação da instância de banco de dados de origem para a réplica de várias fontes para o canal especificado.

Sintaxe

CALL mysql.rds_set_source_delay_for_channel(delay, channel_name);

Parâmetros

delay

O número mínimo de segundos para atrasar a replicação da instância de banco de dados de origem.

O limite para esse parâmetro é de um dia (86.400 segundos).

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_set_source_delay_for_channel. Para usar o procedimento, primeiro chame mysql.rds_stop_replication_for_channel para interromper a replicação. Depois, chame esse procedimento para definir o valor do atraso de replicação. Quando o atraso estiver definido, chame mysql.rds_start_replication_for_channel para reiniciar a replicação.

Exemplos

O exemplo a seguir define o atraso da replicação da instância de banco de dados de origem no channel_1 da réplica de várias fontes por pelo menos uma hora (3.600 segundos).

CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');

mysql.rds_skip_repl_error_for_channel

Ignora um evento de logs binários e exclui um erro de replicação em uma réplica de várias fontes de banco de dados do MySQL para o canal especificado.

Sintaxe

CALL mysql.rds_skip_repl_error_for_channel(channel_name);

Parâmetros

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_skip_repl_error_for_channel em uma réplica de leitura. É possível usar esse procedimento praticamente da mesma forma que o mysql.rds_skip_repl_error é usado para ignorar um erro em uma réplica de leitura. Para ter mais informações, consulte Chamando o procedimento mysql.rds_skip_repl_error.

nota

Para ignorar erros na replicação baseada em GTID, recomendamos usar o procedimento mysql.rds_skip_transaction_with_gtid.

Para determinar se há erros, execute o comando SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G do MySQL. Se um erro de replicação não for crítico, execute mysql.rds_skip_repl_error_for_channel para ignorá-lo. Se houver vários erros, mysql.rds_skip_repl_error_for_channel excluirá o primeiro erro no canal de replicação especificado e, depois, avisará que há outros. Assim, você pode usar SHOW REPLICA STATUS FOR CHANNEL 'channel_name'\G para determinar o plano de ação correto para o próximo erro. Para obter informações sobre os valores retornados, consulte Instrução SHOW REPLICA STATUS na documentação do MySQL.

mysql.rds_start_replication_for_channel

Inicia a replicação de uma instância de banco de dados do RDS para MySQL para uma réplica de várias fontes no canal especificado.

nota

Você pode usar o procedimento armazenado mysql.rds_start_replication_until_for_channel ou mysql.rds_start_replication_until_gtid_for_channel para iniciar a replicação de uma instância de banco de dados do RDS para MySQL interromper a replicação no local do arquivo de log binário especificado.

Sintaxe

CALL mysql.rds_start_replication_for_channel(channel_name);

Parâmetros

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_start_replication_for_channel. Depois de importar os dados da instância de banco de dados do RDS para MySQL de origem, execute esse comando na réplica de várias fontes para iniciar a replicação no canal especificado.

Exemplos

O exemplo a seguir inicia a replicação em channel_1 de várias fontes.

CALL mysql.rds_start_replication_for_channel('channel_1');

mysql.rds_start_replication_until_for_channel

Inicia a replicação de uma instância de banco de dados do RDS para MySQL no canal especificado e interrompe a replicação no local do arquivo de log binário especificado.

Sintaxe

CALL mysql.rds_start_replication_until_for_channel ( replication_log_file , replication_stop_point , channel_name );

Parâmetros

replication_log_file

O nome do log binário na instância de banco de dados de origem contém as informações de replicação.

replication_stop_point

O local no log binário replication_log_file no qual a replicação será interrompida.

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_start_replication_until_for_channel. Com esse procedimento, a replicação começa e depois é interrompida quando a posição especificada do arquivo de log binário é atingida. Para a versão 8.0, o procedimento interrompe somente o SQL_Thread. Para a versão 5.7, o procedimento interrompe o SQL_Thread e o IO_Thread.

O nome do arquivo especificado para o parâmetro replication_log_file deve corresponder ao nome do arquivo do log binário da instância de banco de dados de origem.

Quando o parâmetro replication_stop_point especifica um local de parada no passado, a replicação é interrompida imediatamente.

Exemplos

O exemplo a seguir inicia a replicação em channel_1 e replica as alterações até atingir o local 120 no arquivo de log binário mysql-bin-changelog.000777.

call mysql.rds_start_replication_until_for_channel( 'mysql-bin-changelog.000777', 120, 'channel_1' );

mysql.rds_start_replication_until_gtid_for_channel

Inicia a replicação no canal especificado de uma instância de banco de dados do RDS para MySQL e interrompe a replicação no identificador de transação global (GTID) especificado.

Sintaxe

CALL mysql.rds_start_replication_until_gtid_for_channel(gtid,channel_name);

Parâmetros

gtid

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

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_start_replication_until_gtid_for_channel. O procedimento inicia a replicação no canal especificado e aplica todas as alterações até o valor de GTID especificado. Depois, ele interrompe a replicação no canal.

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

Antes de executar esse procedimento, você deve desabilitar a replicação multiencadeada definindo o valor de replica_parallel_workers ou slave_parallel_workers como 0.

Exemplos

O exemplo a seguir inicia a replicação em channel_1 e replica as alterações até atingir o GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23.

call mysql.rds_start_replication_until_gtid_for_channel('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','channel_1');

mysql.rds_stop_replication_for_channel

Interrompe a replicação de uma instância de banco de dados do MySQL no canal especificado.

Sintaxe

CALL mysql.rds_stop_replication_for_channel(channel_name);

Parâmetros

channel_name

O nome do canal de replicação na réplica de várias fontes. Cada canal de replicação recebe os eventos de logs binários de uma única instância de banco de dados do RDS para MySQL de origem executada em uma porta e um host específicos.

Observações de uso

O usuário principal deve executar o procedimento mysql.rds_stop_replication_for_channel.

Exemplos

O exemplo a seguir interrompe a replicação em channel_1 da réplica de várias fontes.

CALL mysql.rds_stop_replication_for_channel('channel_1');