Azioni

Backup: alternative FOSS a disposizione

Da MontelLUG WIKI.

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
 5DATE=$(date +%m%d%Y-%H%M)
 6STORE_PATH=/dumps
 7DEB_CNF_PATH=/etc/mysql/debian.cnf
 8MYSQL_USER=$(/bin/cat $DEB_CNF_PATH | /bin/grep -m1 user | /usr/bin/awk '{print $3;}')
 9MYSQL_PASS=$(/bin/cat $DEB_CNF_PATH | /bin/grep -m1 password | /usr/bin/awk '{print $3;}')
10MYSQL_ARGS="--single-transaction --routines --events"
11MYSQL_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
15for 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
18done
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

  • rsync o grsync
  • rsnapshot
  • backintime


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.