Come importare un database MySQL con i file di backup su Amazon RDS

Come importare un database MySQL con i file di backup su Amazon RDS

Amazon Relational Database Service (RDS) non è un database ma è un servizio web AWS che ti aiuta a semplificare la configurazione, il funzionamento e ottenere la scalabilità di un database relazionale nel cloud.
Sono diversi i database relazionali gestiti dal servizio: Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle e Microsoft SQL Server.

Con Amazon RDS è possibile creare e connettersi ad un data base MySQL. Ma il servizio supporta anche l’importazione di database MySQL utilizzando i file di backup. Nel tutorial ci occuperemo di questo argomento.

Il processo segue questi passaggi:

Nella figura viene chiarito lo scenario che viene presentato.
Immagine 1 Import MySQL

Prima di iniziare sottolineamo che:

  • L’importazione da Amazon S3 supporta solo i file di backup MySQL versione 5.6 ed è disponibile in tutte le regioni.
  • Con questo metodo, il database in locale da importare deve essere tenuto offline mentre il file di backup viene creato, copiato e ripristinato. In caso invece si fosse costretti ad averlo online, è possibile avvalersi della replica binlog per aggiornare il database dopo la migrazione ad Amazon RDS tramite Amazon S3, oppure servirsi di AWS Database Migration Service.

Alcuni limiti e raccomandazioni per l’importazione di file di backup da Amazon S3 ad Amazon RDS

Sono da tenere presente alcuni limiti per l’importazione di file di backup da Amazon S3.

  • È possibile importare i dati solo in una nuova istanza DB, non in un’istanza DB esistente.
  • Per la creazione del backup del database locale bisogna utilizzare Percona XtraBackup.
  • Non è permessa la migrazione da un database d’origine che ha tabelle definite al di fuori della data directory predefinita MySQL.
  • Non consente l’importazione di un database MySQL 5.5 o 5.7.
  • Non è possibile importare un database locale MySQL con versione 5.6 su un database MySQL 5.7 di Amazon RDS. Per risolvere è possibile aggiornare l’istanza DB concluso l’import.
  • Non è possibile ripristinare un database di dimensioni superiori a 6 TB.
  • Non permette di eseguire il ripristino da un database d’origine crittografato, ma è possibile eseguirlo su un’istanza di Amazon RDS DB crittografata.
  • Non è possibile crittografare il bucket Amazon S3.
  • Non è permesso eseguire il ripristino da un bucket Amazon S3 in una regione AWS diversa da quella dell’istanza del database Amazon RDS.
  • L’import da Amazon S3 non è supportato nella classe di istanza DB db.t2.micro. Ma è possibile ripristinare una classe di istanza DB diversa e quindi modificare in un secondo momento la classe di istanza.
  • E’ possibile caricare su un bucket Amazon S3 un file fino a 5TB. Se supera questo valore bisogna dividere il file di backup in file più piccoli.
  • Il numero di file che è possibile caricare su un bucket Amazon S3 è di 1 milione. Se i dati di backup per il database, inclusi tutti i backup completi e incrementali, superassero questa cifra è possibile, per archiviare i file di backup completi e incrementali nel bucket Amazon S3, utilizzare un file tarball (.tar.gz).
  • Gli account utente, le funzioni e le procedure di store, non vengono automaticamente importati. E’ necessario salvarli dal database d’origine e successivamente aggiungerli  alla nuova istanza DB.
  • Le informazioni sul fuso orario non sono importate automaticamente. Bisogna registrare questi dati per il database di origine e impostarli in un secondo momento nella nuova istanza DB.
  • La migrazione a ritroso non è supportata sia per le versioni principali che per quelle secondarie. Ad esempio, non è possibile migrare dalla versione 5.7 alla versione 5.6 come non lo è dalla versione 5.6.39 alla versione 5.6.37.

Configurazione dell’importazione dei file di backup da Amazon S3 ad Amazon RDS

Per importare i file di backup da Amazon S3 ad Amazon RDS è necessario configurare le seguenti componenti:

  • un bucket Amazon S3 per poter memorizzare i file di backup. Se hai già un bucket Amazon S3 puoi utilizzarlo, altrimenti creane uno nuovo. Ricorda che il tuo bucket Amazon S3 non può essere crittografato.
  • un backup del database locale, per crearlo utilizza lo strumento Percona XtraBackup.
  • un ruolo AWS Identity and Access Management (IAM) che serve a consentire ad Amazon RDS di potere accedere al bucket. Puoi utilizzare quello che hai, o altrimenti crearne manualmente uno nuovo. Oppure, quando ripristini il database utilizzando la Console di gestione AWS puoi ottenerlo nel tuo account attraverso la procedura guidata.

Creazione del backup del database

Per creare il backup deve essere utilizzato il software Percona XtraBackup, sono supportate le versioni seguenti: per MySQL 5.6, utilizzare Percona XtraBackup versione 2.3.

