Ripristino di un backup in un'istanza database MySQL - 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à.

Ripristino di un backup in un'istanza database MySQL

Amazon RDS supporta l'importazione di database MySQL utilizzando file di backup. Puoi creare un backup del database locale, archiviarlo in Amazon S3 e quindi ripristinare il file di backup in una nuova istanza database Amazon RDS che esegue MySQL.

Lo scenario descritto in questa sezione ripristina un backup di un database locale. Puoi utilizzare questa tecnica per database in altre sedi, come Amazon EC2 o servizi non AWS cloud, purché il database sia accessibile.

Lo scenario supportato è riportato nel seguente diagramma.

MySQL - Importazione di file di backup dall'architettura S3

L'importazione di file di backup da Amazon S3 è supportata per MySQL in tutte le Regioni AWS.

Ti consigliamo di importare il database in Amazon RDS utilizzando i file di backup se è possibile che il database sia offline quando il file di backup viene creato, copiato e ripristinato. Se il database locale non può essere offline, puoi usare la replica del binlog per aggiornare il database dopo averne eseguito la migrazione in Amazon RDS tramite Amazon S3, come spiegato in questo argomento. Per ulteriori informazioni, consulta Configurazione della replica della posizione del file di log binario con un'istanza di origine esterna.. Per eseguire la migrazione del database ad Amazon RDS. puoi usare anche la AWS Database Migration Service . Per ulteriori informazioni, consulta Cos'è AWS Database Migration Service?

Limitazioni e consigli per l'importazione di file di backup da Amazon S3 ad Amazon RDS

