Importazione di dati in un database Amazon RDS for MySQL con tempi di inattività ridotti - Amazon Relational Database Service

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à.

Importazione di dati in un database Amazon RDS for MySQL con tempi di inattività ridotti

In alcuni casi, potrebbe essere necessario importare dati da un database MariaDB o MySQL esterno che supporti un'applicazione live in un'istanza DB RDS per MariaDB, un'istanza DB RDS per MySQL o un cluster DB RDS per MySQL Multi-AZ. Usa la seguente procedura per ridurre l'impatto sulla disponibilità delle applicazioni. Questa procedura può risultare utile anche quando utilizzi un database di dimensioni particolarmente elevate. Utilizzando questa procedura, è possibile ridurre i costi di importazione riducendo la quantità di dati trasmessi attraverso la rete a. AWS

In questa procedura, trasferisci una copia dei dati del tuo database su un' EC2 istanza Amazon e importi i dati in un nuovo database Amazon RDS. Utilizza quindi la replica per portare il database Amazon RDS up-to-date con la tua istanza esterna attiva, prima di reindirizzare l'applicazione al database Amazon RDS. Se l'istanza esterna è MariaDB 10.0.24 o versione successiva e l'istanza di destinazione è RDS for MariaDB, configura la replica di MariaDB in base agli identificatori di transazione globali (). GTIDs In alternativa, è possibile configurare la replica in base alle coordinate del log binario. Si consiglia la replica basata su GTID se supportata dal database esterno perché è un metodo più affidabile. Per ulteriori informazioni, consulta ID globali di transazione nella documentazione di MariaDB.

Nota

Se desideri importare dati in un'istanza DB RDS for MySQL e il tuo scenario li supporta, ti consigliamo di spostare i dati da e verso Amazon RDS utilizzando file di backup e Amazon S3. Per ulteriori informazioni, consulta Ripristino di un backup in un'istanza DB Amazon RDS for MySQL.

Il diagramma seguente mostra l'importazione di un database MySQL esterno in un database MySQL su Amazon RDS.

Flusso di lavoro che mostra l'importazione di un database MySQL esterno in un database MySQL su Amazon RDS.

Attività 1: creare una copia del database esistente

La prima fase per eseguire la migrazione di grandi quantità di dati in un database RDS per MariaDB o RDS per MySQL riducendo al minimo i tempi di inattività consiste nella creazione di una copia dei dati di origine.

Il diagramma seguente mostra la creazione di un backup del database MySQL.

Flusso di lavoro che mostra la creazione di un backup del database MySQL.

Puoi utilizzare l'utility mysqldump per creare un backup del database in formato SQL o come testo delimitato. In MariaDB 10.5, il client si chiama mariadb-dump. A partire da MariaDB 11.0.1, è necessario utilizzare invece di. mariadb-dump mysqldump Consigliamo di eseguire un test con ciascun formato, fuori dall'ambiente di produzione, per capire quale metodo consente di ridurre maggiormente il tempo di esecuzione di mysqldump.

Ti consigliamo inoltre di valutare mysqldump le prestazioni rispetto ai vantaggi offerti dall'utilizzo del formato di testo delimitato per il caricamento. Un backup eseguito con testo delimitato crea un file di testo separato da tabulazioni per ciascuna tabella eliminata. Per ridurre il tempo di importazione del database, puoi caricare questi file in parallelo con il comando LOAD DATA LOCAL INFILE. Per ulteriori informazioni, consulta Caricare i dati per MariadB o Caricare i dati per MySQL.

Prima di iniziare l'operazione di backup, devi impostare le opzioni di replica nel database MariaDB o MySQL da copiare in Amazon RDS. Le opzioni di replic includono l'attivazione del log binario e l'impostazione di un ID server univoco. L'impostazione di tali opzioni porta il server ad avviare la registrazione delle transazioni del database e lo prepara per diventare l'istanza di replica di origine in una fase successiva del processo.