Se impieghi già Percona XtraBackup per eseguire il backup dei file del database MySQL, puoi caricare le directory ei file di backup esistenti completi e incrementali.

Se non l’hai già installato scegli l’ultima versione del software disponibile, puoi scaricarlo direttamente dal sito Web di Percona. Inoltre, sul sito potrai avere altre informazioni sul backup del database e lo script innobackupex.

Con Percona XtraBackup è possibile creare un backup completo dei file del database MySQL che possono essere ripristinati da Amazon S3, per eseguirlo utilizza l’utility Percona XtraBackup (innobackupex).

Ad esempio, il comando seguente crea un backup di un database MySQL e memorizza i file nella cartella della /on-premises/s3-restore/backupcartella.

innobackupex –user= –password= –no-timestamp /on-premises/s3-restore/backup

Se vuoi comprimere il backup in un singolo file (che può essere suddiviso in un secondo momento), puoi salvare il backup nei formati:

  • Gzip (.gz)
  • tar (.tar)
  • Percona xbstream (.xbstream)

Con il comando seguente crei un backup del database MySQL suddiviso in più file Gzip.

innobackupex –user= –password= –stream=tar \
/on-premises/s3-restore/backup | gzip – | split -d –bytes=500MB \
– /on-premises/s3-restore/backup/backup.tar.gz

Invece se vuoi creare un backup del tuo database MySQL suddiviso in più file tar utilizza.

innobackupex –user= –password= –stream=tar \
/on-premises/s3-restore/backup | split -d –bytes=500MB \
– /on-premises/s3-restore/backup/backup.tar

Con comando seguente crei un backup del database MySQL suddiviso in più file xbstream.

innobackupex –stream=xbstream \
/on-premises/s3-restore/backup | split -d –bytes=500MB \
– /on-premises/s3-restore/backup/backup.xbstream

Backup incrementali con Percona XtraBackup

Se ti servi già Percona XtraBackup per eseguire backup completi e incrementali dei file di database MySQL, non c’è bisogno di creare un backup completo e caricare i file di backup su Amazon S3. Risparmi tempo copiando le directory e i file di backup esistenti nel bucket.

Per l’operazione è necessario copiare ricorsivamente il contenuto della directory di base. Questi contenuti includono il backup completo e anche tutte le directory e i file di backup incrementali. La copia deve mantenere la struttura di directory nel bucket Amazon S3.

Amazon RDS scorre tutti i file e le directory e utilizza il file xtrabackup-checkpoints incluso in ogni backup incrementale per identificare la directory di base e per ordinare backup incrementali per range di sequenze log (LSN).

Considerazioni sul backup di Percona XtraBackup

  • Amazon RDS fruisce dei tuoi file di backup in base al nome del file. Devi assegnare ai file di backup un nome con l’estensione appropriata in base al formato, ad esempio, .xbstreamper per i file memorizzati con il formato Percona xbstream.
  • Amazon RDS consuma i  file di backup in ordine alfabetico e anche in ordine naturale. Utilizza l’opzione split quando esegui il comando innobackupex per assicurarti che i file siano scritti e nominati nell’ordine corretto.
  • Amazon RDS non supporta backup parziali creati con Percona XtraBackup. Non è possibile utilizzare –include, –tables-file o –databases options per creare un backup parziale, quando per il tuo database si esegue il backup dei file d’origine.
  • Amazon RDS supporta backup incrementali creati utilizzando Percona XtraBackup con o senza –no-timestamp option. Si consiglia di utilizzare –no-timestamp per ridurre la profondità della struttura di directory per il backup incrementale.

Creazione manuale di un ruolo IAM

Se non disponi di un ruolo IAM, puoi crearne uno nuovo manualmente. Oppure quando si ripristina il database utilizzando la Console di gestione AWS puoi scegliere di crearlo dalla procedura guidata.

Se lo crei manualmente, per utilizzarlo nell’import del tuo database da Amazon S3, delega le autorizzazioni dal servizio Amazon RDS al bucket Amazon S3.

Ricorda che quando si crea un ruolo IAM, si allegano le politiche di trust e le autorizzazioni. Per importare i file di backup da Amazon S3, utilizzare le politiche di trust e autorizzazioni simili agli esempi seguenti
Le norme su trust e autorizzazioni richiedono che tu fornisca un nome risorsa Amazon (ARN).

Esempio di criteri di attendibilità per l’importazione da Amazon S3
{
“Version”: “2012-10-17”,
“Statement”:
[{
“Effect”: “Allow”,
“Principal”: {“Service”: “rds.amazonaws.com”},
“Action”: “sts:AssumeRole”
}]
}