Di seguito vengono riportate alcune limitazioni e consigli per l'importazione di file di backup da Amazon S3:

  • Puoi importare i dati solo in una nuova istanza database, non in una istanza database esistente.

  • È necessario utilizzare Percona XtraBackup per creare il backup del database locale.

  • Non puoi importare dati da un'esportazione di snapshot DB in Amazon S3.

  • Non puoi eseguire la migrazione da un database di origine con tabelle definite all'esterno della directory dei dati MySQL predefinita.

  • Percona Server for MySQL non è supportato come database di origine perché può compression_dictionary* contenere tabelle nello schema. mysql

  • È necessario importare i dati nella versione secondaria predefinita della versione principale di MySQL nella Regione AWS. Ad esempio, se la versione principale è MySQL 8.0 e la versione secondaria predefinita per la Regione AWS è 8.0.28, è necessario importare i dati in un'istanza database MySQL versione 8.0.28. È possibile aggiornare l'istanza DB dopo l'importazione. Per informazioni sulla determinazione della versione secondaria predefinita, vedere Versioni di MySQL in Amazon RDS.

  • La migrazione alle versioni precedenti non è supportata per le versioni maggiori e minori. Ad esempio, non puoi eseguire la migrazione dalla versione 8.0 alla versione 5.7 e non puoi eseguire la migrazione dalla versione 8.0.32 alla versione 8.0.31.

  • Non puoi importare un database MySQL 5.5 o 5.6.

  • Non è possibile importare un database MySQL locale da una versione principale a un'altra. Ad esempio, non è possibile importare un database MySQL 5.7 in un database MySQL 8.0. Puoi aggiornare l'istanza database al termine dell'importazione.

  • Non puoi eseguire il ripristino da un database di origine crittografato, ma puoi eseguire il ripristino in un'istanza database di Amazon RDS crittografata.

  • Non è possibile ripristinare da un backup crittografato nel bucket Amazon S3.

  • Non puoi eseguire il ripristino da un bucket Amazon S3 in una Regione AWS diversa da quella dell'istanza database di Amazon RDS.

  • L'importazione da Amazon S3 non è supportata sulla classe istanza database db.t2.micro. Tuttavia, puoi eseguire il ripristino in una classe istanza database diversa e modificare la classe di istanza in seguito. Per ulteriori informazioni sulle classi di istanza, consulta Specifiche hardware per le classi di istanza database .

  • Amazon S3 limita la dimensione del file caricato in un bucket Amazon S3 a 5 TB. Se un file di backup supera i 5 TB, devi dividerlo in file più piccoli.

  • Quando ripristini il database, il backup viene copiato e quindi estratto sull'istanza database. Di conseguenza, il provisioning dello spazio di storage per l'istanza database è uguale o superiore alla somma delle dimensioni del backup, più la dimensione del database originale su disco.

  • Amazon RDS limita il numero di file caricati in un bucket Amazon S3 a 1 milione. Se i dati di backup del database, inclusi tutti i backup completi e incrementali, superano 1 milione di file, utilizza un file Gzip (.gz), tar (.tar.gz) o Percona xbstream (.xbstream) per memorizzare i file dei backup completi e incrementali nel bucket Amazon S3. Percona XtraBackup 8.0 supporta solo Percona xbstream per la compressione.

  • Gli account utente non vengono importati automaticamente. Salva gli account utente dal database di origine e aggiungili nella nuova istanza database in n seguito.

  • Le funzioni non vengono importate automaticamente. Salva le funzioni dal database di origine e aggiungile nella nuova istanza database in seguito.

  • Le stored procedure non vengono importate automaticamente. Salva le stored procedure dal database di origine e aggiungile nella nuova istanza database in seguito.

  • Le informazioni sul fuso orario non vengono importate automaticamente. Registra le informazioni sul fuso orario per il database di origine e imposta il fuso orario della nuova istanza database in seguito. Per ulteriori informazioni, consulta Fuso orario locale per le istanze database MySQL.

  • Il parametro innodb_data_file_path deve essere configurato con un solo file di dati che utilizza il nome di file di dati predefinito "ibdata1:12M:autoextend". I database con due file di dati o con un file di dati con un nome diverso non possono essere migrati utilizzando questo metodo.

    Di seguito sono riportati esempi di nomi di file che non sono permessi: "innodb_data_file_path=ibdata1:50M; ibdata2:50M:autoextend" e "innodb_data_file_path=ibdata01:50M:autoextend".

  • La dimensione massima del database ripristinato è la dimensione massima del database supportata meno la dimensione del backup. Pertanto, se la dimensione massima del database supportata è 64 TiB e la dimensione del backup è 30 TiB, la dimensione massima del database ripristinato è 34 TiB, come nell'esempio seguente:

    64 TiB - 30 TiB = 34 TiB

    Per informazioni sulle dimensioni massime del database supportate da Amazon RDS for MySQL, vedere Storage SSD per scopi generici e Storage SSD Provisioned IOPS.

Panoramica della configurazione per l'importazione di file di backup da Amazon S3 ad Amazon RDS

Di seguito sono elencati i componenti che devi configurare per importare file di backup da Amazon S3 ad Amazon RDS:

  • Un bucket Amazon S3 per archiviare i file di backup.

  • Un backup del database locale creato da Percona. XtraBackup

  • Un ruolo AWS Identity and Access Management (IAM) per consentire ad Amazon RDS di accedere al bucket.

Se disponi già di un bucket Amazon S3, puoi utilizzarlo. Se non hai già un bucket Amazon S3, puoi creane uno nuovo. Se intendi creare un nuovo bucket, consulta Creazione di un bucket.

Usa lo XtraBackup strumento Percona per creare il tuo backup. Per ulteriori informazioni, consulta Creazione del backup di database.

Se disponi già di un ruolo IAM, puoi utilizzarlo. Se non hai già un ruolo IAM, puoi creane uno nuovo manualmente. In alternativa, puoi scegliere la creazione automatica di nuovo ruolo IAM nel tuo account tramite la procedura guidata quando ripristini il database usando la AWS Management Console. Se vuoi creare un nuovo ruolo IAM manualmente o collegare policy di trust e di autorizzazioni a un ruolo IAM esistente, consulta Creazione di un ruolo IAM manualmente. Se vuoi che venga creato automaticamente un nuovo ruolo IAM, segui la procedura in Console.

