Condividi tramite


Eseguire la migrazione a o tra istanze di Azure Cache per Redis

Questo articolo descrive diversi scenari di migrazione di Cache Redis di Azure. È possibile eseguire la migrazione di cache Redis open source in esecuzione in locale o in macchine virtuali cloud o cache ospitate da altre piattaforme cloud a Cache Redis di Azure.

È anche possibile eseguire la migrazione di un'istanza di Cache Redis di Azure a un'altra istanza. Se è sufficiente spostare una cache Redis di Azure da un'area di Azure a un'altra, vedere Spostare istanze di Cache Redis di Azure in aree diverse.

Redis open source può essere eseguito in molti ambienti di calcolo, ad esempio data center locali privati o macchine virtuali ospitate nel cloud. Altre piattaforme di hosting come Amazon Web Services (AWS) ospitano servizi cache Redis come AWS ElastiCache. In genere è possibile eseguire la migrazione di queste cache Redis a Cache Redis di Azure con interruzioni minime o tempi di inattività.

Opzioni di migrazione

La modalità di migrazione da una cache a un'altra dipende dalla posizione in cui esiste la cache e dal modo in cui l'applicazione interagisce con essa. Nella tabella seguente sono elencate le strategie di migrazione usate di frequente.

Opzione Vantaggi Svantaggi
Creare una nuova cache Più semplice da implementare. Deve ripopolare i dati nella nuova cache, che potrebbe non funzionare con alcune applicazioni.
Esportare e importare dati tramite file di database di sola lettura (RDB). Compatibile con qualsiasi cache Redis. I dati scritti nella cache esistente dopo la generazione del file RDB potrebbero andare persi.
Dati con doppia scrittura in due cache. Nessuna perdita di dati o tempo di inattività, nessuna operazione di cache interrotta e test più semplici. Richiede due cache per un periodo di tempo prolungato.
Migrare i dati tramite programmazione. Controllo completo sulla modalità di spostamento dei dati. Richiede codice personalizzato.

Creare una nuova cache

Se le operazioni senza interruzioni e la potenziale perdita di dati non sono problematiche, il modo più semplice per spostare i dati in Azure Cache per Redis consiste nel creare un'istanza della cache Redis di Azure e connettere ad essa l'applicazione. Ad esempio, se si usa Redis come cache look-aside dei record di database, è possibile ricompilare facilmente la cache da zero. Questo approccio non è tecnicamente una migrazione.

I passaggi generali per implementare questa opzione sono:

  1. Creare una nuova istanza di cache di Azure per Redis. Facoltativamente, provare Redis gestito di Azure.
  2. Aggiornare l'applicazione per usare la nuova istanza di Azure Redis.
  3. Eliminare l'istanza di Redis precedente.

Esportare i dati in un file RDB e importarli in cache di Azure per Redis

Redis open source definisce un meccanismo standard per creare uno snapshot del set di dati in memoria di una cache e salvarlo in un file RDB che qualsiasi cache Redis può leggere. Il livello Premium di Cache Redis di Azure supporta l'importazione di dati in un'istanza della cache tramite il file RDB. È possibile usare il file RDB per trasferire i dati da una cache esistente a Cache Redis di Azure.

Importante

Il formato di file RDB può cambiare tra le versioni di Redis e potrebbe non mantenere la compatibilità con le versioni precedenti. La versione Redis della cache esportata deve essere uguale o inferiore alla versione fornita da Cache Redis di Azure.

I passaggi generali per implementare questa opzione sono:

  1. Salvare uno snapshot della cache Redis esistente. È possibile configurare Redis per salvare periodicamente gli snapshot oppure salvarli manualmente usando i comandi SAVE o BGSAVE . Il file RDB è denominato dump.rdb per impostazione predefinita e si trova nel percorso specificato nel file di configurazione redis.conf .
  2. Creare una nuova istanza di Cache Redis di Azure di livello Premium con dimensioni almeno pari alla cache esistente.
  3. Copiare il file RDB in un account di archiviazione di Azure nell'area in cui si trova la nuova cache. È possibile usare AzCopy per questa attività.
  4. Importare il file RDB nella nuova cache. È anche possibile usare il cmdlet Import-AzRedisCache di PowerShell.
  5. Aggiornare l'applicazione per usare la nuova istanza della cache.

Nota

Per eseguire la migrazione dei dati da un'altra istanza di Azure Redis, esportare prima di tutto il file RDB da tale istanza oppure usare il cmdlet PowerShell Export-AzRedisCache .

Scrivere in due cache Redis durante la migrazione

Invece di spostare i dati tra cache, è possibile impostare temporaneamente l'applicazione per scrivere dati in una cache esistente e in una nuova. L'applicazione legge inizialmente i dati dalla cache esistente. Quando la nuova cache contiene dati sufficienti, è possibile passare l'applicazione a tale cache e ritirare quella precedente.

Si supponga, ad esempio, di usare Redis come archivio sessioni e che le sessioni dell'applicazione scadano dopo sette giorni. Dopo la scrittura in entrambe le cache per sette giorni, la nuova cache contiene tutte le informazioni di sessione non scadute ed è possibile basarsi in modo sicuro su di esso da quel punto in poi. È quindi possibile ritirare la vecchia cache.

I passaggi generali per implementare questa opzione sono:

  1. Creare una nuova istanza di Cache Redis di Azure di livello Premium con dimensioni almeno pari alla cache esistente.
  2. Modificare il codice dell'applicazione per scrivere sia nelle istanze nuove che in quelle originali.
  3. Continuare a usare i dati dell'istanza originale fino a quando la nuova istanza non viene sufficientemente popolata con i dati.
  4. Aggiornare il codice dell'applicazione per leggere e scrivere solo dalla nuova istanza.
  5. Eliminare l'istanza originale.

Eseguire la migrazione a livello di codice

È possibile creare una migrazione personalizzata leggendo a livello di codice i dati da una cache esistente e scrivendola in Cache Redis di Azure. Ad esempio, è possibile usare lo strumento open source redis-copy per copiare i dati da un'istanza di Azure Redis a un'altra.

Il codice sorgente può essere una guida utile per scrivere uno strumento di migrazione personalizzato. È disponibile anche una versione compilata .

Nota

Questo strumento non è ufficialmente supportato da Microsoft.

I passaggi generali per implementare questa opzione sono:

  1. Creare una macchina virtuale di Azure nella stessa area della cache esistente. Se il set di dati è di grandi dimensioni, scegliere una macchina virtuale potente per ridurre il tempo di copia.
  2. Creare una nuova istanza di Cache Redis di Azure e assicurarsi che sia vuota. Lo redis-copy strumento non sovrascrive le chiavi esistenti nella cache di destinazione.
  3. Usare un'applicazione, redis-copy ad esempio per automatizzare la copia dei dati dalla cache di origine alla cache di destinazione. Il processo di copia potrebbe richiedere del tempo a seconda delle dimensioni del set di dati.