Gestione della replica da più origini
Le stored procedure seguenti configurano e gestiscono i canali di replica su una replica da più origini RDS per MySQL. Per ulteriori informazioni, consulta Configurazione della replica da più origini per Amazon RDS per MySQL.
Tali stored procedure sono disponibili solo con le istanze database RDS per MySQL che eseguono le versioni del motore seguenti:
-
Tutte le versioni 8.4
8.0.35 e versioni secondarie successive
5.7.44 e versioni secondarie successive
Quando si utilizzano queste stored procedure per gestire la replica con un utente di replica configurato con caching_sha2_passwword, è necessario configurare TLS specificando SOURCE_SSL=1. caching_sha2_password è il plugin di autenticazione predefinito per RDS per MySQL 8.4.
Nota
Sebbene questa documentazione faccia riferimento alle istanze database di origine, ad esempio le istanze database RDS per MySQL, queste procedure funzionano anche per le istanze MySQL eseguite esternamente ad Amazon RDS.
mysql.rds_next_source_log_for_channel
Cambia la posizione del log dell’istanza database di origine all’inizio del successivo log binario nell’istanza database di origine per il canale. Utilizza questa procedura solo se ricevi un errore I/O di replica 1236 su una replica da più origini.
Sintassi
CALL mysql.rds_next_source_log_for_channel(curr_master_log,channel_name);
Parametri
-
curr_master_log -
L'indice del file di log di origine corrente. Ad esempio, se il file corrente è denominato
mysql-bin-changelog.012345, l'indice è 12345. Per determinare il nome del file di log di origine corrente, esegui il comandoSHOW REPLICA STATUS FOR CHANNEL 'e visualizza il campochannel_name'Source_Log_File. -
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_next_source_log_for_channel deve essere eseguita dall'utente master. Se si verifica un errore IO_Thread, ad esempio, è possibile utilizzare questa procedura per ignorare tutti gli eventi nel file di log binario corrente e riprendere la replica dal file di log binario successivo per il canale specificato in channel_name.
Esempio
Supponiamo che si verifichi un errore di replica su un canale per una replica da più origini. L’esecuzione di SHOW REPLICA STATUS FOR CHANNEL 'channel_1'\G nella replica da più origini restituisce il risultato seguente:
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
Il campo Last_IO_Errno mostra che l'istanza riceve l'errore I/O 1236. Il campo Source_Log_File mostra che il nome di file è mysql-bin-changelog.012345, il che significa che l'indice del file di log è 12345. Per risolvere il problema, puoi chiamare mysql.rds_next_source_log_for_channel con i parametri seguenti:
CALL mysql.rds_next_source_log_for_channel(12345,'channel_1');
mysql.rds_reset_external_source_for_channel
Arresta il processo di replica sul canale specificato e rimuove il canale e le configurazioni associate dalla replica da più origini.
Importante
Per eseguire questa procedura, è necessario abilitare autocommit. Per abilitarlo, impostare il parametro autocommit su 1. Per ulteriori informazioni sulla modifica dei parametri, consulta Modifica di parametri in un gruppo di parametri database in Amazon RDS.
Sintassi
CALL mysql.rds_reset_external_source_for_channel (channel_name);
Parametri
-
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_reset_external_source_for_channel deve essere eseguita dall'utente master. Questa procedura elimina tutti i log di inoltro che appartengono al canale da rimuovere.
mysql.rds_set_external_source_for_channel
Configura un canale di replica su un’istanza database RDS per MySQL per replicare i dati da un’altra istanza database RDS per MySQL.
Importante
Per eseguire questa procedura, è necessario abilitare autocommit. Per abilitarlo, impostare il parametro autocommit su 1. Per ulteriori informazioni sulla modifica dei parametri, consulta Modifica di parametri in un gruppo di parametri database in Amazon RDS.
Nota
È possibile utilizzare invece la stored procedure mysql.rds_set_external_source_with_delay_for_channel per configurare questo canale con la replica ritardata.
Sintassi
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);
Parametri
-
host_name -
Nome host o indirizzo IP dell’istanza database RDS per MySQL di origine.
-
host_port -
Porta utilizzata dall’istanza database RDS per MySQL di origine. Se la configurazione della rete include la replica della porta Secure Shell (SSH) che converte il numero di porta, specifica il numero di porta esposto da SSH.
-
replication_user_name -
ID di un utente con autorizzazioni
REPLICATION CLIENTeREPLICATION SLAVEnell’istanza database RDS per MySQL di origine. Si consiglia di fornire un account utilizzato unicamente per la replica con l’istanza database di origine. -
replication_user_password -
La password dell'ID utente specificata in
replication_user_name. -
mysql_binary_log_file_name -
Nome del log binario sull’istanza database di origine che contiene le informazioni relative alla replica.
-
mysql_binary_log_file_location -
La posizione nel log binario
mysql_binary_log_file_namea partire dalla quale la replica inizia a leggere le informazioni a essa relative.È possibile determinare il nome e la posizione del file binlog eseguendo
SHOW BINARY LOG STATUSnell’istanza database di origine.Nota
Versioni precedenti di MySQL utilizzate
SHOW MASTER STATUSal posto diSHOW BINARY LOG STATUS. Se si utilizza una versione MySQL precedente alla 8.4, utilizzareSHOW MASTER STATUS. -
ssl_encryption -
Un valore che specifica se la crittografia Secure Socket Layer (SSL) è utilizzata sulla connessione di replica. 1 indica che la crittografia SSL deve essere utilizzata; 0 specifica che la crittografia non deve essere utilizzata. Il valore predefinito è 0.
Nota
L'opzione
SOURCE_SSL_VERIFY_SERVER_CERTnon è supportata. Questa opzione è impostata su 0, il che significa che la connessione è crittografata, ma i certificati non sono verificati. -
channel_name -
Nome del canale di replica. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_set_external_source_for_channel deve essere eseguita dall'utente master. Questa procedura deve essere eseguita sull’istanza database RDS per MySQL di destinazione su cui si crea il canale di replica.
Prima di eseguire mysql.rds_set_external_source_for_channel, configura un utente di replica sull’istanza database di origine con i privilegi richiesti per la replica da più origini. Per connettere la replica da più origini all’istanza database di origine, è necessario specificare i valori replication_user_name e replication_user_password di un utente di replica con autorizzazioni REPLICATION CLIENT e REPLICATION SLAVE nell’istanza database di origine.
Per configurare un utente di replica nell’istanza database di origine
Utilizzando il client MySQL scelto, esegui la connessione all’istanza database di origine e crea un utente da utilizzare per la replica. Di seguito è riportato un esempio.
Importante
Come best practice per la sicurezza, specificare una password diversa dal valore segnaposto mostrato negli esempi seguenti.
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';Nell’istanza database di origine, concedi i privilegi
REPLICATION CLIENTeREPLICATION SLAVEall’utente di replica. L'esempio seguente concede i privilegiREPLICATION CLIENTeREPLICATION SLAVEsu tutti i database per l'utente "repl_user" del dominio:GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
Per utilizzare la replica crittografata, configura l’istanza database di origine per utilizzare le connessioni SSL.
Dopo aver chiamato mysql.rds_set_external_source_for_channel per configurare il canale di replica, è possibile chiamare mysql.rds_start_replication_for_channel sulla replica per avviare il processo di replica sul canale. È anche possibile chiamare mysql.rds_reset_external_source_for_channel per arrestare la replica sul canale e rimuovere la configurazione del canale dalla replica.
Quando si chiama mysql.rds_set_external_source_for_channel, Amazon RDS registra l’ora, l’utente e un’operazione di set channel source nella tabella mysql.rds_history senza dettagli specifici del canale e nella tabella mysql.rds_replication_status con il nome del canale. Queste informazioni vengono registrate solo per uso interno e a scopo di monitoraggio. Per registrare l’intera chiamata di procedura ai fini di audit, prendi in considerazione la possibilità di abilitare i log di audit o i log generali, in base ai requisiti specifici dell’applicazione.
Esempi
Se eseguito in un’istanza database RDS per MySQL, l’esempio seguente configura un canale di replica denominato channel_1 sull’istanza database per replicare i dati dall’origine specificata dall’host sourcedb.example.com e dalla 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 un canale di replica su un’istanza database RDS per MySQL con un ritardo di replica facoltativo. La replica si basa sugli ID di transazione globali (GTID).
Importante
Per eseguire questa procedura, è necessario abilitare autocommit. Per abilitarlo, impostare il parametro autocommit su 1. Per ulteriori informazioni sulla modifica dei parametri, consulta Modifica di parametri in un gruppo di parametri database in Amazon RDS.
Sintassi
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);
Parametri
-
host_name -
Nome host o indirizzo IP dell’istanza database RDS per MySQL di origine.
-
host_port -
Porta utilizzata dall’istanza database RDS per MySQL di origine. Se la configurazione della rete include la replica della porta Secure Shell (SSH) che converte il numero di porta, specifica il numero di porta esposto da SSH.
-
replication_user_name -
ID di un utente con autorizzazioni
REPLICATION CLIENTeREPLICATION SLAVEnell’istanza database RDS per MySQL di origine. Si consiglia di fornire un account utilizzato unicamente per la replica con l’istanza database di origine. -
replication_user_password -
La password dell'ID utente specificata in
replication_user_name. -
ssl_encryption -
Un valore che specifica se la crittografia Secure Socket Layer (SSL) è utilizzata sulla connessione di replica. 1 indica che la crittografia SSL deve essere utilizzata; 0 specifica che la crittografia non deve essere utilizzata. Il valore predefinito è 0.
Nota
L'opzione
SOURCE_SSL_VERIFY_SERVER_CERTnon è supportata. Questa opzione è impostata su 0, il che significa che la connessione è crittografata, ma i certificati non sono verificati. -
delay -
Numero minimo di secondi per ritardare la replica dall’istanza database di origine.
Il limite per questo parametro è un giorno (86400 secondi).
-
channel_name -
Nome del canale di replica. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_set_external_source_with_auto_position_for_channel deve essere eseguita dall'utente master. Questa procedura deve essere eseguita sull’istanza database RDS per MySQL di destinazione su cui si crea il canale di replica.
Prima di eseguire rds_set_external_source_with_auto_position_for_channel, configura un utente di replica sull’istanza database di origine con i privilegi richiesti per la replica da più origini. Per connettere la replica da più origini all’istanza database di origine, è necessario specificare i valori replication_user_name e replication_user_password di un utente di replica con autorizzazioni REPLICATION CLIENT e REPLICATION SLAVE nell’istanza database di origine.
Per configurare un utente di replica nell’istanza database di origine
Utilizzando il client MySQL scelto, esegui la connessione all’istanza database di origine e crea un utente da utilizzare per la replica. Di seguito è riportato un esempio.
Importante
Come best practice per la sicurezza, specificare una password diversa dal valore segnaposto mostrato negli esempi seguenti.
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';Nell’istanza database di origine, concedi i privilegi
REPLICATION CLIENTeREPLICATION SLAVEall’utente di replica. L'esempio seguente concede i privilegiREPLICATION CLIENTeREPLICATION SLAVEsu tutti i database per l'utente "repl_user" del dominio:GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
Per utilizzare la replica crittografata, configura l’istanza database di origine per utilizzare le connessioni SSL.
Prima di chiamare mysql.rds_set_external_source_with_auto_position_for_channel, assicurati di chiamare mysql.rds_set_external_source_gtid_purged per impostare la variabile di sistema gtid_purged con un intervallo di GTID specificato da un’origine esterna.
Dopo aver chiamato mysql.rds_set_external_source_with_auto_position_for_channel per configurare un’istanza database di Amazon RDS come replica di lettura su un canale specifico, è possibile chiamare mysql.rds_start_replication_for_channel nella replica di lettura per avviare il processo di replica su tale canale.
Dopo aver chiamato mysql.rds_set_external_source_with_auto_position_for_channel per configurare il canale di replica, è possibile chiamare mysql.rds_start_replication_for_channel sulla replica per avviare il processo di replica sul canale. È anche possibile chiamare mysql.rds_reset_external_source_for_channel per arrestare la replica sul canale e rimuovere la configurazione del canale dalla replica.
Esempi
Se eseguito in un’istanza database RDS per MySQL, l’esempio seguente configura un canale di replica channel_1 denominato su questa istanza database per replicare i dati dall’origine specificata dall’host sourcedb.example.com e dalla porta 3306. Il ritardo minimo di replica viene impostato a un’ora (3.600 secondi). Ciò significa che una modifica dall’istanza database RDS per MySQL di origine non viene applicata nella replica da più origini per almeno un’ora.
call mysql.rds_set_external_source_with_auto_position_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 1, 3600, 'channel_1');
mysql.rds_set_external_source_with_delay_for_channel
Configura un canale di replica su un’istanza database RDS per MySQL con un ritardo di replica facoltativo.
Importante
Per eseguire questa procedura, è necessario abilitare autocommit. Per abilitarlo, impostare il parametro autocommit su 1. Per ulteriori informazioni sulla modifica dei parametri, consulta Modifica di parametri in un gruppo di parametri database in Amazon RDS.
Sintassi
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);
Parametri
-
host_name -
Nome host o indirizzo IP dell’istanza database RDS per MySQL di origine.
-
host_port -
Porta utilizzata dall’istanza database RDS per MySQL di origine. Se la configurazione della rete include la replica della porta Secure Shell (SSH) che converte il numero di porta, specifica il numero di porta esposto da SSH.
-
replication_user_name -
ID di un utente con autorizzazioni
REPLICATION CLIENTeREPLICATION SLAVEnell’istanza database RDS per MySQL di origine. Si consiglia di fornire un account utilizzato unicamente per la replica con l’istanza database di origine. -
replication_user_password -
La password dell'ID utente specificata in
replication_user_name. -
mysql_binary_log_file_name -
Il nome del log binario sull’istanza database di origine contiene le informazioni relative alla replica.
-
mysql_binary_log_file_location -
Posizione nel log binario
mysql_binary_log_file_namea partire dalla quale la replica inizierà a leggere le informazioni di replica.È possibile determinare il nome e la posizione del file binlog in esecuzione
SHOW BINARY LOG STATUSsull'istanza del database di origine.Nota
Versioni precedenti di MySQL utilizzate
SHOW MASTER STATUSal posto diSHOW BINARY LOG STATUS. Se si utilizza una versione MySQL precedente alla 8.4, utilizzareSHOW MASTER STATUS. -
ssl_encryption -
Un valore che specifica se la crittografia Secure Socket Layer (SSL) è utilizzata sulla connessione di replica. 1 indica che la crittografia SSL deve essere utilizzata; 0 specifica che la crittografia non deve essere utilizzata. Il valore predefinito è 0.
Nota
L'opzione
SOURCE_SSL_VERIFY_SERVER_CERTnon è supportata. Questa opzione è impostata su 0, il che significa che la connessione è crittografata, ma i certificati non sono verificati. -
delay -
Numero minimo di secondi per ritardare la replica dall’istanza database di origine.
Il limite per questo parametro è un giorno (86400 secondi).
-
channel_name -
Nome del canale di replica. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_set_external_source_with_delay_for_channel deve essere eseguita dall'utente master. Questa procedura deve essere eseguita sull’istanza database RDS per MySQL di destinazione su cui si crea il canale di replica.
Prima di eseguire mysql.rds_set_external_source_with_delay_for_channel, configura un utente di replica sull’istanza database di origine con i privilegi richiesti per la replica da più origini. Per connettere la replica da più origini all’istanza database di origine, è necessario specificare i valori replication_user_name e replication_user_password di un utente di replica con autorizzazioni REPLICATION CLIENT e REPLICATION SLAVE nell’istanza database di origine.
Per configurare un utente di replica nell’istanza database di origine
Utilizzando il client MySQL scelto, esegui la connessione all’istanza database di origine e crea un utente da utilizzare per la replica. Di seguito è riportato un esempio.
Importante
Come best practice per la sicurezza, specificare una password diversa dal valore segnaposto mostrato negli esempi seguenti.
CREATE USER 'repl_user'@'example.com' IDENTIFIED BY 'password';Nell’istanza database di origine, concedi i privilegi
REPLICATION CLIENTeREPLICATION SLAVEall’utente di replica. L'esempio seguente concede i privilegiREPLICATION CLIENTeREPLICATION SLAVEsu tutti i database per l'utente "repl_user" del dominio:GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'example.com';
Per utilizzare la replica crittografata, configura l’istanza database di origine per utilizzare le connessioni SSL.
Dopo aver chiamato mysql.rds_set_external_source_with_delay_for_channel per configurare il canale di replica, è possibile chiamare mysql.rds_start_replication_for_channel sulla replica per avviare il processo di replica sul canale. È anche possibile chiamare mysql.rds_reset_external_source_for_channel per arrestare la replica sul canale e rimuovere la configurazione del canale dalla replica.
Quando si chiama mysql.rds_set_external_source_with_delay_for_channel, Amazon RDS registra l’ora, l’utente e un’operazione di set channel source nella tabella mysql.rds_history senza dettagli specifici del canale e nella tabella mysql.rds_replication_status con il nome del canale. Queste informazioni vengono registrate solo per uso interno e a scopo di monitoraggio. Per registrare l’intera chiamata di procedura ai fini di audit, prendi in considerazione la possibilità di abilitare i log di audit o i log generali, in base ai requisiti specifici dell’applicazione.
Esempi
Se eseguito in un’istanza database RDS per MySQL, l’esempio seguente configura un canale di replica channel_1 denominato su questa istanza database per replicare i dati dall’origine specificata dall’host sourcedb.example.com e dalla porta 3306. Il ritardo minimo di replica viene impostato a un’ora (3.600 secondi). Ciò significa che una modifica dall’istanza database RDS per MySQL di origine non viene applicata nella replica da più origini per almeno un’ora.
call mysql.rds_set_external_source_with_delay_for_channel( 'sourcedb.example.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000777', 120, 1, 3600, 'channel_1');
mysql.rds_set_source_auto_position_for_channel
Imposta la modalità di replica in modo che sia basata sulle posizioni dei file di log binario o sugli ID di transazione globali (GTID).
Sintassi
CALL mysql.rds_set_source_auto_position_for_channel (auto_position_mode,channel_name);
Parametri
-
auto_position_mode -
Valore che indica se usare la replica basata sulla posizione del file di log o la replica basata su GTID:
-
0– Usa il metodo di replica basato sulla posizione del file di log binario. Il valore di default è0. -
1– Usa il metodo di replica basato su GTID.
-
-
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_set_source_auto_position_for_channel deve essere eseguita dall'utente master. Questa procedura riavvia la replica sul canale specificato per applicare la modalità di posizionamento automatico specificata.
Esempi
L’esempio seguente imposta la modalità di posizionamento automatico per channel_1 per utilizzare il metodo di replica basato su GTID.
call mysql.rds_set_source_auto_position_for_channel(1,'channel_1');
mysql.rds_set_source_delay_for_channel
Imposta il numero minimo di secondi per ritardare la replica dall’istanza database di origine alla replica da più origini per il canale specificato.
Sintassi
CALL mysql.rds_set_source_delay_for_channel(delay,channel_name);
Parametri
-
delay -
Numero minimo di secondi per ritardare la replica dall’istanza database di origine.
Il limite per questo parametro è un giorno (86400 secondi).
-
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_set_source_delay_for_channel deve essere eseguita dall'utente master. Per utilizzare questa procedura, chiama prima mysql.rds_stop_replication_for_channel per arrestare la replica, quindi chiama la procedura per impostare il valore del ritardo di replica. Quando il ritardo è impostato, chiama mysql.rds_start_replication_for_channel per riavviare la replica.
Esempi
L’esempio seguente imposta il ritardo per la replica dall’istanza database di origine su channel_1 della replica da più origini per almeno un’ora (3.600 secondi).
CALL mysql.rds_set_source_delay_for_channel(3600,'channel_1');
mysql.rds_skip_repl_error_for_channel
Ignora un evento del log binario ed elimina un errore di replica su una replica database MySQL da più origini per il canale specificato.
Sintassi
CALL mysql.rds_skip_repl_error_for_channel(channel_name);
Parametri
-
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_skip_repl_error_for_channel deve essere eseguita dall'utente master su una replica di lettura. È possibile utilizzare questa procedura in modo analogo a come si utilizza mysql.rds_skip_repl_error per evitare un errore in una replica di lettura. Per ulteriori informazioni, consulta Chiamata della procedura mysql.rds_skip_repl_error.
Nota
Per evitare errori nella replica basata su GTID, si consiglia di utilizzare invece la procedura mysql.rds_skip_transaction_with_gtid.
Per determinare se ci sono errori, esegui il comando MySQL SHOW REPLICA STATUS FOR CHANNEL '. Se un errore di replica non è critico, puoi eseguire channel_name'\Gmysql.rds_skip_repl_error_for_channel per ignorare l'errore. Se sono presenti più errori, mysql.rds_skip_repl_error_for_channel elimina il primo sul canale di replica specificato, quindi informa della presenza di altri errori. Puoi quindi utilizzare SHOW REPLICA STATUS FOR CHANNEL ' per determinare l'operazione corretta per l'errore successivo. Per informazioni sui valori restituiti, consulta Istruzione SHOW REPLICA STATUSchannel_name'\G
mysql.rds_start_replication_for_channel
Avvia la replica da un’istanza database RDS per MySQL a una replica da più origini sul canale specificato.
Nota
Puoi usare la stored procedure mysql.rds_start_replication_until_for_channel o mysql.rds_start_replication_until_gtid_for_channel per avviare la replica da un'istanza database RDS for MySQL e arrestare la replica in corrispondenza della posizione del file di log binario specificato.
Sintassi
CALL mysql.rds_start_replication_for_channel(channel_name);
Parametri
-
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_start_replication_for_channel deve essere eseguita dall'utente master. Dopo aver importato i dati dall’istanza database RDS per MySQL di origine, esegui questo comando sulla replica da più origini per avviare la replica sul canale specificato.
Esempi
L’esempio seguente avvia la replica su channel_1 della replica da più origini.
CALL mysql.rds_start_replication_for_channel('channel_1');
mysql.rds_start_replication_until_for_channel
Avvia la replica da un’istanza database RDS per MySQL sul canale specificato e la arresta in corrispondenza della posizione del file di log binario specificato.
Sintassi
CALL mysql.rds_start_replication_until_for_channel (replication_log_file,replication_stop_point,channel_name);
Parametri
-
replication_log_file -
Il nome del log binario sull’istanza database di origine contiene le informazioni relative alla replica.
-
replication_stop_point -
Posizione nel log binario
replication_log_filein corrispondenza di cui la replica verrà arrestata. -
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_start_replication_until_for_channel deve essere eseguita dall'utente master. Con questa procedura, la replica viene avviata e successivamente arrestata quando viene raggiunta la posizione del file binlog specificata. La procedura arresta sia SQL_THREAD sia IO_THREAD.
Il nome di file specificato per il parametro replication_log_file deve corrispondere al nome del file binlog dell’istanza database di origine.
Quando il parametro replication_stop_point specifica una posizione di arresto nel passato, la replica viene arrestata immediatamente.
Esempi
L’esempio seguente avvia la replica su channel_1 e replica le modifiche fino a quando non raggiunge la posizione 120 nel file di log binario 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
Avvia la replica da un’istanza database RDS per MySQL e la arresta in corrispondenza dell’ID di transazione globale (GTID) specificato.
Sintassi
CALL mysql.rds_start_replication_until_gtid_for_channel(gtid,channel_name);
Parametri
-
gtid -
GTID dopo il quale arrestare la replica.
-
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_start_replication_until_gtid_for_channel deve essere eseguita dall'utente master. La procedura avvia la replica sul canale specificato, applica tutte le modifiche fino al valore GTID specificato, quindi arresta la replica sul canale.
Quando il parametro gtid specifica una transazione che è già stata eseguita dalla replica, la procedura viene arrestata immediatamente.
Prima di eseguire la procedure, è necessario disabilitare la replica multi-thread impostando il valore di replica_parallel_workers o slave_parallel_workers su 0.
Esempi
L’esempio seguente avvia la replica su channel_1 e replica le modifiche fino a quando non raggiunge il 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
Arresta la replica da un’istanza database MySQL sul canale specificato.
Sintassi
CALL mysql.rds_stop_replication_for_channel(channel_name);
Parametri
-
channel_name -
Nome del canale di replica sulla replica da più origini. Ogni canale di replica riceve gli eventi del log binario da un’unica istanza database RDS per MySQL di origine in esecuzione su un host e una porta specifici.
Note per l'utilizzo
La procedura mysql.rds_stop_replication_for_channel deve essere eseguita dall'utente master.
Esempi
L’esempio seguente arresta la replica su channel_1 della replica da più origini.
CALL mysql.rds_stop_replication_for_channel('channel_1');