Assicurati di essere a conoscenza dei seguenti suggerimenti e considerazioni:

  • Utilizzare l'opzione --single-transaction con mysqldump perché esegue il dump di uno stato coerente del database. Per garantire un file di dump valido, non eseguire istruzioni DDL (Data Definition Language) durante l'esecuzione di mysqldump. È possibile pianificare una finestra di manutenzione per queste operazioni.

  • Escludi i seguenti schemi dal file di dump:

    • sys

    • performance_schema

    • information_schema

    L'mariadb-dumputilità mysqldump and esclude questi schemi per impostazione predefinita.

  • Se devi migrare utenti e privilegi, prendi in considerazione l'utilizzo di uno strumento che genera il Data Control Language (DCL) per ricrearli, come l'utilità. pt-show-grants

Per impostare le opzioni di autenticazione

  1. Modificare il file my.cnf. Questo file si trova in genere in. /etc

    sudo vi /etc/my.cnf

    Aggiungere le opzioni log_bin e server_id alla sezione [mysqld]. L'opzione log_bin fornisce un identificatore di nome file per i file di log binari. L'opzione server_id fornisce un identificatore univoco per il server in relazioni master-replica.

    L'esempio seguente mostra la [mysqld] sezione aggiornata di un my.cnf file:

    [mysqld] log-bin=mysql-bin server-id=1

    Per ulteriori informazioni, vedere Impostazione della configurazione della sorgente di replica nella documentazione di MySQL.

  2. Per la replica con un cluster DB Multi-AZ, imposta il ENFORCE_GTID_CONSISTENCY parametro and su. GTID_MODE ON

    mysql> SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON;
    mysql> SET @@GLOBAL.GTID_MODE = ON;

    Queste impostazioni non sono necessarie per la replica con un'istanza database.

  3. Riavvia il servizio mysql.

    sudo service mysqld restart

