Backup e replica sono due cose diverse.
I backup forniscono un’istantanea dei dati in un dato momento. Forniscono un punto di ripristino.
La replica consiste nel distribuire ogni azione su un sistema diverso in modo da averla in più di una posizione. Anche le eliminazioni vengono replicate.
Se si desidera davvero essere tolleranti ai guasti, è necessario disporre di entrambi. (E altro ancora…)
Quindi la replica risolve solo il problema di avere dati correnti in più posti. I backup forniscono il metodo per ripristinare un sistema a un dato punto nel tempo.
Discourse utilizza 2 meccanismi per l’archiviazione:
- Database PostgreSQL per tutto tranne i file allegati
- I file allegati vengono archiviati sul sistema locale o in S3
Per eseguire il backup e/o replicare i dati archiviati nel database PostgreSQL, è possibile consultare la documentazione di PostgreSQL su come farlo. Riguardo ai backup e alla replica.
I file allegati sono un po’ più complicati. Se li si archivia su S3, è possibile utilizzare i backup S3. Per i file archiviati localmente, è possibile utilizzare una varietà di opzioni del sistema locale.
La creazione di backup completi è un’operazione pesante a seconda della quantità di dati. Quindi non è facile eseguirla più spesso. La procedura di backup standard di Discourse consiste nel creare backup completi. Se si desidera davvero ridurre il rischio di perdere dati, è necessario cercare altre opzioni.
Un’opzione potrebbe essere fornita dal servizio di hosting: snapshot del volume. Questo fornisce un modo per creare una copia “istantanea” dei dati archiviati in un volume. Ciò consente di ripristinare il volume a quel momento. Gli snapshot del volume potrebbero essere disponibili anche all’interno del sistema operativo a seconda del file system utilizzato. (ad esempio, btrfs lo supporta.)
Inoltre, la documentazione di PostgreSQL tratta anche della creazione di backup più continui del database, consentendo un eccellente ripristino del database al punto nel tempo. (Non dimenticare di spedire i backup fuori sede.) Questo è molto più veloce dei backup completi.
Per backup degli allegati più granulari, è possibile utilizzare vari strumenti di backup che consentono di gestire backup completi + differenziali. Ad esempio duplicity. Oppure si potrebbe usare rsync (senza eliminazione). Tra gli snapshot si potrebbero comunque perdere dei file. L’utilizzo di S3 senza eliminazione sarebbe più sicuro poiché i file sono già su un altro sistema.
In conclusione. Il meccanismo di backup standard di Discourse non è adatto per una pianificazione di backup più frequente. Se si desidera avere più backup, utilizzare una combinazione delle funzionalità standard di backup/replica di PostgreSQL, S3, snapshot del volume, ecc.
Sul mio sito non utilizzo il sistema di backup di Discourse per i backup regolari. Ho ancora backup giornalieri, ma utilizzo una combinazione di configurazioni pg_dump e duplicity (coordinate tramite backupninja).