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