Come eseguire il rollback di Immich in sicurezza dopo una release incompatibile

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

Esegui il rollback di Immich solo dopo aver preservato lo stato attuale e aver determinato se la versione più recente ha modificato il database o la configurazione in modo che l’immagine precedente non possa leggerli.

L’immagine di un container può essere sostituita, ma i dati persistenti potrebbero essere già stati migrati. Se un aggiornamento inizia con problemi, interrompi gli aggiornamenti automatici e le nuove scritture, annota entrambe le versioni, proteggi il database e i contenuti multimediali correnti, quindi scegli tra un semplice rollback dell’immagine e il ripristino del punto di recupero precedente all’aggiornamento.

Blocca l’aggiornamento non riuscito prima che modifichi altri dati

Disabilita gli aggiornamenti automatici delle immagini e impedisci ai client di aggiungere nuove foto mentre raccogli le informazioni. Annota le versioni o i digest esatti delle immagini Immich precedente e nuova, la versione di PostgreSQL, i file Compose e dell’ambiente, i percorsi dei mount e il primo errore di avvio o migrazione.

La guida di ZimaSpace sui limiti del rollback dei container evidenzia la distinzione fondamentale: i volumi persistenti sopravvivono alla sostituzione dell’immagine, ma ciò è sicuro solo quando l’applicazione precedente rimane compatibile con lo stato in essi contenuto.

Esegui un backup nativo del database nello stato attuale non riuscito, se il database è leggibile, e conserva separatamente il backup precedente all’aggiornamento. Non sovrascrivere nessuno dei due con esperimenti ripetuti. La copia attuale potrebbe servire per procedere in seguito, anche se l’obiettivo immediato è tornare alla versione precedente.

Determina se la versione ha superato un limite di migrazione del database

Esamina il primo errore dopo l’aggiornamento e determina se si verifica prima o durante la migrazione del database, dopo la migrazione durante l’avvio dell’applicazione oppure solo durante un flusso di lavoro dell’utente. Questa tempistica modifica il piano di rollback, perché un’immagine precedente potrebbe non comprendere uno schema già modificato dalla nuova versione.

Un recente resoconto di Immich in cui il servizio non è riuscito ad avviarsi dopo un percorso di aggiornamento mostra perché percorsi di migrazione non supportati o saltati possano rendere inaffidabile una semplice sostituzione della versione. Considera la discussione un caso di studio e verifica la sequenza di migrazione esatta per le tue versioni.

Se la nuova applicazione non ha mai modificato il database e il problema è limitato alla compatibilità dell’immagine o dell’ambiente di esecuzione, può bastare il rollback a un’immagine fissata. Se le migrazioni sono state completate, considera il backup del database precedente all’aggiornamento il partner più sicuro per la versione precedente, salvo prove esplicite di compatibilità.

Ripristina un database e un ambiente di esecuzione compatibili invece di mescolare versioni diverse

Costruisci il target del rollback partendo dall’ultima versione dell’applicazione sicuramente funzionante, dalla relativa configurazione di distribuzione compatibile e dal punto di recupero del database precedente alla modifica incompatibile. Mantieni intatto l’albero dei contenuti multimediali, salvo che la versione abbia modificato i file in modo documentato; non ricopiare terabyte di dati solo perché è cambiata l’immagine dell’applicazione.

La discussione sul rollback del database compatibile spiega il pericolo generale di distribuire codice precedente su uno schema che non comprende più. Questo principio è più importante del fatto che il container riesca o meno ad avviarsi.

Avvia l’istanza di rollback in isolamento, in modo che i client mobili e i processi pianificati non possano scrivere fino al completamento della convalida. Se la versione precedente segnala immediatamente errori dello schema, arrestala. Non forzare manualmente il rollback delle migrazioni sull’unica copia del database, a meno che tu non disponga di una procedura di ripristino specifica per la versione e già testata.

-15% OFF

Fissa l’immagine esatta sicuramente funzionante e riproduci la relativa configurazione

Usa una versione specifica o un riferimento immutabile all’immagine, invece di un tag soggetto a variazioni. Ripristina l’ambiente, le dipendenze dei servizi, le mappature dei dispositivi, le reti, le porte e la destinazione del reverse proxy corrispondenti alla distribuzione sicuramente funzionante. Un rollback che modifica silenziosamente diversi livelli dell’infrastruttura crea un secondo incidente.

Conserva la nuova immagine e la configurazione non riuscite accanto alle note sul rollback. Ciò consente un ripristino controllato in avanti dopo aver compreso l’incompatibilità. Rimuovere immediatamente ogni nuovo artefatto può rendere più difficile confrontare gli stati non riuscito e funzionante o riprodurre l’aggiornamento in un ambiente di test.

Se il servizio precedente si avvia sullo stato ripristinato, esamina i log prima di riabilitare i client. Verifica che non ci siano tentativi di migrazione imprevisti, inizializzazione di una nuova installazione, mount dello storage mancanti o modifiche ai permessi. Una semplice pagina di accesso non dimostra che il rollback stia utilizzando i dati previsti.

Convalida la versione precedente usando il trigger originale e mantieni un percorso per procedere

Prova utenti rappresentativi, contenuti vecchi e recenti, album, condivisione, ricerca, un nuovo caricamento controllato, processi in background, la creazione di un backup del database e il percorso del reverse proxy. Riavvia lo stack una volta e verifica che gli stessi mount e il database tornino disponibili senza interventi manuali.

Mantieni sospesi i nuovi caricamenti fino al superamento di questi controlli, quindi riapri l’accesso e osserva il normale intervallo di attività. Conserva sia il backup precedente all’aggiornamento sia il backup dello stato più recente non riuscito, così potrai riprovare l’aggiornamento in seguito in una copia isolata, dopo aver compreso il problema di compatibilità.

Il rollback non è riuscito se la versione precedente segnala un’incompatibilità dello schema, mancano dati noti oppure le scritture finiscono in un percorso imprevisto. Arresta tutto e ripristina nuovamente il punto di recupero conservato, invece di stratificare correzioni. Per l’escalation, fornisci le versioni esatte, i log di migrazione, i timestamp dei backup del database, il confronto dei file Compose e il primo passaggio di verifica che non va a buon fine.

Supporto e consigli

Altro da leggere

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.