Esempio di politica delle autorizzazioni per l’importazione da Amazon S3 – Autorizzazioni utente IAM
{
“Version”:”2012-10-17″,
“Statement”:
[
{
“Sid”:”AllowS3AccessRole”,
“Effect”:”Allow”,
“Action”:”iam:PassRole”,
“Resource”:”arn:aws:iam::IAM User ID:role/S3Access”
}
]
}
Esempio di politica delle autorizzazioni per l’importazione da Amazon S3 – Autorizzazioni di ruolo
{
“Version”: “2012-10-17”,
“Statement”:
[
{
“Effect”: “Allow”,
“Action”:
[
“s3:ListBucket”,
“s3:GetBucketLocation”
],
“Resource”: “arn:aws:s3:::bucket_name”
},
{
“Effect”: “Allow”,
“Action”:
[
“s3:GetObject”
],
“Resource”: “arn:aws:s3:::bucket_name/prefix*”
}
]
}
Nota
Se si include un prefisso del nome file, includere l’asterisco (*) dopo il prefisso. Se non si desidera specificare un prefisso, specificare solo un asterisco.

Console di gestione AWS

Per importare dati da Amazon S3 a una nuova istanza di MySQL DB

  1. Accedi alla Console di gestione AWS e apri la console di Amazon RDS all’indirizzo https://console.aws.amazon.com/rds/ .
  2. Nella console di Amazon RDS, selezione l’area AWS in cui creare l’istanza DB. Scegli la stessa regione AWS del bucket Amazon S3 che contiene il backup del tuo database.
  3. Nel pannello di navigazione, scegli Instances.
  4. Scegli Restore da S3 per avviare la procedura guidata.
  5. La procedura guidata si apre sulla pagina Select engine.
  6. Nella pagina Select engine, scegli l’icona MySQL, quindi scegli Next.
  7. Appare la pagina Specify source backup details.Immagine 2 Import MySql
  8.  Nella pagina Specify source backup details, fornisci le informazioni di backup.
    Per Source engine, scegli mysql.
    Per Source engine version, scegli la versione MySQL del tuo database sorgente.
    Per bucket S3, scegli il tuo bucket Amazon S3.
    (facoltativo) Per S3 folder path prefix, digita un prefisso del percorso file per i file memorizzati nel bucket Amazon S3 in modo che RDS crei l’istanza DB utilizzando i file e le cartelle nel bucket S3 in cui il percorso del file inizia con il prefisso specificato. Se il prefisso non viene specificato, RDS crea invece l’istanza DB utilizzando tutti i file e le cartelle della cartella di root del bucket S3. Se si indica un prefisso, RDS crea l’istanza DB utilizzando i file e le cartelle del bucket S3 in cui il percorso del file inizia con il prefisso che hai specificato.
    Per Create a new role, seleziona Yes per creare un nuovo ruolo IAM nel proprio account o scegliere No per selezionare un ruolo IAM esistente.
    Per IAM role seleziona un ruolo IAM esistente o specifica il nome per un nuovo ruolo IAM. È possibile scegliere di creare un nuovo ruolo IAM scegliendo Yes per Create a New Role.
  9. Scegli Next per continuare. Appare la pagina Specify DB Details.
    Nella pagina Specifica dettagli DB, fornisci le informazioni sull’istanza DB.
  10. Scegli Next per continuare. Verrà visualizzata la pagina Configure advanced settings.
  11. Fornisci ulteriori informazioni di cui ha bisogno Amazon RDS per avviare l’istanza DB.
  12. Scegli Launch DB instance.

Nota
Assicurarti di allocare memoria sufficiente per la nuova istanza DB così che il ripristino abbia esito positivo. È possibile aggiungere memoria a secondo le future necessità.

CLI

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

  • –allocated-storage
  • –db-instance-identifier
  • –db-instance-class
  • –engine
  • –master-user-name
  • –master-user-password
  • –s3-bucket-name
  • –s3-ingestion-role-arn
  • –s3-prefix
  • –source-engine
  • –source-engine-version

Esempio

Per Linux, OS X o Unix:
aws rds restore-db-instance-from-s3 \
–allocated-storage 250 \
–db-instance-identifier myidentifier \
–db-instance-class db.m4.large \
–engine mysql \
–master-user-name masterawsuser \
–master-user-password masteruserpassword \
–s3-bucket-name mybucket \
–s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \
–s3-prefix bucketprefix \
–source-engine mysql \
–source-engine-version 5.6.27

Per Windows:
aws rds restore-db-instance-from-s3 ^
–allocated-storage 250 ^
–db-instance-identifier myidentifier ^
–db-instance-class db.m4.large ^
–engine mysql ^
–master-user-name masterawsuser ^
–master-user-password masteruserpassword ^
–s3-bucket-name mybucket ^
–s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^
–s3-prefix bucketprefix ^
–source-engine mysql ^
–source-engine-version 5.6.27

API

Se vuoi importare dati da Amazon S3 a una nuova istanza di DB MySQL utilizzando l’API di Amazon RDS, chiama l’azione RestoreDBInstanceFromS3.

Comments are closed.

Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi