Azioni

Backup: alternative FOSS a disposizione

Da MontelLUG WIKI.

Versione del 27 ott 2021 alle 14:54 di Odeeno (discussione | contributi)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Stesura in corso

E' certo che prima o poi capita a tutti di perder dei dati, mentre è incerto quando accadrà. L'unico modo per mitigare il rischio e ridurre i danni e le conseguenze della perdita dei dati è FARE I BACKUP.

Questa vuol esser una guida per quanto possibile sintetica, per una soluzione al problema dei backup.

Buone prassi per i backup

Caso 1: backup di un server

Programmi FOSS a disposizione

Backup del database

Il database, in un server, deve esser sottoposto a backup: di seguito vien riportato un esempio di script che farà periodicamente per noi il lavoro di:

  • fare un dump dei nostri database in una cartella;
  • comprimerlo;
  • eliminare le copie troppo vecchie.

Questa cartella sarà poi sottoposta a backup e sarà a disposizione un set di copie del database in caso di future necessità.

Lo script

Prendendo spunto da qui, personalizziamo uno script:

 1 #!/bin/bash
 2 # Dump all MySQL databases to individual files using debian-sys-maint
 3 # credentials from /etc/mysql/debian.cnf
 4 
 5 DATE=$(date +%m%d%Y-%H%M)
 6 STORE_PATH=/dumps
 7 DEB_CNF_PATH=/etc/mysql/debian.cnf
 8 MYSQL_USER=$(/bin/cat $DEB_CNF_PATH | /bin/grep -m1 user | /usr/bin/awk '{print $3;}')
 9 MYSQL_PASS=$(/bin/cat $DEB_CNF_PATH | /bin/grep -m1 password | /usr/bin/awk '{print $3;}')
10 MYSQL_ARGS="--single-transaction --routines --events"
11 MYSQL_DBS=$(mysql -u $MYSQL_USER -p$MYSQL_PASS -e "SHOW DATABASES;" | tr -d "| " | grep -v Database)
12 
13 [ -d $STORE_PATH ] || mkdir -vp $STORE_PATH 
14 
15 for db in $MYSQL_DBS; do
16   /usr/bin/mysqldump $MYSQL_ARGS -u$MYSQL_USER -p$MYSQL_PASS --databases $db | \
17        /bin/bzip2 -9 > $STORE_PATH/$DATE-$HOSTNAME-$db.bz2
18 done
19 
20 # Only keep last 7 days of dumps
21 /usr/bin/find $STORE_PATH/ -type f -mtime +6 -exec rm {} \;


dove:

  1. single-transaction recupera un database "consistente" adatto al possibile recupero
  2. routines include nel dump le procedure e funzioni presenti nel database
  3. events include nel dump tutti gli eventi programmati
  4. databases è l'opzione che specifica che le istruzioni CREATE DATABASE vanno aggiunte al dump


L'esecuzione automatica periodica

Lo script va:

  1. reso avviabile
  2. schedulato per un esecuzione automatica


Quindi:

chmod +x /usr/local/bin/mysql_backup.sh


crontab -e


0 1 * * * /usr/local/bin/mysql_backup.sh 2>/dev/null


Il ripristino del database

bzcat 11242018-1002-db01-revenni_app.bz2 | mysql -u root -p


Setup del backup

Cartelle da sottoporre a backup:

  • file dati creati da applicazioni in "/var/" (escluse "/var/cache/", "/var/run/" e "/var/tmp/")
  • file di configurazione del sistema in "/etc/"
  • eventuali software locali in "/usr/local/" o "/opt/"
  • file in /root di configurazione, partizionamento, pro-memoria, istruzioni per il funzionamento del server in questione
  • il database: può esser impostato un dump periodico in /root del database, che poi sarà oggetto del backup assieme alla cartella
  • file dati creati direttamente in "~/" o in "/root/", dove magari possono venire salvati


23:20, 26 ott 2021 (CEST)

Caso 2: backup di un computer di casa

Programmi FOSS a disposizione

Setup del backup

Il ripristino

Sei sicuro di aver fatto un buon lavoro? Un modo per capirlo è far finta di dover ripristinare i dati. Un passaggio fondamentale di ogni metodo di salvataggio è tentare periodicamente il ripristino, casuale, di alcuni file o cartelle dai propri supporti.