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 della replica della posizione del file di log binario con un'istanza di origine esterna.
Puoi impostare la replica fra un'istanza database RDS for MySQL o MariaDB e un’istanza MySQL o MariaDB che è esterna ad Amazon RDS usando la replica del file di log binario.
Argomenti
Prima di iniziare
È possibile configurare la replica utilizzando la posizione del file di log binario delle transazioni replicate.
Le autorizzazioni necessarie per avviare la replica in un'istanza database Amazon RDS sono limitate e non disponibili per l'utente master Amazon RDS. Per questo motivo, assicurati di usare i comandi e mysql.rds_start_replication in Amazon RDS per configurare la replica tra il database live e il database Amazon RDS.
Per impostare il formato di logging binario per un database MySQL o MariaDB, aggiornare il parametro binlog_format
. Se l'istanza database utilizza il gruppo di parametri di istanza database predefinito, crea un nuovo gruppo di parametri di istanza database per modificare le impostazioni binlog_format
. Ti consigliamo di mantenere le impostazioni predefinite per binlog_format
, che è MIXED
. Tuttavia, puoi anche impostare binlog_format
su ROW
o STATEMENT
se hai bisogno di un formato di registro binario (binlog) specifico. Riavvia l'istanza database affinché venga applicata la modifica.
Per ulteriori informazioni sull'impostazione del parametro binlog_format
, consulta Configurazione di MySQL RDS per la registrazione binaria MySQL Per ulteriori informazioni sulle implicazioni dei vari tipi di replica MySQL, consulta la pagina relativa a vantaggi e svantaggi della replica basata su istruzioni e basata su riga
Nota
A partire dalla versione 8.0.36 di RDS per MySQL, Amazon RDS non replica il database. mysql
Pertanto, se ci sono utenti nel database esterno di cui hai bisogno nella replica di Amazon RDS, assicurati di crearli manualmente.
Configurazione della replica della posizione del file di log binario con un'istanza di origine esterna.
Seguire queste linee guida quando si imposta un'istanza di origine esterna e una replica su Amazon RDS:
Monitorare gli eventi di failover per l'istanza database di Amazon RDS che rappresenta la replica. In caso di failover, l'istanza database che rappresenta la replica potrebbe essere ricreata in un nuovo host con un indirizzo di rete diverso. Per informazioni su come monitorare gli eventi di failover, consulta Utilizzo delle notifiche di RDS eventi di Amazon.
Conservare i binlog sull'istanza di origine finché non si ha la conferma che siano stati applicati alla replica. Conservando questi file, si è certi di poter ripristinare l'istanza di origine in caso di errori.
Attivare i backup automatici sull'istanza database di Amazon RDS. L'attivazione dei backup automatici assicura il ripristino della replica a un punto temporale specifico nel caso fosse necessario risincronizzare l'istanza di origine e la replica. Per informazioni su backup e point-in-time ripristino, consulta. Backup, ripristino ed esportazione dei dati
Per configurare la replica della posizione del file di log binario con un'istanza di origine esterna
-
Rendere l'istanza MySQL o MariaDB di origine di sola lettura.
mysql> FLUSH TABLES WITH READ LOCK; mysql> SET GLOBAL read_only = ON;
-
Eseguire il comando
SHOW MASTER STATUS
nell'istanza database di MySQL o MariaDB di origine per determinare la posizione del binlog.Viene restituito un output simile all'esempio seguente.
File Position ------------------------------------ mysql-bin-changelog.000031 107 ------------------------------------
-
Copiare il database dall'istanza esterna all'istanza database Amazon RDS usando
mysqldump
. Per database di dimensioni particolarmente elevate, è possibile utilizzare la procedura in Importazione dei dati in un database Amazon RDS MariaDB o MySQL con tempi di inattività ridotti.Per LinuxmacOS, oUnix:
mysqldump --databases
database_name
\ --single-transaction \ --compress \ --order-by-primary \ -ulocal_user
\ -plocal_password
| mysql \ --host=hostname \ --port=3306 \ -uRDS_user_name
\ -pRDS_password
Per Windows:
mysqldump --databases
database_name
^ --single-transaction ^ --compress ^ --order-by-primary ^ -ulocal_user
^ -plocal_password
| mysql ^ --host=hostname ^ --port=3306 ^ -uRDS_user_name
^ -pRDS_password
Nota
Assicurarsi che non siano presenti spazi tra l'opzione
-p
e la password immessa.Utilizzare le opzioni
--host
,--user (-u)
,--port
e-p
nel comandomysql
per specificare il nome host, il nome utente, la porta e la password per la connessione all'istanza database Amazon RDS. Il nome host è il nome DNS (Domain Name Service) dell'endpoint dell'istanza database di Amazon RDS, ad esempiomyinstance.123456789012.us-east-1.rds.amazonaws.com
. È possibile trovare il valore dell'endpoint nei dettagli dell'istanza nella AWS Management Console. -
Rendere nuovamente scrivibile l'istanza MySQL o MariaDB di origine.
mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES;
Per ulteriori informazioni sulla creazione di backup da utilizzare con la replica, vedere la documentazione di MySQL
. -
Nel AWS Management Console, aggiungi l'indirizzo IP del server che ospita il database esterno al gruppo di sicurezza del cloud privato virtuale (VPC) per l'istanza database Amazon RDS. Per ulteriori informazioni sulla modifica di un gruppo di sicurezza VPC, consulta Gruppi di sicurezza per il VPC nella Guida per l'utente di Amazon Virtual Private Cloud.
L'indirizzo IP può cambiare quando vengono soddisfatte le seguenti condizioni:
-
Si sta utilizzando un indirizzo IP pubblico per la comunicazione tra l'istanza di origine esterna e l'istanza database.
-
L'istanza di origine esterna è stata arrestata e riavviata.
Se queste condizioni vengono soddisfatte, verificare l'indirizzo IP prima di aggiungerlo.
Potrebbe anche essere necessario configurare la rete locale per consentire le connessioni dall'indirizzo IP dell'istanza database di Amazon RDS, affinché possa comunicare con l'istanza MySQL o MariaDB esterna. Per individuare l'indirizzo IP dell'istanza database di Amazon RDS, utilizzare il comando
host
.host
db_instance_endpoint
Il nome host è il nome DNS dall'endpoint dell'istanza database di Amazon RDS.
-
-
Utilizzando il client scelto, eseguire la connessione all'istanza esterna e creare un utente da utilizzare per la replica. Utilizza questo account unicamente per la replica e limitalo al dominio personale per aumentare la sicurezza. Di seguito è riportato un esempio.
CREATE USER '
repl_user'@'mydomain.com
' IDENTIFIED BY 'password
';Nota
Specifica una password diversa dal prompt mostrato qui come best practice per la sicurezza.
-
Per l'istanza esterna, concedere i privilegi
REPLICATION CLIENT
eREPLICATION SLAVE
all'utente della replica. Per concedere ad esempio i privilegiREPLICATION CLIENT
eREPLICATION SLAVE
su tutti i database per l'utente "repl_user
" del proprio dominio, eseguire questo comando.GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '
repl_user'@'mydomain.com
'; -
Definire l'istanza database di Amazon RDS come replica. A tale scopo, connettersi innanzitutto all'istanza database di Amazon RDS come l'utente master. Quindi, identificare il database MySQL o MariaDB esterno come istanza di origine utilizzando il comando . Utilizzare il nome e la posizione del file di log master recuperati nella fase 2. Di seguito è riportato un esempio.
CALL mysql.rds_set_external_master ('
mymasterserver.mydomain.com
', 3306, 'repl_user
', 'password
', 'mysql-bin-changelog.000031
',107
,0
);Nota
In RDS for MySQL puoi scegliere di usare la replica ritardata eseguendo invece la procedura archiviata mysql.rds_set_external_master_with_delay. Su RDS for MySQL, una ragione per utilizzare la replica ritardata è attuare il ripristino di emergenza con la procedura archiviata . Attualmente RDS for MariaDB supporta la replica ritardata ma non supporta la procedura
mysql.rds_start_replication_until
. -
Nell'istanza database di Amazon RDS eseguire il comando mysql.rds_start_replication per avviare la replica.
CALL mysql.rds_start_replication;