Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Replica
Queste stored procedure controllano il modo in cui le transazioni vengono replicate da un database esterno in RDS per MySQL o viceversa. Per informazioni su come utilizzare la replica in base agli ID globali di transazione (GTID) con RDS per MySQL, consulta Utilizzo della replica basata su GTID.
Argomenti
- mysql.rds_next_master_log
- mysql.rds_reset_external_master
- mysql.rds_set_external_master
- mysql.rds_set_external_master_with_auto_position
- mysql.rds_set_external_master_with_delay
- mysql.rds_set_master_auto_position
- mysql.rds_set_source_delay
- mysql.rds_skip_transaction_with_gtid
- mysql.rds_skip_repl_error
- mysql.rds_start_replication
- mysql.rds_start_replication_until
- mysql.rds_start_replication_until_gtid
- mysql.rds_stop_replication
mysql.rds_next_master_log
Cambia la posizione del log dell'istanza database di origine all'inizio del successivo log binario nell'istanza database di origine. Utilizza questa procedura solo se ricevi un errore I/O di replica 1236 su una replica di lettura.
Sintassi
CALL mysql.rds_next_master_log(
curr_master_log
);
Parametri
-
curr_master_log
-
L'indice del file di log master corrente. Ad esempio, se il file corrente è denominato
mysql-bin-changelog.012345
, l'indice è 12345. Per determinare il nome del file di log master corrente, esegui il comandoSHOW REPLICA STATUS
e visualizza il campoMaster_Log_File
.Nota
Versioni precedenti di MySQL utilizzate
SHOW SLAVE STATUS
al posto diSHOW REPLICA STATUS
. Se si utilizza una versione MySQL prima della 8.0.23, utilizzareSHOW SLAVE STATUS
.
Note per l'utilizzo
La procedura mysql.rds_next_master_log
deve essere eseguita dall'utente master.
avvertimento
Chiama mysql.rds_next_master_log
solo se la replica non riesce dopo un failover di un'istanza database Multi-AZ DB che è l'origine della replica e il campo Last_IO_Errno
di SHOW REPLICA STATUS
segnala l'errore I/O 1236.
La chiamata di mysql.rds_next_master_log
può comportare una perdita di dati nella replica di lettura se le transazioni nell'istanza di origine non sono state scritte nel log binario sul disco prima dell'evento di failover.
Puoi ridurre le possibilità che si verifichi una situazione di questo tipo impostando i parametri dell'istanza di origine sync_binlog
e innodb_support_xa
su 1
, anche se ciò può compromettere le prestazioni. Per ulteriori informazioni, consulta Risoluzione dei problemi relativi a una replica di lettura MySQL.
Esempi
Supponi che una replica di lettura RDS per MySQL non riesca. L'esecuzione di SHOW REPLICA STATUS\G
nella replica di lettura restituisce il risultato seguente:
*************************** 1. row *************************** Replica_IO_State: Source_Host: myhost.XXXXXXXXXXXXXXX.rr-rrrr-1.rds.amazonaws.com Source_User: MasterUser Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin-changelog.012345 Read_Source_Log_Pos: 1219393 Relay_Log_File: relaylog.012340 Relay_Log_Pos: 30223388 Relay_Source_Log_File: mysql-bin-changelog.012345 Replica_IO_Running: No Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 30223232 Relay_Log_Space: 5248928866 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Master: NULL Source_SSL_Verify_Server_Cert: No 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: Replicate_Ignore_Server_Ids: Source_Server_Id: 67285976
Il campo Last_IO_Errno
mostra che l'istanza riceve l'errore I/O 1236. Il campo Master_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_master_log
con il seguente parametro:
CALL mysql.rds_next_master_log(12345);
Nota
Versioni precedenti di MySQL utilizzate SHOW SLAVE STATUS
al posto di SHOW REPLICA STATUS
. Se si utilizza una versione MySQL prima della 8.0.23, utilizzare SHOW SLAVE STATUS
.
mysql.rds_reset_external_master
Riconfigura un'istanza database RDS per MySQL affinché non sia più una replica di lettura di un'istanza di MySQL in esecuzione all'esterno di Amazon RDS.
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 del database.
Sintassi
CALL mysql.rds_reset_external_master;
Note per l'utilizzo
La procedura mysql.rds_reset_external_master
deve essere eseguita dall'utente master. Questa procedura deve essere eseguita sull'istanza database MySQL da rimuovere come replica di lettura di un'istanza MySQL eseguita esternamente a Amazon RDS.
Nota
Ti consigliamo di usare le repliche di lettura per gestire la replica tra due istanze database di Amazon RDS. In questo caso, si consiglia di usare solo questa e altre stored procedure correlate alla replica. Questo consente di usare topologie di replica più complesse tra le istanze database Amazon RDS. Queste stored procedure sono fornite principalmente per abilitare la replica con le istanze MySQL eseguite esternamente a Amazon RDS. Per ulteriori informazioni sulla gestione della replica tra istanze database Amazon RDS, consulta Uso delle repliche di lettura dell'istanza database.
Per ulteriori informazioni sull'uso della replica per importare dati da un'istanza di MySQL in esecuzione all'esterno di Amazon RDS, consulta Configurazione della replica della posizione del file di log binario con un'istanza di origine esterna..
mysql.rds_set_external_master
Configura un'istanza database RDS per MySQL come replica di lettura di un'istanza di MySQL in esecuzione all'esterno di Amazon RDS.
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 del database.
Nota
Puoi usare la procedura archiviata mysql.rds_set_external_master_with_delay per configurare un’istanza database di origine esterna e una replica ritardata.
Sintassi
CALL mysql.rds_set_external_master (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
);
Parametri
-
host_name
-
Il nome host o l'indirizzo IP dell'istanza di MySQL eseguita esternamente a Amazon RDS per diventare l’istanza database di origine.
-
host_port
-
La porta utilizzata dall'istanza di MySQL eseguita esternamente a Amazon RDS e da configurare come istanza database 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
-
L'ID di un utente con autorizzazioni
REPLICATION CLIENT
eREPLICATION SLAVE
nell'istanza di MySQL eseguita esternamente a Amazon RDS. Ti consigliamo di fornire un account utilizzato unicamente per la replica con l'istanza esterna. -
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 che contiene le informazioni relative alla replica.
-
mysql_binary_log_file_location
-
La posizione nel log binario
mysql_binary_log_file_name
a partire dalla quale la replica inizia a leggere le informazioni a essa relative.È possibile determinare il nome e la posizione del file binlog in esecuzione
SHOW MASTER STATUS
sull'istanza del database di origine. -
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
MASTER_SSL_VERIFY_SERVER_CERT
non è supportata. Questa opzione è impostata su 0, il che significa che la connessione è crittografata, ma i certificati non sono verificati.
Note per l'utilizzo
La procedura mysql.rds_set_external_master
deve essere eseguita dall'utente master. Questa procedura deve essere eseguita sull'istanza database MySQL da configurare come replica di lettura di un'istanza MySQL eseguita esternamente a Amazon RDS.
Prima di eseguire mysql.rds_set_external_master
, devi configurare l'istanza di MySQL in esecuzione all'esterno di Amazon RDS come istanza database di origine. Per connetterti all'istanza MySQL in esecuzione all'esterno di Amazon RDS, devi specificare i valori di replication_user_name
e replication_user_password
che indicano un utente della replica dotato delle autorizzazioni REPLICATION CLIENT
e REPLICATION SLAVE
per l'istanza esterna di MySQL.
Per configurare un'istanza esterna di MySQL come istanza database di origine
Mediante il client MySQL scelto, eseguire la connessione all'istanza esterna di MySQL e creare un account utente da utilizzare per la replica. Di seguito è riportato un esempio.
MySQL 5.7
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY '
password
';MySQL 8.0
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED WITH mysql_native_password BY '
password
';Nota
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.
-
Nell'istanza esterna di MySQL, concedere i privilegi
REPLICATION CLIENT
eREPLICATION SLAVE
all'utente della replica. L'esempio seguente concede i privilegiREPLICATION CLIENT
eREPLICATION SLAVE
su tutti i database per l'utente "repl_user" del dominio:MySQL 5.7
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '
password
';MySQL 8.0
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
Per utilizzare la replica crittografata, configura l'istanza database di origine per utilizzare le connessioni SSL.
Nota
Ti consigliamo di usare le repliche di lettura per gestire la replica tra due istanze database di Amazon RDS. In questo caso, si consiglia di usare solo questa e altre stored procedure correlate alla replica. Questo consente di usare topologie di replica più complesse tra le istanze database Amazon RDS. Queste stored procedure sono fornite principalmente per abilitare la replica con le istanze MySQL eseguite esternamente a Amazon RDS. Per ulteriori informazioni sulla gestione della replica tra istanze database Amazon RDS, consulta Uso delle repliche di lettura dell'istanza database.
Dopo aver chiamato mysql.rds_set_external_master
per configurare un'istanza database di Amazon RDS come replica di lettura, puoi chiamare mysql.rds_start_replication nella replica di lettura per avviare il processo di replica. Puoi chiamare mysql.rds_reset_external_master per rimuovere la configurazione della replica di lettura.
Quando mysql.rds_set_external_master
viene chiamato, Amazon RDS registra l'ora, l'utente e un'operazione di set master
nelle tabelle mysql.rds_history
e mysql.rds_replication_status
.
Esempi
Nel caso di esecuzione su un'istanza database MySQL, l'esempio seguente configura l'istanza database come replica di lettura di un'istanza di MySQL eseguita esternamente a Amazon RDS.
call mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user', '
password
', 'mysql-bin-changelog.0777', 120, 0);
mysql.rds_set_external_master_with_auto_position
Configura un'istanza database RDS for MySQL come replica di lettura di un'istanza di MySQL eseguita esternamente a Amazon RDS. Questa procedura configura anche la replica ritardata e la replica basata sugli ID globali di transazione (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 del database.
Sintassi
CALL mysql.rds_set_external_master_with_auto_position (
host_name
,host_port
,replication_user_name
,replication_user_password
,ssl_encryption
,delay
);
Parametri
-
host_name
-
Il nome host o l'indirizzo IP dell'istanza di MySQL eseguita esternamente a Amazon RDS per diventare l’istanza database di origine.
-
host_port
-
La porta utilizzata dall'istanza di MySQL eseguita esternamente a Amazon RDS e da configurare come istanza database 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
-
L'ID di un utente con autorizzazioni
REPLICATION CLIENT
eREPLICATION SLAVE
nell'istanza di MySQL eseguita esternamente a Amazon RDS. Ti consigliamo di fornire un account utilizzato unicamente per la replica con l'istanza esterna. -
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
MASTER_SSL_VERIFY_SERVER_CERT
non è 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).
Note per l'utilizzo
La procedura mysql.rds_set_external_master_with_auto_position
deve essere eseguita dall'utente master. Questa procedura deve essere eseguita sull'istanza database MySQL da configurare come replica di lettura di un'istanza MySQL eseguita esternamente a Amazon RDS.
Questa procedura è supportata per tutte le versioni di RDS per MySQL 5.7 e per RDS per MySQL 8.0.26 e versioni successive alla 8.0.
Prima di eseguire mysql.rds_set_external_master_with_auto_position
, devi configurare l'istanza di MySQL in esecuzione all'esterno di Amazon RDS come istanza database di origine. Per connetterti all'istanza MySQL in esecuzione all'esterno di Amazon RDS, devi specificare i valori per replication_user_name
e replication_user_password
. Questi valori devono indicare un utente di replica che dispone delle autorizzazioni REPLICATION CLIENT
e REPLICATION SLAVE
sull'istanza esterna di MySQL.
Per configurare un'istanza esterna di MySQL come istanza database di origine
Mediante il client MySQL scelto, eseguire la connessione all'istanza esterna di MySQL e creare un account utente da utilizzare per la replica. Di seguito è riportato un esempio.
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
-
Nell'istanza esterna di MySQL, concedere i privilegi
REPLICATION CLIENT
eREPLICATION SLAVE
all'utente della replica. L'esempio seguente concede i privilegiREPLICATION CLIENT
eREPLICATION SLAVE
su tutti i database per l'utente'repl_user'
per il dominio.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
Per ulteriori informazioni, consulta Configurazione della replica della posizione del file di log binario con un'istanza di origine esterna..
Nota
Ti consigliamo di usare le repliche di lettura per gestire la replica tra due istanze database di Amazon RDS. In questo caso, si consiglia di usare solo questa e altre stored procedure correlate alla replica. Questo consente di usare topologie di replica più complesse tra le istanze database Amazon RDS. Queste stored procedure sono fornite principalmente per abilitare la replica con le istanze MySQL eseguite esternamente a Amazon RDS. Per ulteriori informazioni sulla gestione della replica tra istanze database Amazon RDS, consulta Uso delle repliche di lettura dell'istanza database.
Dopo aver chiamato mysql.rds_set_external_master_with_auto_position
per configurare un'istanza database di Amazon RDS come replica di lettura, puoi chiamare mysql.rds_start_replication nella replica di lettura per avviare il processo di replica. Puoi chiamare mysql.rds_reset_external_master per rimuovere la configurazione della replica di lettura.
Quando viene chiamato mysql.rds_set_external_master_with_auto_position
, Amazon RDS registra l'ora, l'utente e un'operazione set master
nelle tabelle mysql.rds_history
e mysql.rds_replication_status
.
Per il disaster recovery puoi usare questa procedura con la stored procedure mysql.rds_start_replication_until o mysql.rds_start_replication_until_gtid. Per effettuare il roll forward delle modifiche a una replica di lettura ritardata al momento immediatamente precedente a un errore, puoi eseguire la procedura mysql.rds_set_external_master_with_auto_position
. Dopo che la procedura mysql.rds_start_replication_until_gtid
arresta la replica, puoi promuovere la replica di lettura come nuova istanza database primaria seguendo le istruzioni in Promozione di una replica di lettura a istanza database standalone.
Per usare la procedura mysql.rds_rds_start_replication_until_gtid
, è necessario che sia abilitata la replica basata su GTID. Per passare a una specifica transazione basata su GTID che notoriamente causa un problema, puoi usare la stored procedure mysql.rds_skip_transaction_with_gtid. Per ulteriori informazioni sull'utilizzo della replica basata su GTID, consulta Utilizzo della replica basata su GTID.
Esempi
Nel caso di esecuzione su un'istanza database MySQL, l'esempio seguente configura l'istanza database come replica di lettura di un'istanza di MySQL eseguita esternamente a Amazon RDS. Imposta il ritardo di replica minimo su un'ora (3600 secondi) nell'istanza database MySQL. Una modifica dall’istanza database di origine MySQL in esecuzione all'esterno di Amazon RDS non viene applicata nella replica di lettura dell'istanza database MySQL per almeno un'ora.
call mysql.rds_set_external_master_with_auto_position( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 0, 3600);
mysql.rds_set_external_master_with_delay
Configura un'istanza database RDS for MySQL come replica di lettura di un'istanza di MySQL in esecuzione all'esterno di Amazon RDS e configura la replica ritardata.
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 del database.
Sintassi
CALL mysql.rds_set_external_master_with_delay (
host_name
,host_port
,replication_user_name
,replication_user_password
,mysql_binary_log_file_name
,mysql_binary_log_file_location
,ssl_encryption
,delay
);
Parametri
-
host_name
-
Nome host o indirizzo IP dell'istanza MySQL in esecuzione all'esterno di Amazon RDS che diventerà l'istanza database di origine.
-
host_port
-
La porta utilizzata dall'istanza di MySQL eseguita esternamente a Amazon RDS e da configurare come istanza database di origine. Se la configurazione della rete include la replica della porta SSH che converte il numero di porta, specifica il numero di porta esposto da SSH.
-
replication_user_name
-
L'ID di un utente con autorizzazioni
REPLICATION CLIENT
eREPLICATION SLAVE
nell'istanza di MySQL eseguita esternamente a Amazon RDS. Ti consigliamo di fornire un account utilizzato unicamente per la replica con l'istanza esterna. -
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_name
a 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 MASTER STATUS
sull'istanza del database di origine. -
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
MASTER_SSL_VERIFY_SERVER_CERT
non è 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).
Note per l'utilizzo
La procedura mysql.rds_set_external_master_with_delay
deve essere eseguita dall'utente master. Questa procedura deve essere eseguita sull'istanza database MySQL da configurare come replica di lettura di un'istanza MySQL eseguita esternamente a Amazon RDS.
Prima di eseguire mysql.rds_set_external_master_with_delay
, devi configurare l'istanza di MySQL in esecuzione all'esterno di Amazon RDS come istanza database di origine. Per connetterti all'istanza MySQL in esecuzione all'esterno di Amazon RDS, devi specificare i valori per replication_user_name
e replication_user_password
. Questi valori devono indicare un utente di replica che dispone delle autorizzazioni REPLICATION CLIENT
e REPLICATION SLAVE
sull'istanza esterna di MySQL.
Per configurare un'istanza esterna di MySQL come istanza database di origine
-
Mediante il client MySQL scelto, eseguire la connessione all'istanza esterna di MySQL e creare un account utente da utilizzare per la replica. Di seguito è riportato un esempio.
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
-
Nell'istanza esterna di MySQL, concedere i privilegi
REPLICATION CLIENT
eREPLICATION SLAVE
all'utente della replica. L'esempio seguente concede i privilegiREPLICATION CLIENT
eREPLICATION SLAVE
su tutti i database per l'utente'repl_user'
per il dominio.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
Per ulteriori informazioni, consulta Configurazione della replica della posizione del file di log binario con un'istanza di origine esterna..
Nota
Ti consigliamo di usare le repliche di lettura per gestire la replica tra due istanze database di Amazon RDS. In questo caso, si consiglia di usare solo questa e altre stored procedure correlate alla replica. Questo consente di usare topologie di replica più complesse tra le istanze database Amazon RDS. Queste stored procedure sono fornite principalmente per abilitare la replica con le istanze MySQL eseguite esternamente a Amazon RDS. Per ulteriori informazioni sulla gestione della replica tra istanze database Amazon RDS, consulta Uso delle repliche di lettura dell'istanza database.
Dopo aver chiamato mysql.rds_set_external_master_with_delay
per configurare un'istanza database di Amazon RDS come replica di lettura, puoi chiamare mysql.rds_start_replication nella replica di lettura per avviare il processo di replica. Puoi chiamare mysql.rds_reset_external_master per rimuovere la configurazione della replica di lettura.
Quando viene chiamato mysql.rds_set_external_master_with_delay
, Amazon RDS registra l'ora, l'utente e un'operazione set master
nelle tabelle mysql.rds_history
e mysql.rds_replication_status
.
Per il disaster recovery puoi usare questa procedura con la stored procedure mysql.rds_start_replication_until o mysql.rds_start_replication_until_gtid. Per effettuare il roll forward delle modifiche a una replica di lettura ritardata al momento immediatamente precedente a un errore, puoi eseguire la procedura mysql.rds_set_external_master_with_delay
. Dopo che la procedura mysql.rds_start_replication_until
arresta la replica, puoi promuovere la replica di lettura come nuova istanza database primaria seguendo le istruzioni in Promozione di una replica di lettura a istanza database standalone.
Per usare la procedura mysql.rds_rds_start_replication_until_gtid
, è necessario che sia abilitata la replica basata su GTID. Per passare a una specifica transazione basata su GTID che notoriamente causa un problema, puoi usare la stored procedure mysql.rds_skip_transaction_with_gtid. Per ulteriori informazioni sull'utilizzo della replica basata su GTID, consulta Utilizzo della replica basata su GTID.
La procedura mysql.rds_set_external_master_with_delay
è disponibile nelle seguenti versioni di RDS for MySQL:
-
MySQL 8.0.26 e versioni successive alla 8.0
-
Tutte le versioni 5.7
Esempi
Nel caso di esecuzione su un'istanza database MySQL, l'esempio seguente configura l'istanza database come replica di lettura di un'istanza di MySQL eseguita esternamente a Amazon RDS. Imposta il ritardo di replica minimo su un'ora (3600 secondi) nell'istanza database MySQL. Una modifica dall’istanza database di origine MySQL in esecuzione all'esterno di Amazon RDS non viene applicata nella replica di lettura dell'istanza database MySQL per almeno un'ora.
call mysql.rds_set_external_master_with_delay( 'Externaldb.some.com', 3306, 'repl_user', 'SomePassW0rd', 'mysql-bin-changelog.000777', 120, 0, 3600);
mysql.rds_set_master_auto_position
Imposta la modalità di replica in modo che sia basata sulle posizioni dei file di log binario o sugli ID globali di transazione (GTID).
Sintassi
CALL mysql.rds_set_master_auto_position (
auto_position_mode
);
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.
-
Note per l'utilizzo
La procedura mysql.rds_set_master_auto_position
deve essere eseguita dall'utente master.
Questa procedura è supportata per tutte le versioni di RDS per MySQL 5.7 e per RDS per MySQL 8.0.26 e versioni successive alla 8.0.
mysql.rds_set_source_delay
Imposta il numero minimo di secondi per ritardare la replica dall'istanza database di origine alla replica di lettura corrente. Usa questa procedura in presenza di una connessione a una replica di lettura per ritardare la replica rispetto all’istanza database di origine.
Sintassi
CALL mysql.rds_set_source_delay(
delay
);
Parametri
-
delay
-
Numero minimo di secondi per ritardare la replica dall'istanza database di origine.
Il limite per questo parametro è un giorno (86400 secondi).
Note per l'utilizzo
La procedura mysql.rds_set_source_delay
deve essere eseguita dall'utente master.
Per il disaster recovery puoi usare questa procedura con la stored procedure mysql.rds_start_replication_until o mysql.rds_start_replication_until_gtid. Per effettuare il roll forward delle modifiche a una replica di lettura ritardata al momento immediatamente precedente a un errore, puoi eseguire la procedura mysql.rds_set_source_delay
. Dopo che la procedura mysql.rds_start_replication_until
o mysql.rds_start_replication_until_gtid
arresta la replica, puoi promuovere la replica di lettura come nuova istanza database master seguendo le istruzioni in Promozione di una replica di lettura a istanza database standalone.
Per usare la procedura mysql.rds_rds_start_replication_until_gtid
, è necessario che sia abilitata la replica basata su GTID. Per passare a una specifica transazione basata su GTID che notoriamente causa un problema, puoi usare la stored procedure mysql.rds_skip_transaction_with_gtid. Per ulteriori informazioni sulla replica basata su GTID, consulta Utilizzo della replica basata su GTID.
La procedura mysql.rds_set_source_delay
è disponibile nelle seguenti versioni di RDS for MySQL:
-
MySQL 8.0.26 e versioni successive alla 8.0
-
Tutte le versioni 5.7
Esempi
Per ritardare la replica rispetto all’istanza database di origine nella replica di lettura corrente per almeno un'ora (3600 secondi), puoi chiamare mysql.rds_set_source_delay
con il parametro seguente:
CALL mysql.rds_set_source_delay(3600);
mysql.rds_skip_transaction_with_gtid
Ignora la replica di una transazione con l'ID globale di transazione (GTID) specificato in un'istanza database MySQL.
Puoi usare questa procedura per il ripristino di emergenza quando è noto che una specifica transazione GTID causa un problema. Usa questa stored procedure per saltare la transazione problematica. Esempi di transazioni problematiche includono le transazioni che disabilitano la replica, eliminano dati importanti o con le quali l'istanza database diventa non disponibile.
Sintassi
CALL mysql.rds_skip_transaction_with_gtid (
gtid_to_skip
);
Parametri
-
gtid_to_skip
-
GTID della transazione di replica da ignorare.
Note per l'utilizzo
La procedura mysql.rds_skip_transaction_with_gtid
deve essere eseguita dall'utente master.
Questa procedura è supportata per tutte le versioni di RDS per MySQL 5.7 e per RDS per MySQL 8.0.26 e versioni successive alla 8.0.
Esempi
Nell'esempio seguente viene ignorata la replica della transazione con il GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
.
CALL mysql.rds_skip_transaction_with_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_skip_repl_error
Ignora ed elimina un errore di replica su una replica di lettura database MySQL.
Sintassi
CALL mysql.rds_skip_repl_error;
Note per l'utilizzo
La procedura mysql.rds_skip_repl_error
deve essere eseguita dall'utente master su una replica di lettura. Per ulteriori informazioni su questa procedura, consulta Chiamata della procedura mysql.rds_skip_repl_error.
Per determinare se ci sono errori, esegui il comando MySQL SHOW REPLICA STATUS\G
. Se un errore di replica non è critico, puoi eseguire mysql.rds_skip_repl_error
per ignorare l'errore. Se vi sono più errori, mysql.rds_skip_repl_error
elimina il primo, quindi informa della presenza di altri errori. Puoi quindi utilizzare SHOW REPLICA STATUS\G
per determinare l'operazione corretta per l'errore successivo. Per informazioni sui valori restituiti, consulta Istruzione SHOW REPLICA STATUS
Nota
Versioni precedenti di MySQL utilizzate SHOW SLAVE STATUS
al posto di SHOW REPLICA STATUS
. Se si utilizza una versione MySQL prima della 8.0.23, utilizzare SHOW SLAVE STATUS
.
Per ulteriori informazioni sulla risoluzione degli errori di replica con Amazon RDS, consulta Risoluzione dei problemi relativi a una replica di lettura MySQL.
Errore di replica interrotta
Quando si chiama la procedura mysql.rds_skip_repl_error
, è possibile che venga visualizzato un messaggio di errore che indica che la replica è inattiva o disattivata.
Questo messaggio di errore viene visualizzato se si esegue la procedura sull'istanza primaria anziché sulla replica di lettura. È necessario eseguire questa procedura sulla replica di lettura affinché funzioni.
Questo messaggio di errore può essere visualizzato anche quando si esegue la procedura sulla replica di lettura, ma la replica non viene riavviata correttamente.
Se devi ignorare un numero elevato di errori, il ritardo della replica potrebbe superare il periodo di retention predefinito per i file di log binari (binlog). In questo caso può verificarsi un errore irreversibile causato dall'eliminazione dei file binlog prima della loro riproduzione nella replica di lettura. Questa eliminazione causa l'arresto della replica e non è più possibile chiamare il comando mysql.rds_skip_repl_error
per ignorare errori di replica.
Puoi limitare questo problema aumentando il numero di ore di retention dei file binlog nell’istanza database di origine. Una volta aumentato il tempo di retention dei file binlog, puoi riavviare la replica e chiamare il comando mysql.rds_skip_repl_error
secondo necessità.
Per impostare il periodo di retention dei file binlog, usa la procedura mysql.rds_set_configuration e specifica un parametro di configurazione di 'binlog
retention hours'
insieme al numero di ore di retention dei file binlog nel cluster di database. Nell'esempio seguente il periodo di retention dei file binlog è impostato su 48 ore.
CALL mysql.rds_set_configuration('binlog retention hours', 48);
mysql.rds_start_replication
Avvia la replica da un'istanza database RDS per MySQL.
Nota
Puoi usare la stored procedure mysql.rds_start_replication_until o mysql.rds_start_replication_until_gtid per avviare la replica da un'istanza database RDS per MySQL e arrestare la replica in corrispondenza della posizione del file di log binario specificato.
Sintassi
CALL mysql.rds_start_replication;
Note per l'utilizzo
La procedura mysql.rds_start_replication
deve essere eseguita dall'utente master.
Per importare dati da un'istanza di MySQL in esecuzione all'esterno di Amazon RDS, devi chiamare mysql.rds_start_replication
nella replica di lettura per avviare il processo di replica dopo aver chiamato mysql.rds_set_external_master
per creare la configurazione della replica. Per ulteriori informazioni, consulta Ripristino di un backup in un'istanza database MySQL.
Per esportare dati in un'istanza di MySQL in esecuzione all'esterno di Amazon RDS, devi chiamare mysql.rds_start_replication
e mysql.rds_stop_replication
nella replica di lettura per controllare alcune operazioni di replica, come l'eliminazione di log binari. Per ulteriori informazioni, consulta Esportazione di dati da un'istanza database MySQL tramite la replica.
Puoi anche chiamare mysql.rds_start_replication
nella replica di lettura per riavviare un processo di replica arrestato in precedenza chiamando mysql.rds_stop_replication
. Per ulteriori informazioni, consulta Uso delle repliche di lettura dell'istanza database.
mysql.rds_start_replication_until
Avvia la replica da un'istanza database RDS per MySQL e la arresta in corrispondenza della posizione del file di log binario specificato.
Sintassi
CALL mysql.rds_start_replication_until (
replication_log_file
,replication_stop_point
);
Parametri
-
replication_log_file
-
Il nome del log binario sull’istanza database di origine che contiene le informazioni relative alla replica.
-
replication_stop_point
-
Posizione nel log binario
replication_log_file
in corrispondenza di cui la replica verrà arrestata.
Note per l'utilizzo
La procedura mysql.rds_start_replication_until
deve essere eseguita dall'utente master.
La procedura mysql.rds_start_replication_until
è disponibile nelle seguenti versioni di RDS for MySQL:
-
MySQL 8.0.26 e versioni successive alla 8.0
-
Tutte le versioni 5.7
Puoi usare questa procedura archiviata con la replica ritardata per il disaster recovery. Se hai configurato la replica ritardata, puoi usare questa procedura archiviata per effettuare il roll forward delle modifiche a una replica di lettura ritardata al momento immediatamente precedente a un errore. Dopo che questa procedura archiviata arresta la replica, puoi promuovere la replica di lettura come nuova istanza database primaria seguendo le istruzioni in Promozione di una replica di lettura a istanza database standalone.
Puoi configurare la replica ritardata usando le procedure archiviate seguenti:
Il nome file specificato per il parametro replication_log_file
deve corrispondere al nome 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 e replica le modifiche fino a raggiungere la posizione 120
nel file di log binario mysql-bin-changelog.000777
.
call mysql.rds_start_replication_until( 'mysql-bin-changelog.000777', 120);
mysql.rds_start_replication_until_gtid
Avvia la replica da un'istanza database RDS per MySQL e la arresta immediatamente dopo l'ID globale di transazione (GTID) specificato.
Sintassi
CALL mysql.rds_start_replication_until_gtid(
gtid
);
Parametri
-
gtid
-
Il GTID dopo il quale deve essere arrestata la replica.
Note per l'utilizzo
La procedura mysql.rds_start_replication_until_gtid
deve essere eseguita dall'utente master.
Questa procedura è supportata per tutte le versioni di RDS per MySQL 5.7 e per RDS per MySQL 8.0.26 e versioni successive alla 8.0.
Puoi usare questa procedura archiviata con la replica ritardata per il disaster recovery. Se hai configurato la replica ritardata, puoi usare questa procedura archiviata per effettuare il roll forward delle modifiche a una replica di lettura ritardata al momento immediatamente precedente a un errore. Dopo che questa procedura archiviata arresta la replica, puoi promuovere la replica di lettura come nuova istanza database primaria seguendo le istruzioni in Promozione di una replica di lettura a istanza database standalone.
Puoi configurare la replica ritardata usando le procedure archiviate seguenti:
Quando il parametro gtid
specifica una transazione che è già stata eseguita dalla replica, la procedura viene arrestata immediatamente.
Esempi
L'esempio seguente avvia la replica e replica le modifiche finché non raggiunge il GTID 3E11FA47-71CA-11E1-9E33-C80AA9429562:23
.
call mysql.rds_start_replication_until_gtid('3E11FA47-71CA-11E1-9E33-C80AA9429562:23');
mysql.rds_stop_replication
Arresta la replica da un'istanza database MySQL.
Sintassi
CALL mysql.rds_stop_replication;
Note per l'utilizzo
La procedura mysql.rds_stop_replication
deve essere eseguita dall'utente master.
Se configuri la replica per importare dati da un'istanza di MySQL in esecuzione all'esterno di Amazon RDS, puoi chiamare mysql.rds_stop_replication
nella replica di lettura per arrestare il processo di replica al termine dell'importazione. Per ulteriori informazioni, consulta Ripristino di un backup in un'istanza database MySQL.
Se configuri la replica per esportare dati in un'istanza di MySQL esterna ad Amazon RDS, devi chiamare mysql.rds_start_replication
e mysql.rds_stop_replication
nella replica di lettura per controllare alcune operazioni di replica, come l'eliminazione di log binari. Per ulteriori informazioni, consulta Esportazione di dati da un'istanza database MySQL tramite la replica.
Puoi usare mysql.rds_stop_replication
anche per arrestare la replica tra due istanze database Amazon RDS. In genere si arresta una replica per eseguire un'operazione di lunga durata nella replica di lettura, come la creazione di un indice di grandi dimensioni nella replica di lettura. Puoi riavviare qualsiasi processo di replica arrestato chiamando mysql.rds_start_replication nella replica di lettura. Per ulteriori informazioni, consulta Uso delle repliche di lettura dell'istanza database.