Come scrivere e schedulare uno Script Bash per Backup Database MySQL Linux, per mettere al sicuro i database del server.
Cosa è uno script Bash
Uno script Bash è un file di testo che contiene una serie di comandi per sistemi operativi a base Unix, come ad esempio Linux, scritti in linguaggio di scripting Bash.
Gli script Bash vengono utilizzati per automatizzare molteplici azioni, come ad esempio l’esecuzione di comandi di sistema, la manipolazione dei file, la creazione di backup, la gestione dei processi ecc…
Gli script Bash possono essere eseguiti direttamente dal terminale o possono essere pianificati per essere eseguiti in un momento specifico utilizzando strumenti come il crontab di Linux.
Creare uno Script Bash per Backup Database MySQL Linux
Come prima cosa occorrerà creare una cartella dove inserire i backup di tutti i database
cd /var/ww/vhosts/ mkdir backups
Creare un file .sh, per esempio MySqlBackup.sh, all’interno della cartella precedentemente creata
cd backups touch MySqlBackup.sh
Editare il file inserendo le seguenti istruzioni bash:
#!/bin/bash USER="DB_USERNAME" PASSWORD="DB_PASSWORD" OUTPUT="SERVER_FOLDER" rm "$OUTPUT/*gz" > /dev/null 2>&1 databases=`mysql --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database` for db in $databases; do if [[ "$db" != "information_schema" ]] ; then echo "Dumping database: $db" mysqldump --force --opt --user=$USER --password=$PASSWORD --databases $db > $OUTPUT/$db.`date +%Y%m%d`.sql gzip $OUTPUT/$db.`date +%Y%m%d`.sql fi done
dove bisogna modificare i seguenti parametri seguenti con i propri dati:
- DB_USERNAME: nome utente MySQL che deve avere i permessi di lettura su tutti i database
- DB_PASSWORD: password utente MySQL
- SERVER_FOLDER: la cartella dove inserire i backup
Assegnare gli opportuni permessi al file .sh
chmod 700 MySqlBackup.sh
Eseguire lo script bash appena creato e verificarne il funzionamento
./MySqlBackup.sh
Creare un cron per lo Script Bash di Backup
Assegnare un orario per l’esecuzione automatica dello script con crontab
crontab -e 00 02 * * * /SERVER_FOLDER/MySqlBackup.sh