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 Amazon 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.
Tópicos
- mysql.rds_next_source_log_for_channel
- mysql.rds_reset_external_source_for_channel
- mysql.rds_set_external_source_for_channel
- mysql.rds_set_external_source_with_auto_position_for_channel
- mysql.rds_set_external_source_with_delay_for_channel
- mysql.rds_set_source_auto_position_for_channel
- mysql.rds_set_source_delay_for_channel
- mysql.rds_skip_repl_error_for_channel
- mysql.rds_start_replication_for_channel
- mysql.rds_start_replication_until_for_channel
- mysql.rds_start_replication_until_gtid_for_channel
- mysql.rds_stop_replication_for_channel
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 comandoSHOW REPLICA STATUS FOR CHANNEL '
e veja o campochannel_name
'Source_Log_File
.nota
As versões anteriores do MySQL usavam
SHOW SLAVE STATUS
em vez deSHOW REPLICA STATUS
. Se você estiver usando uma versão do MySQL anterior à 8.0.23, useSHOW 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
eREPLICATION 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
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
';Na instância de banco de dados de origem, conceda os privilégios
REPLICATION CLIENT
eREPLICATION SLAVE
para o usuário de replicação. O exemplo a seguir concede privilégios deREPLICATION CLIENT
eREPLICATION 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
eREPLICATION 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
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
';Na instância de banco de dados de origem, conceda os privilégios
REPLICATION CLIENT
eREPLICATION SLAVE
para o usuário de replicação. O exemplo a seguir concede privilégios deREPLICATION CLIENT
eREPLICATION 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
eREPLICATION 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
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
';Na instância de banco de dados de origem, conceda os privilégios
REPLICATION CLIENT
eREPLICATION SLAVE
para o usuário de replicação. O exemplo a seguir concede privilégios deREPLICATION CLIENT
eREPLICATION 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 '
do MySQL. Se um erro de replicação não for crítico, execute channel_name
'\Gmysql.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 '
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 STATUSchannel_name
'\G
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');