Situatie
Pentru că ne dorim ca bazele noastre de date din mysql să fie în siguranță trebuie să implementăm o soluție backup.
În acest tutorial se va utiliza un script bash care va rula zilnic cu ajutorul cron.
Solutie
Pasi de urmat
Alegem destinatia unde se va crea scripul nostru bash dupa care creăm un fișier cu numele backupmysql și extensia .sh
$ mkdir /bkp/
$ nano /bkp/backupmysql.sh
În backupmysql.sh încărcăm următorul cod bash:
backupparentdir=”/bkp”
mysql_user=”root”
mysql_password=”passwordrootmysql”# Read MySQL password
if [ -z “${mysql_password}” ]; then
echo -n “MySQL ${mysql_user} password: ”
read -s mysql_password
echo
fi# Check MySQL
echo exit | mysql –user=${mysql_user} –password=${mysql_password} -B 2>/dev/null
if [ “$?” -gt 0 ]; then
echo “MySQL ${mysql_user} password incorrect”
exit 1
else
echo “MySQL ${mysql_user} password correct.”
fi# Backup Data
backup_date=`date +%Y_%m_%d_%H_%M`
backup_dir=”${backupparentdir}/${backup_date}”
echo “Backup: ${backup_dir}”
mkdir -p “${backup_dir}”
chmod 755 “${backup_dir}”mysql_databases=`echo ‘show databases’ | mysql –user=${mysql_user} –password=${mysql_password} -B | sed /^Database$/d`
for database in $mysql_databases
do
if [ “${database}” == “information_schema” ] || [ “${database}” == “performance_schema” ]; then
additional_mysqldump_params=”–skip-lock-tables”
else
additional_mysqldump_params=””
fi
echo “Backup “${database}” database”
mysqldump ${additional_mysqldump_params} –user=${mysql_user} –password=${mysql_password} ${database} | gzip > “${backup_dir}/${database}.gz”
chmod 655 “${backup_dir}/${database}.gz”
done
Se modifică
backupparentdir=”/bkp”
mysql_user=”root”
mysql_password=”passwordrootmysql”
Configurare cron ( $ crontab -e ) unde adaugăm:
În fiecare zi la ora 2 AM cron rulează scriptul bash din /bkp/backupmysql.sh
0 2 * * 1 /bkp/backupmysql.sh
Leave A Comment?