Script de còpies de seguretat en MySQL

De Guifi.net - Wiki Català

Aquest script realitza un dump (còpia de seguretat) setmanal de les bases de dades allotjades al servidor de mysql de marsupi.

Script

#!/bin/bash

BackupFolder='/radio/backups_nulito/mysqlbackups/'
BackupFolder2='/nulito/backups_radio/mysqlbackups/'
ADMINMAIL='blackholdmailer@gmail.com'
hostname=`hostname`


###########functions
function erase (){

if [ -e $BackupFolder ]; then
rm -R $BackupFolder*.sql
return
else
mkdir $BackupFolder
return 1
fi

if [ -e $BackupFolder2 ]; then
rm -R $BackupFolder2*.sql
return
else
mkdir $BackupFolder2
return 1
fi
}

############main
erase

for i in $(echo 'SHOW DATABASES;' | mysql | grep -v '^Database$' ); do
mysqldump --opt $i > $BackupFolder/$(date +%F)_mysql_$i.sql;
done;

cp -R $BackupFolder/* $BackupFolder2/

echo "Mysql backup de $hostname:" $'\n' $BackupFolder ":" $'\n' "`ls -lh $BackupFolder`" $BackupFolder2 ":" $'\n\n\n' "`ls -lh $BackupFolder2`" |mail -s '[Backup] MySQL de '$hostname'' $ADMINMAIL

Comentaris script

Aquest script està pensat per tenir una autentificació automàtica, en el cas que el password de root de la base de dades no sigui en blanc, serà necessari crear el fitxer /root/.my.cnf amb aquest contingut:

[client]
user=root
pass=password

Es recomana crear un usuari amb només permisos de lectura sobre totes les taules i executar l'script amb un usuari del sistema des de cron, caldrà canviar aleshores el nom de user al fitxer .my.cnf

Crontab

[root] [marsupi:~]$ vi /etc/crontab
0 7 * * 1 root /root/mysql.sh

Eines de l'usuari