Per creare una copia di backup del database esistente

  1. Crea un backup dei dati utilizzando l'mysqldumputilità o l'mariadb-dumputilità, specificando SQL o il formato di testo delimitato.

    Per MySQL 8.0.25 e versioni precedenti, --master-data=2 specificare di creare un file di backup che può essere utilizzato per avviare la replica tra server. Per MySQL 8.0.26 e versioni successive, --source-data=2 specificare di creare un file di backup che può essere utilizzato per avviare la replica tra server. Per ulteriori informazioni, consulta mysqldump — Un programma di backup del database nella documentazione di MySQL.

    Per migliorare le prestazioni e garantire l'integrità dei dati, utilizza le opzioni e per. --order-by-primary --single-transaction mysqldump

    Per evitare di includere il database del sistema MySQL nel backup, non utilizzare --all-databases l'opzione with. mysqldump Per ulteriori informazioni, vedere Creazione di uno snapshot di dati utilizzando mysqldump nella documentazione di MySQL.

    chmodUtilizzatelo, se necessario, per assicurarvi che la directory in cui viene creato il file di backup sia scrivibile.

    Importante

    In Windows, eseguire la finestra di comando come amministratore.

    • Per produrre un output SQL, utilizzate il seguente comando:

      In Linux, macOS, oppure Unix:

      sudo mysqldump \ --databases database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -r backup.sql \ -u local_user \ -ppassword
      Nota

      Come procedura consigliata per la sicurezza, specificate credenziali diverse da quelle mostrate nell'esempio.

      In Windows:

      mysqldump ^ --databases database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -r backup.sql ^ -u local_user ^ -ppassword
      Nota

      Come procedura consigliata in materia di sicurezza, specificate credenziali diverse da quelle mostrate nell'esempio.

    • Per generare un output con testo delimitato, utilizzate il seguente comando:

      In Linux, macOS, oppure Unix:

      sudo mysqldump \ --tab=target_directory \ --fields-terminated-by ',' \ --fields-enclosed-by '"' \ --lines-terminated-by 0x0d0a \ database_name \ --master-data=2 \ --single-transaction \ --order-by-primary \ -ppassword

      In Windows:

      mysqldump ^ --tab=target_directory ^ --fields-terminated-by "," ^ --fields-enclosed-by """ ^ --lines-terminated-by 0x0d0a ^ database_name ^ --master-data=2 ^ --single-transaction ^ --order-by-primary ^ -ppassword
      Nota

      Come procedura consigliata per la sicurezza, specificate credenziali diverse da quelle mostrate nell'esempio.

      Eventuali procedure, trigger, funzioni o eventi devono essere creati manualmente nel database Amazon RDS. Se il database da copiare dovesse contenere questi tipi di oggetti, dovrai escluderli al momento di eseguire mysqldump. A tale scopo, includete i seguenti argomenti nel comando: mysqldump

      • --routines=0

      • --triggers=0

      • --events=0

      Per MySQL 8.0.22 e versioni precedenti e per le versioni MariaDB, quando si mysqldump esegue e si specifica il formato di testo delimitato, viene restituito un commento. CHANGE MASTER TO Tale commento contiene il nome e la posizione del file log principale. Per MySQL 8.0.23 e versioni successive, quando si mysqldump esegue utilizzando il formato di testo delimitato, viene restituito un commento. CHANGE REPLICATION SOURCE TO Questo commento contiene il nome e la posizione del file di registro di origine. Se l'istanza esterna è qualcosa di diverso da MariadB 10.0.24 e versioni successive, o MySQL 8.0.23 e versioni successive, annota i valori per and. MASTER_LOG_FILE MASTER_LOG_POS Questi valori sono necessari durante l'impostazione della replica.

      Il seguente output viene restituito per le versioni di MariadB e per MySQL 8.0.22 e versioni precedenti:

      -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

      Il seguente output viene restituito per MySQL 8.0.23 e versioni successive:

      -- Position to start replication or point-in-time recovery from -- -- CHANGE SOURCE TO SOURCE_LOG_FILE='mysql-bin-changelog.000031', SOURCE_LOG_POS=107;

      Per MySQL 8.0.22 e versioni precedenti, se si utilizza il formato SQL, è possibile ottenere il nome e la posizione del file di registro principale nel commento CHANGE MASTER TO nel file di backup. Per MySQL 8.0.23 e versioni successive, se si utilizza il formato SQL, è possibile ottenere il nome e la posizione del file di registro di origine nel commento CHANGE REPLICATION SOURCE TO nel file di backup. Se l'istanza esterna è MariaDB, versione 10.0.24 o successiva, si può ottenere il GTID nella fase successiva.

  2. Se l'istanza esterna che stai utilizzando è MariaDB versione 10.0.24 o successiva, usa la replica basata su GTID. Esegui SHOW MASTER STATUS sull'istanza MariaDB esterna per ottenere il nome e la posizione del file di registro binario, quindi convertili in un GTID eseguendoli BINLOG_GTID_POS sull'istanza MariaDB esterna.

    SELECT BINLOG_GTID_POS('binary_log_file_name', binary_log_file_position);

    Nota il GTID restituito. È necessario il GTID per configurare la replica.

  3. Comprimi i dati copiati per ridurre la quantità di risorse di rete necessarie per copiare i dati nell'istanza database Amazon RDS. Annota la dimensione del file di backup. Queste informazioni sono necessarie per determinare le dimensioni di un' EC2 istanza Amazon da creare. Al termine, comprimere il file di backup con GZIP o un'altra utility simile.

    • Per comprimere l'output SQL, usa il seguente comando:

      gzip backup.sql
    • Per comprimere l'output con testo delimitato, utilizzate il seguente comando:

      tar -zcvf backup.tar.gz target_directory

Attività 2: creare un' EC2istanza Amazon e copiare il database compresso

La copia del file di backup compresso del database su EC2 un'istanza Amazon richiede meno risorse di rete rispetto alla copia diretta di dati non compressi tra istanze di database. Dopo che i tuoi dati sono in Amazon EC2, puoi copiarli direttamente da lì nel tuo database MariaDB o MySQL. Per risparmiare sul costo delle risorse di rete, l' EC2 istanza Amazon deve essere nella Regione AWS stessa istanza database di Amazon RDS. La presenza dell' EC2 istanza Amazon nello Regione AWS stesso database Amazon RDS riduce anche la latenza di rete durante l'importazione.

Il diagramma seguente mostra la copia del backup del database su un'istanza Amazon EC2 .

Flusso di lavoro che mostra la copia del backup del database su un' EC2istanza Amazon.

Per creare un' EC2 istanza Amazon e copiare i tuoi dati

  1. Nel luogo in Regione AWS cui prevedi di creare il database Amazon RDS, crea un cloud privato virtuale (VPC), un gruppo di sicurezza VPC e una sottorete VPC. Verificare che le regole in entrata del gruppo di sicurezza VPC consentano agli indirizzi IP necessari per l'applicazione di connettersi ad AWS. Puoi specificare un intervallo di indirizzi IP, ad esempio, o un 203.0.113.0/24 altro gruppo di sicurezza VPC. Puoi utilizzare la console Amazon VPC per creare e gestire VPCs sottoreti e gruppi di sicurezza. Per ulteriori informazioni, consulta la sezione Guida introduttiva ad Amazon VPC nella Guida per l'utente di Amazon Virtual Private Cloud.

  2. Apri la EC2 console Amazon e scegli Regione AWS di contenere sia l' EC2 istanza Amazon che il database Amazon RDS. Avvia un' EC2 istanza Amazon utilizzando il VPC, la sottorete e il gruppo di sicurezza che hai creato nella fase 1. Assicurarsi di selezionare un tipo di istanza con spazio di storage sufficiente per il file di backup del database decompresso. Per i dettagli sulle EC2 istanze Amazon, consulta la sezione Guida introduttiva ad Amazon EC2 nella Amazon Elastic Compute Cloud User Guide.

  3. Per connetterti al tuo database Amazon RDS dall' EC2 istanza Amazon, modifica il gruppo di sicurezza VPC. Aggiungi una regola in entrata che specifica l'indirizzo IP privato dell'istanza. EC2 Puoi trovare l'indirizzo IP privato nella scheda Dettagli del riquadro Istanza nella finestra della EC2 console. Per modificare il gruppo di sicurezza VPC e aggiungere una regola in entrata, scegli Gruppi di sicurezza nel riquadro di navigazione della EC2 console, scegli il tuo gruppo di sicurezza, quindi aggiungi una regola in entrata per MySQL o Aurora specificando l'indirizzo IP privato dell'istanza. EC2 Per informazioni su come aggiungere una regola in entrata a un gruppo di sicurezza VPC, consulta le regole del gruppo di sicurezza nella Guida per l'utente di Amazon Virtual Private Cloud.

  4. Copia il file di backup compresso del database dal sistema locale all' EC2 istanza Amazon. chmodUtilizzalo, se necessario, per assicurarti di disporre dell'autorizzazione di scrittura per la directory di destinazione dell' EC2 istanza Amazon. Il file può essere copiato con scp oppure con un client Secure Shell (SSH). Il comando seguente è un scp comando di esempio:

    scp -r -i key pair.pem backup.sql.gz ec2-user@EC2 DNS:/target_directory/backup.sql.gz
    Importante

    Quando copiate dati sensibili, assicuratevi di utilizzare un protocollo di trasferimento di rete sicuro.

  5. Connettiti alla tua EC2 istanza Amazon e installa gli aggiornamenti più recenti e gli strumenti del client MySQL utilizzando i seguenti comandi:

    sudo yum update -y sudo yum install mysql -y

    Per ulteriori informazioni, consulta Connect to your instance for Linux nella Amazon Elastic Compute Cloud User Guide.

    Importante

    Questo esempio installa il client MySQL su una Amazon Machine Image (AMI) per una distribuzione Amazon Linux. Questo esempio non installa il client MySQL su una distribuzione diversa, come Ubuntu o Red Hat Enterprise Linux. Per informazioni sull'installazione di MySQL, vedere Installazione di MySQL nella documentazione di MySQL.

  6. Mentre sei connesso alla tua EC2 istanza Amazon, decomprimi il file di backup del database. I seguenti comandi sono esempi.

    • Per decomprimere l'output SQL, utilizzare il comando seguente:

      gzip backup.sql.gz -d
    • Per decomprimere un output in testo delimitato, utilizzare il comando seguente:

      tar xzvf backup.tar.gz

Attività 3: crea un database MySQL o MariaDB e importa i dati dalla tua istanza Amazon EC2

Creando un'istanza DB RDS per MariaDB, un'istanza DB RDS per MySQL o un cluster DB RDS per MySQL Multi-AZ nella stessa istanza Amazon, puoi importare il file di backup Regione AWS del database da EC2 Amazon più velocemente che su Internet. EC2

Il diagramma seguente mostra l'importazione del backup da EC2 un'istanza Amazon in un database MySQL.

Flusso di lavoro che mostra l'importazione del backup dall' EC2 istanza nel database MySQL.

Per creare un database MariaDB o MySQL e importare i dati

  1. Determina la classe di istanza database e la quantità di spazio di archiviazione necessaria per supportare il carico di lavoro previsto per il database Amazon RDS. Come parte di questo processo, è necessario valutare la quantità di spazio richiesta e la capacità di elaborazione per le procedure di caricamento dati. Inoltre, decidi cosa è necessario per gestire il carico di lavoro di produzione. È possibile produrre una stima sulla base delle dimensioni e delle risorse del database MariaDB o MySQL di origine. Per ulteriori informazioni, consulta Classi di istanze DB .

  2. Crea un'istanza DB o un cluster DB Multi-AZ nel contenitore Regione AWS che contiene la tua EC2 istanza Amazon.

    Per creare un cluster DB RDS per MySQL Multi-AZ, segui le istruzioni riportate in. Creazione di un cluster DB Multi-AZ per Amazon RDS

    Per creare un'istanza DB RDS per MariaDB o RDS per MySQL, segui le istruzioni e utilizza le seguenti linee guida: Creazione di un'istanza database Amazon RDS

    • Specificate una versione del motore DB compatibile con l'istanza DB di origine.

      • Se l'istanza di origine è MySQL 5.5.x, l'istanza database Amazon RDS deve essere MySQL.

      • Se l'istanza di origine è MySQL 5.6.x o 5.7.x, l'istanza database Amazon RDS deve essere MySQL o MariaDB.

      • Se l'istanza di origine è MySQL 8.0.x, l'istanza database di Amazon RDS deve essere MySQL 8.0.x.

      • Se l'istanza di origine è MySQL 8.4.x, l'istanza database Amazon RDS deve essere MySQL 8.4.x.

      • Se l'istanza di origine è MariaDB 5.5 o versione successiva, l'istanza database Amazon RDS deve essere MariaDB.

    • Specificate lo stesso cloud privato virtuale (VPC) e lo stesso gruppo di sicurezza VPC della vostra istanza Amazon. EC2 Questo approccio garantisce che l' EC2 istanza Amazon e l'istanza Amazon RDS siano visibili l'una all'altra sulla rete. Assicurati che l'istanza database sia accessibile pubblicamente. Per configurare la replica con il database di origine come descritto nella sezione seguente, l'istanza DB deve essere accessibile al pubblico.

    • Non configurare più zone di disponibilità, retention dei backup o repliche di lettura fino a quando non è stato importato il backup del database. Al termine dell'importazione, puoi configurare le varie zone di disponibilità e la conservazione dei backup per l'istanza di produzione.

  3. Esamina le opzioni di configurazione predefinite per il database Amazon RDS. Se il gruppo di parametri predefinito per il database non include le opzioni di configurazione desiderate, cercane uno che le contenga oppure crea un gruppo di parametri nuovo. Per ulteriori informazioni sulla creazione di un gruppo di parametri, vedereGruppi di parametri per RDS.

  4. Connettiti al nuovo database Amazon RDS come utente master. Crea gli utenti necessari per supportare gli amministratori, le applicazioni e i servizi che devono accedere all'istanza DB. Il nome host per il database Amazon RDS è il valore Endpoint per questa istanza DB senza il numero di porta, ad esempio. mysampledb.123456789012.us-west-2.rds.amazonaws.com Puoi trovare il valore dell'endpoint nei dettagli del database nella console Amazon RDS.

  5. Connect alla tua EC2 istanza Amazon. Per ulteriori informazioni, consulta Connect to your instance for Linux nella Amazon Elastic Compute Cloud User Guide.

  6. Connettiti al tuo database Amazon RDS come host remoto dalla tua EC2 istanza Amazon utilizzando il mysql comando. Il comando seguente è un esempio:

    mysql -h host_name -P 3306 -u db_master_user -p

    host_nameÈ l'endpoint del database Amazon RDS.

  7. Al mysql prompt, esegui il source comando e passagli il nome del file di dump del database. Questo comando carica i dati nell'istanza database di Amazon RDS.

    • Per il formato SQL, usa il seguente comando:

      mysql> source backup.sql;
    • Per il formato di testo delimitato, crea innanzitutto il database, se non è il database predefinito creato durante la configurazione del database Amazon RDS.

      mysql> create database database_name; mysql> use database_name;

      Quindi creare le tabelle.

      mysql> source table1.sql mysql> source table2.sql etc...

      Infine, importare i dati.

      mysql> LOAD DATA LOCAL INFILE 'table1.txt' INTO TABLE table1 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; mysql> LOAD DATA LOCAL INFILE 'table2.txt' INTO TABLE table2 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '0x0d0a'; etc...

      Per migliorare le prestazioni, puoi eseguire queste operazioni in parallelo da più connessioni, in modo che tutte le tabelle vengano create e caricate contemporaneamente.

      Nota

      Se hai utilizzato opzioni di formattazione dei dati mysqldump quando hai inizialmente scaricato la tabella, assicurati di utilizzare le stesse opzioni per garantire una corretta interpretazione del contenuto del file LOAD DATA LOCAL INFILE di dati.

  8. Eseguite una semplice SELECT query su una o due tabelle del database importato per verificare che l'importazione sia avvenuta correttamente.

Se non hai più bisogno dell' EC2 istanza Amazon utilizzata in questa procedura, interrompi l' EC2istanza per ridurre l'utilizzo AWS delle risorse. Per terminare un' EC2 istanza, consulta Terminare un'istanza nella Amazon Elastic Compute Cloud User Guide.

Attività 4: replica dei dati dal database esterno al nuovo database Amazon RDS

È probabile che il database di origine sia stato aggiornato durante la copia e il trasferimento dei dati nel database MariaDB o MySQL. Pertanto, è possibile utilizzare la replica per portare il database copiato up-to-date con il database di origine.

Flusso di lavoro che mostra la replica dei dati dal database MySQL esterno al database su Amazon RDS.

Le autorizzazioni necessarie per avviare la replica su un database Amazon RDS sono limitate e non sono disponibili per l'utente master di Amazon RDS. Per questo motivo, utilizza la stored procedure Amazon RDS appropriata per la versione principale del motore:

Per avviare la replica

Nel Task 1, quando si impostano le opzioni di replica, si attiva la registrazione binaria e si imposta un ID server univoco per il database di origine. Ora puoi impostare il database Amazon RDS come replica, utilizzando il database live come istanza di replica di origine.

  1. Nella console Amazon RDS, aggiungi l'indirizzo IP del server che ospita il database di origine al gruppo di sicurezza VPC per il database Amazon RDS. Per ulteriori informazioni sulla configurazione di un gruppo di sicurezza VPC, consulta Configura le regole del gruppo di sicurezza nella Guida per l'utente di Amazon Virtual Private Cloud.

    Potrebbe anche essere necessario configurare la rete locale per consentire le connessioni dall'indirizzo IP del database Amazon RDS in modo che possa comunicare con l'istanza di origine. Per trovare l'indirizzo IP del database Amazon RDS, usa il host comando:

    host host_name

    host_nameÈ il nome DNS dell'endpoint del database Amazon RDS, ad esempio. myinstance.123456789012.us-east-1.rds.amazonaws.com Puoi trovare il valore dell'endpoint nei dettagli dell'istanza DB nella console Amazon RDS.

  2. Utilizzando il client scelto, eseguire la connessione all'istanza di origine e creare un utente da utilizzare per la replica. Questo account viene utilizzato unicamente per la replica e deve essere limitato al dominio personale per aumentare la sicurezza. Il comando seguente è un esempio:

    CREATE USER 'repl_user'@'mydomain.com' IDENTIFIED BY 'password';
    Nota

    Specifica credenziali diverse dai prompt mostrati qui come best practice per la sicurezza.

  3. Per l'istanza di origine, concedere i privilegi REPLICATION CLIENT e REPLICATION SLAVE all'utente di replica. Per concedere ad esempio i privilegi REPLICATION CLIENT e REPLICATION 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';
  4. Se hai usato il formato SQL per creare il tuo file di backup e l'istanza esterna non è MariaDB 10.0.24 o versioni successive, guarda il contenuto di quel file eseguendo il seguente comando:

    cat backup.sql

    Il file include un commento CHANGE MASTER TO che contiene il nome e la posizione del file di log principale. Il commento si trova nel file di backup, se è stata utilizzata l'opzione --master-data con mysqldump. Prendere nota dei valori per MASTER_LOG_FILE e MASTER_LOG_POS.

    -- -- Position to start replication or point-in-time recovery from -- -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin-changelog.000031', MASTER_LOG_POS=107;

    Se hai utilizzato il formato di testo delimitato per creare il tuo file di backup e l'istanza esterna non è MariaDB 10.0.24 o versioni successive, dovresti già avere le coordinate di log binarie dal Passaggio 1 della procedura Per creare una copia di backup del database esistente in Task 1.

    Se l'istanza esterna è MariaDB 10.0.24 o superiore, dovresti già disporre del GTID da cui avviare la replica dal Passaggio 2 della procedura Per creare una copia di backup della procedura di database esistente nell'Attività 1.

  5. Definisci il database Amazon RDS come replica. Se l'istanza esterna non è MariaDB 10.0.24 o versioni successive, connettiti al database Amazon RDS come utente principale e identifica il database di origine come istanza di replica di origine utilizzando la procedura memorizzata Amazon RDS appropriata:

    Se disponi di un file di backup in formato SQL, utilizza il nome del file di log principale e la posizione del log principale determinati nel passaggio 4. Se è stato utilizzato il formato di testo delimitato, utilizzare il nome e la posizione determinati durante la creazione dei file di backup. I seguenti comandi sono esempi:

    MySQL 8.4 e versioni successive

    CALL mysql.rds_set_external_source ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);

    MariadB e MySQL 8.0 e versioni precedenti

    CALL mysql.rds_set_external_master ('myserver.mydomain.com', 3306, 'repl_user', 'password', 'mysql-bin-changelog.000031', 107, 1);
    Nota

    Specifica credenziali diverse dai prompt mostrati qui come best practice per la sicurezza.

    Se l'istanza esterna è MariaDB 10.0.24 o versioni successive, connettiti al database Amazon RDS come utente master e identifica il database di origine come istanza di replica di origine usando il comando mysql.rds_set_external_master_gtid. Utilizza il GTID che hai determinato nel passaggio 2 della procedura Per creare una copia di backup del database esistente in Task 1. Il comando seguente è un esempio:

    CALL mysql.rds_set_external_master_gtid ('source_server_ip_address', 3306, 'ReplicationUser', 'password', 'GTID', 1);

    source_server_ip_address è l' indirizzo IP dell'istanza di replica di origine. Un indirizzo DNS EC2 privato non è attualmente supportato.

    Nota

    Specifica credenziali diverse dai prompt mostrati qui come best practice per la sicurezza.

  6. Nel database Amazon RDS, per avviare la replica, esegui il comando seguente: mysql.rds_start_replication

    CALL mysql.rds_start_replication;
  7. Nel database Amazon RDS, per determinare quando la replica è aggiornata con l'istanza di replica di origine, esegui il comando SHOW REPLICA STATUS. I risultati del comando SHOW REPLICA STATUS includono il campo Seconds_Behind_Master. Quando il Seconds_Behind_Master campo restituisce 0, la replica è aggiornata con l'istanza di replica di origine.

    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 un'istanza DB MariaDB 10.5, 10.6 o 10.11, esegui la mysql.rds_replica_status stored procedure anziché il comando MySQL.

  8. Una volta aggiornato il database Amazon RDS, attiva i backup automatici per ripristinare il database, se necessario. Puoi attivare o modificare i backup automatici per il tuo database Amazon RDS utilizzando la console Amazon RDS. Per ulteriori informazioni, consulta Introduzione ai backup.

Attività 5: reindirizza l'applicazione live all'istanza Amazon RDS

Dopo che il database MariaDB o MySQL è aggiornato con l'istanza di replica di origine, ora puoi aggiornare la tua applicazione live per utilizzare l'istanza Amazon RDS.

Flusso di lavoro che mostra l'interruzione della replica e l'indirizzamento dell'applicazione live al database su Amazon RDS.

Per reindirizzare l'applicazione live al database MariaDB o MySQL e arrestare la replica

  1. Per aggiungere il gruppo di sicurezza VPC per il database Amazon RDS, immetti l'indirizzo IP del server che ospita l'applicazione. Per ulteriori informazioni sulla modifica di un gruppo di sicurezza VPC, consulta Configura le regole del gruppo di sicurezza nella Guida per l'utente di Amazon Virtual Private Cloud.

  2. Verifica che il Seconds_Behind_Master campo nei risultati del comando SHOW REPLICA STATUS sia 0, il che indica che la replica è aggiornata con l'istanza di replica di origine.

    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 un'istanza database MariaDB 10.5, 10.6 o 10.11, esegui la procedura mysql.rds_replica_status anziché il comando MySQL.

  3. Chiudere tutte le connessioni all'origine quando le loro transazioni sono complete.

  4. Aggiorna l'applicazione per usare il database Amazon RDS. In genere, l'aggiornamento prevede la modifica delle impostazioni di connessione per identificare il nome host e la porta del database Amazon RDS, l'account utente e la password per eseguire la connessione e il database da utilizzare.

  5. Effettua la connessione all'istanza database.

    Per un cluster database multi-AZ, connettiti all'istanza database di scrittura.

  6. Interrompi la replica per l'istanza Amazon RDS utilizzando il seguente comando: mysql.rds_stop_replication

    CALL mysql.rds_stop_replication;
  7. Esegui la procedura memorizzata Amazon RDS appropriata sul tuo database Amazon RDS per reimpostare la configurazione di replica in modo che questa istanza non venga più identificata come replica.

    MySQL 8.4 e versioni successive

    CALL mysql.rds_reset_external_source;

    MariadB e MySQL 8.0 e versioni precedenti

    CALL mysql.rds_reset_external_master;
  8. Attivare le caratteristiche aggiuntive di Amazon RDS, quali il supporto Multi-AZ e le repliche di lettura. Per ulteriori informazioni, consultare Configurazione e gestione di una distribuzione Multi-AZ per Amazon RDS e Uso delle repliche di lettura dell'istanza database.