Creazione del backup di database

Usa il XtraBackup software Percona per creare il tuo backup. Ti consigliamo di utilizzare l'ultima versione di XtraBackup Percona. Puoi installare Percona XtraBackup da Download Percona. XtraBackup

avvertimento

Durante la creazione di un backup del database, XtraBackup potrebbe salvare le credenziali nel file xtrabackup_info. Assicurati di esaminare quel file in modo che l'impostazione tool_command non contenga informazioni sensibili.

Nota

Per la migrazione a MySQL 8.0, è necessario utilizzare Percona 8.0. XtraBackup Percona XtraBackup 8.0.12 e versioni successive supportano la migrazione di tutte le versioni di MySQL. Se stai migrando a RDS for MySQL 8.0.20 o versioni successive, devi usare Percona 8.0.12 o versioni successive. XtraBackup

Per le migrazioni MySQL 5.7, puoi anche usare Percona 2.4. XtraBackup Per le migrazioni di versioni precedenti di MySQL, puoi anche usare XtraBackup Percona 2.3 o 2.4.

È possibile creare un backup completo dei file del database MySQL utilizzando Percona. XtraBackup In alternativa, se utilizzi già Percona XtraBackup per eseguire il backup dei file del database MySQL, puoi caricare le directory e i file di backup completi e incrementali esistenti.

Per ulteriori informazioni sul backup del database con Percona XtraBackup, consulta Percona XtraBackup - documentazione e The xtrabackup binary sul sito Web di Percona.

Creazione di un backup completo con Percona XtraBackup

Per creare un backup completo dei file del database MySQL che possono essere ripristinati da Amazon S3, usa l'utilità XtraBackup Percona xtrabackup () per eseguire il backup del database.

Ad esempio, il comando seguente consente di creare un backup di un database MySQL e memorizzare i file nella cartella /on-premises/s3-restore/backup.

xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>

Se desideri comprimere il backup in un singolo file (che può essere diviso in seguito, se necessario), puoi salvare il backup in uno dei seguenti formati:

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

Nota

Percona XtraBackup 8.0 supporta solo Percona xbstream per la compressione.

Il comando seguente consente di creare un backup del database MySQL diviso in più file Gzip.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar.gz

Il comando seguente consente di creare un backup del database MySQL diviso in più file tar.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar

Il comando seguente consente di creare un backup del database MySQL diviso in più file xbstream.

xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.xbstream
Nota

Se viene visualizzato il seguente errore, potrebbe essere causato dalla combinazione di formati di file nel comando:

ERROR:/bin/tar: This does not look like a tar archive

Utilizzo di backup incrementali con Percona XtraBackup

Se utilizzi già Percona XtraBackup per eseguire backup completi e incrementali dei file del tuo database MySQL, non è necessario creare un backup completo e caricare i file di backup su Amazon S3. Puoi, invece, risparmiare tempo copiando le directory e i file di backup esistenti nel bucket Amazon S3. Per ulteriori informazioni sulla creazione di backup incrementali con Percona, consulta Backup incrementale. XtraBackup

Durante la copia dei file del backup completo e incrementale in un bucket Amazon S3, devi copiare in modo ricorsivo i contenuti della directory di base. Questi contenuti includono il backup completo e anche tutte le directory e i file del backup incrementale. Questa copia deve mantenere la struttura di directory nel bucket Amazon S3. Amazon RDS esegue l'iterazione di tutti i file e le directory. Amazon RDS usa il file xtrabackup-checkpoints incluso con ogni backup incrementale per identificare la directory di base e ordinare i backup incrementali in base all'intervallo dei numeri di sequenza log (LSN).

Considerazioni sul backup per Percona XtraBackup

