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à.
Configurazione, avvio e arresto della replica dei log binari (binlog)
Le seguenti stored procedure controllano il modo in cui le transazioni vengono replicate da un database esterno a RDS for My SQL o da RDS for My SQL a un database esterno.
Argomenti
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
Le versioni precedenti di My utilizzavano invece di. SQL
SHOW SLAVE STATUS
SHOW REPLICA STATUS
Se utilizzi una SQL versione My precedente alla 8.0.23, utilizza.SHOW 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 di un problema relativo alla replica My SQL read.
Esempi
Supponiamo che la replica fallisca su una RDS replica di My SQL . 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
Le versioni precedenti di My SQL utilizzavano SHOW SLAVE STATUS
invece di. SHOW REPLICA STATUS
Se utilizzi una SQL versione My precedente alla 8.0.23, utilizza. SHOW SLAVE STATUS
Riconfigura un'istanza in modo che non sia più una replica di lettura di un'istanza di My in esecuzione SQL esterna ad 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 dei parametri in un gruppo di parametri DB in Amazon RDS .
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 My SQL DB per essere rimossa come replica di lettura di un'SQListanza My in esecuzione all'esterno di AmazonRDS.
Nota
Ti consigliamo di utilizzare repliche di lettura per gestire la replica tra due istanze Amazon RDS DB, quando possibile. In questo caso, si consiglia di usare solo questa e altre stored procedure correlate alla replica. Queste pratiche consentono topologie di replica più complesse tra istanze Amazon RDS DB. Offriamo queste procedure archiviate principalmente per consentire la replica con SQL istanze My in esecuzione all'esterno di Amazon. RDS Per informazioni sulla gestione della replica tra istanze Amazon RDS DB, consulta. Uso delle repliche di lettura dell'istanza database
Per ulteriori informazioni sull'utilizzo della replica per importare dati da un'istanza di My SQL in esecuzione esterna ad AmazonRDS, consultaConfigurazione della replica della posizione del file di log binario con un'istanza di origine esterna..
Configura un'istanza My DB RDS per SQL My SQL in modo che sia una replica di lettura di un'istanza di SQL My in esecuzione esterna ad 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 dei parametri in un gruppo di parametri DB in Amazon RDS .
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'SQListanza My in esecuzione all'esterno di Amazon RDS per diventare l'istanza del database di origine.
-
host_port
-
La porta utilizzata dall'SQListanza My in esecuzione esterna ad Amazon RDS per essere configurata come istanza del database di origine. Se la configurazione di rete include la replica delle porte Secure Shell (SSH) che converte il numero di porta, specifica il numero di porta da cui è esposta. SSH
-
replication_user_name
-
L'ID di un utente con
REPLICATION CLIENT
eREPLICATION SLAVE
le autorizzazioni sull'SQListanza My in esecuzione all'esterno di AmazonRDS. 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) viene utilizzata sulla connessione di replica. 1 specifica di utilizzare la SSL crittografia, 0 specifica di non utilizzare la crittografia. 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 My SQL DB per essere configurata come replica di lettura di un'SQListanza My in esecuzione all'esterno di AmazonRDS.
Prima dell'esecuzionemysql.rds_set_external_master
, devi configurare l'istanza di My SQL running external RDS to Amazon come istanza di database di origine. Per connetterti all'SQListanza My in esecuzione esternamente ad AmazonRDS, devi specificare replication_user_name
replication_user_password
i valori che indicano un utente di replica che dispone delle autorizzazioni REPLICATION CLIENT
e REPLICATION SLAVE
delle autorizzazioni sull'istanza esterna di My. SQL
Per configurare un'istanza esterna di My SQL come istanza del database di origine
Utilizzando il SQL client My di tua scelta, connettiti all'istanza esterna di My SQL e crea un account utente da utilizzare per la replica. Di seguito è riportato un esempio.
Il mio 5.7 SQL
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY '
password
';Il mio 8.0 SQL
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.
-
Sull'istanza esterna di MySQL, concedi
REPLICATION CLIENT
eREPLICATION SLAVE
privilegi al tuo utente di replica. L'esempio seguente concede i privilegiREPLICATION CLIENT
eREPLICATION SLAVE
su tutti i database per l'utente "repl_user" del dominio:Il mio 5.7 SQL
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com' IDENTIFIED BY '
password
';Il mio 8.0 SQL
GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'mydomain.com';
Per utilizzare la replica crittografata, configura l'istanza del database di origine per utilizzare SSL le connessioni.
Nota
Ti consigliamo di utilizzare repliche di lettura per gestire la replica tra due istanze Amazon RDS DB, quando possibile. In questo caso, si consiglia di usare solo questa e altre stored procedure correlate alla replica. Queste pratiche consentono topologie di replica più complesse tra istanze Amazon RDS DB. Offriamo queste procedure archiviate principalmente per consentire la replica con SQL istanze My in esecuzione all'esterno di Amazon. RDS Per informazioni sulla gestione della replica tra istanze Amazon RDS DB, consulta. Uso delle repliche di lettura dell'istanza database
Dopo aver chiamato mysql.rds_set_external_master
per configurare un'istanza Amazon RDS DB come replica di lettura, puoi richiamare mysql.rds_start_replication la replica di lettura per avviare il processo di replica. Puoi chiamare 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'azione di set master
nelle mysql.rds_replication_status
tabelle mysql.rds_history
e.
Esempi
Quando viene eseguita su un'istanza My SQL DB, l'esempio seguente configura l'istanza DB come replica di lettura di un'istanza di My SQL in esecuzione esterna ad 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 RDS for My SQL DB come replica di lettura di un'istanza di My SQL in esecuzione esterna ad Amazon. RDS Questa procedura configura anche la replica ritardata e la replica in base agli identificatori di transazione globali (). GTIDs
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 dei parametri in un gruppo di parametri DB in Amazon RDS .
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'SQListanza My in esecuzione all'esterno di Amazon RDS per diventare l'istanza del database di origine.
-
host_port
-
La porta utilizzata dall'SQListanza My in esecuzione esterna ad Amazon RDS per essere configurata come istanza del database di origine. Se la configurazione di rete include la replica delle porte Secure Shell (SSH) che converte il numero di porta, specifica il numero di porta da cui è esposta. SSH
-
replication_user_name
-
L'ID di un utente con
REPLICATION CLIENT
eREPLICATION SLAVE
le autorizzazioni sull'SQListanza My in esecuzione all'esterno di AmazonRDS. 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) viene utilizzata sulla connessione di replica. 1 specifica di utilizzare la SSL crittografia, 0 specifica di non utilizzare la crittografia. 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 My SQL DB per essere configurata come replica di lettura di un'SQListanza My in esecuzione all'esterno di AmazonRDS.
Questa procedura è supportata RDS per tutte le versioni di My SQL 5.7 e RDS per le versioni di My SQL 8.0.26 e successive 8.0.
Prima dell'esecuzionemysql.rds_set_external_master_with_auto_position
, devi configurare l'istanza di My SQL running external RDS to Amazon come istanza di database di origine. Per connetterti all'SQListanza My in esecuzione esternamente ad AmazonRDS, devi specificare i valori per replication_user_name
ereplication_user_password
. Questi valori devono indicare un utente di replica che dispone delle autorizzazioni REPLICATION CLIENT
e REPLICATION SLAVE
delle autorizzazioni sull'istanza esterna di My. SQL
Per configurare un'istanza esterna di My SQL come istanza del database di origine
Utilizzando il SQL client My di tua scelta, connettiti all'istanza esterna di My SQL e crea un account utente da utilizzare per la replica. Di seguito è riportato un esempio.
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
-
Sull'istanza esterna di MySQL, concedi
REPLICATION SLAVE
iREPLICATION CLIENT
privilegi al tuo utente di 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 utilizzare repliche di lettura per gestire la replica tra due istanze Amazon RDS DB, quando possibile. In questo caso, si consiglia di usare solo questa e altre stored procedure correlate alla replica. Queste pratiche consentono topologie di replica più complesse tra istanze Amazon RDS DB. Offriamo queste procedure archiviate principalmente per consentire la replica con SQL istanze My in esecuzione all'esterno di Amazon. RDS Per informazioni sulla gestione della replica tra istanze Amazon RDS DB, consulta. Uso delle repliche di lettura dell'istanza database
Prima di chiamaremysql.rds_set_external_master_with_auto_position
, assicurati di chiamare mysql.rds_set_external_source_gtid_purged per impostare la variabile di gtid_purged
sistema con un GTID intervallo specificato da una fonte esterna.
Dopo aver chiamato mysql.rds_set_external_master_with_auto_position
per configurare un'istanza Amazon RDS DB come replica di lettura, puoi richiamare mysql.rds_start_replication la replica di lettura per avviare il processo di replica. Puoi chiamare per rimuovere la configurazione della replica di lettura.
Quando chiamimysql.rds_set_external_master_with_auto_position
, Amazon RDS registra l'ora, l'utente e un'azione di set master
nelle mysql.rds_replication_status
tabelle mysql.rds_history
e.
Per il disaster recovery puoi usare questa procedura con la stored procedure o . 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 utilizzare la mysql.rds_rds_start_replication_until_gtid
procedura, è necessario abilitare la replica GTID basata. Per ignorare una transazione GTID basata su una specifica transazione che è nota come causa di un disastro, è possibile utilizzare la stored procedure. Per ulteriori informazioni sull'utilizzo della replica GTID basata, vedere. Utilizzo della replica GTID basata
Esempi
Quando viene eseguita su un'istanza My SQL DB, l'esempio seguente configura l'istanza DB come replica di lettura di un'istanza di My SQL in esecuzione esterna ad Amazon. RDS Imposta il ritardo minimo di replica a un'ora (3.600 secondi) sull'istanza My DB. SQL Una modifica rispetto all'istanza del database My SQL source in esecuzione esterna ad Amazon RDS non viene applicata alla replica di lettura dell'istanza My SQL DB 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 RDS for My SQL DB come replica di lettura di un'istanza di My SQL in esecuzione esterna ad 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 dei parametri in un gruppo di parametri DB in Amazon RDS .
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
-
Il nome host o l'indirizzo IP dell'SQListanza My in esecuzione all'esterno di Amazon RDS che diventerà l'istanza del database di origine.
-
host_port
-
La porta utilizzata dall'SQListanza My in esecuzione esterna ad Amazon RDS per essere configurata come istanza del database di origine. Se la configurazione di rete include la replica delle SSH porte che converte il numero di porta, specifica il numero di porta da cui è esposta. SSH
-
replication_user_name
-
L'ID di un utente con
REPLICATION CLIENT
eREPLICATION SLAVE
le autorizzazioni sull'SQListanza My in esecuzione all'esterno di AmazonRDS. 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) viene utilizzata sulla connessione di replica. 1 specifica di utilizzare la SSL crittografia, 0 specifica di non utilizzare la crittografia. 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 My SQL DB per essere configurata come replica di lettura di un'SQListanza My in esecuzione all'esterno di AmazonRDS.
Prima dell'esecuzionemysql.rds_set_external_master_with_delay
, devi configurare l'istanza di My SQL running external RDS to Amazon come istanza di database di origine. Per connetterti all'SQListanza My in esecuzione esternamente ad AmazonRDS, devi specificare i valori per replication_user_name
ereplication_user_password
. Questi valori devono indicare un utente di replica che dispone delle autorizzazioni REPLICATION CLIENT
e REPLICATION SLAVE
delle autorizzazioni sull'istanza esterna di My. SQL
Per configurare un'istanza esterna di My SQL come istanza del database di origine
-
Utilizzando il SQL client My di tua scelta, connettiti all'istanza esterna di My SQL e crea un account utente da utilizzare per la replica. Di seguito è riportato un esempio.
CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'SomePassW0rd'
-
Sull'istanza esterna di MySQL, concedi
REPLICATION SLAVE
iREPLICATION CLIENT
privilegi al tuo utente di 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 utilizzare repliche di lettura per gestire la replica tra due istanze Amazon RDS DB, quando possibile. In questo caso, si consiglia di usare solo questa e altre stored procedure correlate alla replica. Queste pratiche consentono topologie di replica più complesse tra istanze Amazon RDS DB. Offriamo queste procedure archiviate principalmente per consentire la replica con SQL istanze My in esecuzione all'esterno di Amazon. RDS Per informazioni sulla gestione della replica tra istanze Amazon RDS DB, consulta. Uso delle repliche di lettura dell'istanza database
Dopo aver chiamato mysql.rds_set_external_master_with_delay
per configurare un'istanza Amazon RDS DB come replica di lettura, puoi richiamare mysql.rds_start_replication la replica di lettura per avviare il processo di replica. Puoi chiamare per rimuovere la configurazione della replica di lettura.
Quando chiamimysql.rds_set_external_master_with_delay
, Amazon RDS registra l'ora, l'utente e un'azione di set master
nelle mysql.rds_replication_status
tabelle mysql.rds_history
e.
Per il disaster recovery puoi usare questa procedura con la stored procedure o . 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 utilizzare la mysql.rds_rds_start_replication_until_gtid
procedura, è necessario abilitare la replica GTID basata. Per ignorare una transazione GTID basata su una specifica transazione che è nota come causa di un disastro, è possibile utilizzare la stored procedure. Per ulteriori informazioni sull'utilizzo della replica GTID basata, vedere. Utilizzo della replica GTID basata
La mysql.rds_set_external_master_with_delay
procedura è disponibile nelle seguenti versioni di RDS for MySQL:
-
Le mie versioni SQL 8.0.26 e successive 8.0
-
Tutte le versioni 5.7
Esempi
Quando viene eseguita su un'istanza My SQL DB, l'esempio seguente configura l'istanza DB come replica di lettura di un'istanza di My SQL in esecuzione esterna ad Amazon. RDS Imposta il ritardo minimo di replica a un'ora (3.600 secondi) sull'istanza My DB. SQL Una modifica rispetto all'istanza del database My SQL source in esecuzione esterna ad Amazon RDS non viene applicata alla replica di lettura dell'istanza My SQL DB 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_external_source_gtid_purged
Imposta la variabile di sistema gtid_purged con un intervallo specificato da una fonte esterna.gtid_purged
valore è necessario per configurare la replica GTID basata per riprendere la replica utilizzando il posizionamento automatico.
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 dei parametri in un gruppo di parametri DB in Amazon RDS .
Sintassi
CALL mysql.rds_set_external_source_gtid_purged(
server_uuid
,start_pos
,end_pos
);
Parametri
-
server_uuid
-
L'identificatore univoco universale (UUID) del server esterno da cui viene importato l'intervallo. GTID
-
start_pos
-
La posizione iniziale dell'GTIDintervallo da impostare.
-
end_pos
-
La posizione finale dell'GTIDintervallo da impostare.
Note per l'utilizzo
La mysql.rds_set_external_source_gtid_purged
procedura è disponibile solo con My SQL 8.0.37 e versioni successive 8.0.
Chiama mysql.rds_set_external_source_gtid_purged
prima di chiamare o. mysql.rds_set_external_master_with_auto_position mysql.rds_set_external_source_with_auto_position_for_channel
Prima di chiamaremysql.rds_set_external_source_gtid_purged
, assicuratevi di interrompere tutti i canali di replica attivi per il database. Per verificare lo stato di un canale, utilizzate l'SQListruzione SHOW REPLICA STATUS
My. Per interrompere la replica su un canale, chiamatemysql.rds_stop_replication_for_channel.
L'GTIDintervallo specificato deve essere un sovrainsieme del valore esistenteGTID_PURGED
. Questa stored procedure controlla i seguenti valori prima di impostare il GTID_PURGED
valore:
Il
server_uuid
è valido.Il valore di
start_pos
è maggiore0
e minore del valore diend_pos
.Il valore di
end_pos
è maggiore o uguale al valore distart_pos
.
Se il GTID set sul server esterno contiene più intervalli di valori, valuta la possibilità di chiamare la procedura più volte con valori GTID impostati diversi.
Quando chiamimysql.rds_set_external_source_gtid_purged
, Amazon RDS registra l'ora, l'utente e un'azione set gtid_purged
nella mysql.rds_history
tabella.
Se non imposti il gtid_purged
valore in modo appropriato per il backup utilizzato per la replica, ciò può comportare transazioni mancanti o duplicate durante il processo di replica. Effettuate le seguenti operazioni per impostare il valore corretto. gtid_purged
Per impostare il valore gtid_purged sulla replica
Determina il point-in-time o lo specifico file di backup da utilizzare come punto di partenza per la replica. Potrebbe trattarsi di un backup logico (un file mysqldump) o un backup fisico (uno snapshot Amazon). RDS
Determina il valore.
gtid_executed
Questo valore rappresenta l'insieme di tutto ciò GTIDs che è stato eseguito sul server. Per recuperare questo valore, nell'istanza di origine, effettuate una delle seguenti operazioni:Esegui l'SQListruzione
SELECT @@GLOBAL.GTID_EXECUTED;
nel momento in cui è stato eseguito il backup.Se nella rispettiva utilità di backup sono incluse opzioni correlate, estrai il valore dal file di backup. Per ulteriori informazioni, consulta l'set-gtid-purged
opzione nella mia SQL documentazione.
Determina il
gtid_purged
valore da utilizzare per la chiamata amysql.rds_set_external_source_gtid_purged
. Ilgtid_purged
valore deve includere tutto ciò GTIDs che è stato eseguito sull'istanza di origine e non è più necessario per la replica. Pertanto, ilgtid_purged
valore deve essere un sottoinsieme delgtid_executed
valore recuperato nel passaggio precedente.Per determinare il
gtid_purged
valore, identifica i valori GTIDs che non sono inclusi nel backup e non sono più necessari per la replica. È possibile farlo analizzando i log binari o utilizzando uno strumento come mysqlbinlog per trovare quelli che sono stati eliminati dai log binari. GTIDsIn alternativa, se si dispone di un backup coerente che include tutti i log binari fino al punto di backup, è possibile impostare il valore in modo che sia uguale al
gtid_purged
valore nel punto di backup.gtid_executed
Dopo aver determinato il
gtid_purged
valore appropriato e coerente con il backup, chiamate lamysql.rds_set_external_source_gtid_purged
stored procedure sull'istanza RDS for My SQL DB per impostare il valore.
Esempi
Quando viene eseguito su un'istanza My SQL DB, l'esempio seguente imposta l'GTIDintervallo proveniente da un SQL server My esterno con UUID12345678-abcd-1234-efgh-123456789abc
, una posizione iniziale e una posizione finale di100
. 1
Il GTID valore risultante è impostato su+12345678-abcd-1234-efgh-123456789abc:1-100
.
CALL mysql.rds_set_external_source_gtid_purged('12345678-abcd-1234-efgh-123456789abc', 1, 100);
Imposta la modalità di replica in modo che sia basata sulle posizioni dei file di registro binari o sugli identificatori globali delle transazioni (). GTIDs
Sintassi
CALL mysql.rds_set_master_auto_position (
auto_position_mode
);
Parametri
-
auto_position_mode
-
Un valore che indica se utilizzare la replica della posizione dei file di registro o GTID la replica basata:
-
0
– Usa il metodo di replica basato sulla posizione del file di log binario. Il valore di default è0
. -
1
— Utilizzare il metodo di replica GTID basato.
-
Note per l'utilizzo
La procedura mysql.rds_set_master_auto_position
deve essere eseguita dall'utente master.
Questa procedura è supportata RDS per tutte le versioni di My SQL 5.7 e RDS per le versioni di My SQL 8.0.26 e successive 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 o . 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 utilizzare la mysql.rds_rds_start_replication_until_gtid
procedura, è necessario abilitare la replica GTID basata. Per ignorare una transazione GTID basata su una specifica transazione che è nota come causa di un disastro, è possibile utilizzare la stored procedure. Per ulteriori informazioni sulla replica GTID basata, vedere. Utilizzo della replica GTID basata
La mysql.rds_set_source_delay
procedura è disponibile nelle seguenti versioni di RDS for MySQL:
-
Le mie versioni SQL 8.0.26 e successive 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_repl_error
Ignora ed elimina un errore di replica su una replica di lettura di My DB. SQL
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 My. SQL 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, vedere l'SHOWREPLICASTATUSistruzione
Nota
Le versioni precedenti di My SQL utilizzavano SHOW SLAVE STATUS
invece diSHOW REPLICA STATUS
. Se utilizzi una SQL versione My precedente alla 8.0.23, utilizza. SHOW SLAVE STATUS
Per ulteriori informazioni sulla risoluzione degli errori di replica con AmazonRDS, consultaRisoluzione di un problema relativo alla replica My SQL read.
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 cluster My SQL DB RDS for My DB instance. SQL
Nota
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 My SQL external ad AmazonRDS, richiama mysql.rds_start_replication
la replica di lettura per avviare il processo di replica dopo la chiamata mysql.rds_set_external_master
per creare la configurazione di replica. Per ulteriori informazioni, consulta Ripristino di un backup in un'istanza Amazon RDS for My SQL DB.
Per esportare i dati in un'istanza di My SQL external mysql.rds_stop_replication
su AmazonRDS, chiama mysql.rds_start_replication
e accendi la replica di lettura per controllare alcune azioni di replica, come l'eliminazione dei log binari. Per ulteriori informazioni, consulta Esportazione di dati da un'istanza My SQL DB utilizzando 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.
Avvia la replica da un replica nella posizione specificata del file di log binario.
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 mysql.rds_start_replication_until
procedura è disponibile nelle seguenti versioni di for My: RDS SQL
-
Le mie versioni SQL 8.0.26 e successive 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_stop_replication
Interrompe la replica da un'istanza My SQL DB.
Sintassi
CALL mysql.rds_stop_replication;
Note per l'utilizzo
La procedura mysql.rds_stop_replication
deve essere eseguita dall'utente master.
Se stai configurando la replica per importare dati da un'istanza di My SQL in esecuzione esterna ad AmazonRDS, mysql.rds_stop_replication
richiami la replica di lettura per interrompere il processo di replica una volta completata l'importazione. Per ulteriori informazioni, consulta Ripristino di un backup in un'istanza Amazon RDS for My SQL DB.
Se stai configurando la replica per esportare dati su un'istanza di My SQL esterna ad AmazonRDS, chiami mysql.rds_start_replication
e mysql.rds_stop_replication
accendi la replica di lettura per controllare alcune azioni di replica, come l'eliminazione dei log binari. Per ulteriori informazioni, consulta Esportazione di dati da un'istanza My SQL DB utilizzando la replica.
Puoi anche utilizzarlo mysql.rds_stop_replication
per interrompere la replica tra due istanze Amazon RDS DB. 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.