Amazon RDS consuma i file di backup in base al nome del file. Assegnare un nome ai file di backup con l'estensione file appropriata in base al formato, —ad esempio, .xbstream per i file archiviati tramite il formato xbstream di Percona.

Amazon RDS consuma i file di backup in ordine alfabetico e anche in ordine numerico naturale. Utilizza l'opzione split quando invii il comando xtrabackup per assicurarti che i file di backup vengano scritti e denominati nell'ordine corretto.

Amazon RDS non supporta backup parziali creati con Percona. XtraBackup Non puoi usare le opzioni seguenti per creare un backup parziale quando esegui il backup dei file di origine per il database: --tables, --tables-exclude, --tables-file, --databases, --databases-exclude o --databases-file.

Amazon RDS supporta backup incrementali creati con Percona. XtraBackup Per ulteriori informazioni sulla creazione di backup incrementali utilizzando Percona, consulta Backup incrementale. XtraBackup

Creazione di un ruolo IAM manualmente

Se non hai già un ruolo IAM, puoi creane uno nuovo manualmente. Tuttavia, se ripristini il database utilizzando il AWS Management Console, ti consigliamo di seguire la procedura illustrata Console e di scegliere che RDS crei questo nuovo ruolo IAM per te.

Per creare manualmente un nuovo ruolo IAM per importare il database da Amazon S3, crea un ruolo per delegare le autorizzazioni da Amazon RDS al bucket Amazon S3. Quando crei un ruolo IAM, vengono collegate le policy di attendibilità e autorizzazione. Per importare i file di backup da Amazon S3, utilizza politiche di fiducia e autorizzazioni simili agli esempi seguenti. Per ulteriori informazioni sulla creazione del ruolo, consulta Creazione di un ruolo per delegare le autorizzazioni a un servizio. AWS

Le policy di attendibilità e autorizzazione richiedono che venga fornito un Amazon Resource Name (ARN). Per ulteriori informazioni sulla formattazione ARN, consulta Amazon Resource Names (ARNs) e service namespace. AWS

Esempio politica di fiducia per l'importazione da Amazon S3
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }
Esempio politica di autorizzazione per l'importazione da Amazon S3 — autorizzazioni utente IAM

Nell'esempio seguente, sostituisci iam_user_id con il tuo valore.

{ "Version":"2012-10-17", "Statement": [ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::iam_user_id:role/S3Access" } ] }
Esempio politica delle autorizzazioni per l'importazione da Amazon S3 — autorizzazioni di ruolo

Nell'esempio seguente, sostituisci DOC-EXAMPLE-BUCKET e il prefisso con i tuoi valori.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix*" }, { // If your bucket is encrypted, include the following permission. This permission allows decryption of your AWS KMS key. "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:region:customer_id:key/key_id*" ] } ] }
Nota

Se includi un prefisso del nome file, aggiungi l'asterisco (*) dopo il prefisso. Se non intendi specificare un prefisso, specifica solo un asterisco.

Importazione di dati da Amazon S3 in una nuova istanza database MySQL

Puoi importare dati da Amazon S3 in una nuova istanza DB MySQL utilizzando l' AWS Management Console API, o RDS. AWS CLI

Per importare dati da Amazon S3 in una nuova istanza database MySQL
  1. Accedi AWS Management Console e apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/.

  2. Nell'angolo in alto a destra della console Amazon RDS, scegli l'istanza database Regione AWS in cui creare la tua istanza DB. Scegli lo Regione AWS stesso bucket Amazon S3 che contiene il backup del database.

  3. Nel riquadro di navigazione, scegliere Databases (Database).

  4. Seleziona Ripristina da S3.

    Sarà visualizzata la pagina Crea database ripristinando da S3 .

    La pagina in cui specifichi i dettagli per il ripristino di un'istanza DB da S3.
  5. In Destinazione S3:

    1. Seleziona il bucket S3 che contiene il backup.

    2. (Facoltativo) Per il prefisso S3, inserisci il prefisso del percorso del file archiviato nel tuo bucket Amazon S3.

      Se non si specifica un prefisso, RDS crea l'istanza database utilizzando tutti i file e le cartelle nella cartella root del bucket S3. Se si specifica un prefisso, RDS crea l'istanza database utilizzando tutti i file e le cartelle nel bucket S3 in cui il percorso del file inizia con il prefisso specificato.

      Ad esempio, si supponga di archiviare i file di backup su S3 in una sottocartella denominata backups e di disporre di più set di file di backup, ciascuno nella sua directory (gzip_backup1, gzip_backup2 e così via). In questo caso, specificare un prefisso di backups/gzip_backup1 per eseguire il ripristino dai file nella cartella gzip_backup1.

  6. In Opzioni motore:

    1. Per Tipo di motore, seleziona MySQL.

    2. In Versione motore di origine, seleziona la versione MySQL del database di origine.

    3. Per Engine Version, scegli la versione secondaria predefinita della tua versione principale di MySQL nel tuo. Regione AWS

      In AWS Management Console, è disponibile solo la versione secondaria predefinita. È possibile aggiornare l'istanza DB dopo l'importazione.

  7. Per il ruolo IAM, crea o scegli il ruolo IAM con la policy di fiducia e la policy di autorizzazione richieste che consentono ad Amazon RDS di accedere al tuo bucket Amazon S3. Eseguire una delle seguenti operazioni:

    • (Consigliato) Scegli Crea un nuovo ruolo e inserisci il nome del ruolo IAM. Con questa opzione, RDS crea automaticamente il ruolo con la politica di fiducia e la politica di autorizzazione per te.

    • Scegli un ruolo IAM esistente. Assicurati che questo ruolo soddisfi tutti i criteri diCreazione di un ruolo IAM manualmente.

  8. Specifica le informazioni sull'istanza database. Per informazioni su ciascuna impostazione, consulta Impostazioni per istanze database.

    Nota

    Assicurati di allocare memoria sufficiente per la nuova istanza database in modo che il ripristino vada a buon fine.

    Puoi inoltre scegliere l’opzione Abilita dimensionamento automatico dello storage per consentire automaticamente la crescita futura.

  9. Scegliere impostazioni aggiuntive in base alle esigenze.

  10. Scegliere Create database (Crea database).

Per importare dati da Amazon S3 in una nuova istanza DB MySQL utilizzando, chiama il comando restore-db-instance-from-s3 con i seguenti parametri. AWS CLI Per informazioni su ciascuna impostazione, consulta Impostazioni per istanze database.

Nota

Assicurati di allocare memoria sufficiente per la nuova istanza database in modo che il ripristino vada a buon fine.

Puoi inoltre utilizzare il parametro --max-allocated-storage per abilitare il dimensionamento automatico dello storage e consentire automaticamente una crescita futura.

  • --allocated-storage

  • --db-instance-identifier

  • --db-instance-class

  • --engine

  • --master-username

  • --manage-master-user-password

  • --s3-bucket-name

  • --s3-ingestion-role-arn

  • --s3-prefix

  • --source-engine

  • --source-engine-version

Esempio

Per, o: Linux macOS Unix

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier myidentifier \ --db-instance-class db.m5.large \ --engine mysql \ --master-username admin \ --manage-master-user-password \ --s3-bucket-name DOC-EXAMPLE-BUCKET \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 8.0.32 \ --max-allocated-storage 1000

Per Windows:

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m5.large ^ --engine mysql ^ --master-username admin ^ --manage-master-user-password ^ --s3-bucket-name DOC-EXAMPLE-BUCKET ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucketprefix ^ --source-engine mysql ^ --source-engine-version 8.0.32 ^ --max-allocated-storage 1000

Per importare dati da Amazon S3 in una nuova istanza DB MySQL utilizzando l'API Amazon RDS, chiama l'operazione RestoreDB S3. InstanceFrom