Суббота, 21 сентября, 2024

Резервное копирование MYSQL

Данный скрипт делает бэкап нескольких баз данных, проверяет что дампы сделались без ошибок и только в этом случае копирует их на ftp.

Для каждой базы делается по 3 бэкапа:

  • Полный
  • Метаданные
  • Тригеры и процедуры
#!/bin/bash
BACKDATE=`date +%F`
charsets_dur=/usr/share/mysql/charsets
backup_dir=/backup
ftp_dir=DUMPS
ftp_host=ftp.ftp.ru/DUMPS
ftp_user="user"
ftp_pass="password"
db_host=localhost
log_dir=/backup
db_user=root
db_pass=password
db_name="dbname1 dbname2 dbname3"
db_port=3306

find $backup_dir -type f -mtime +0 -name '*.gz' -delete

for db in $db_name; do
echo $db
/usr/bin/mysqldump -C --character-sets-dir=$charsets_dur --default-character-set=cp1251 -h $db_host -a -l --add-locks -Q -c -F -E -f -q --routines --triggers --no-autocommit --protocol=tcp --log-error=$log_dir/backup.log -u$db_user -p$db_pass -B $db -P$db_port |gzip > "$backup_dir/$db-$BACKDATE"_full.gz
if [ "$?" -eq 0 ]
then
    /usr/bin/curl -v -T /$backup_dir/"$db-$BACKDATE"_full.gz -u "$ftp_user:$ftp_pass" ftp://$ftp_host/$db/
else
    echo "$BACKDATE "$db-$BACKDATE"_full.gz DUMP ERROR" >> backup.log
fi
/usr/bin/mysqldump -C --character-sets-dir=$charsets_dur --default-character-set=cp1251 -h $db_host -a -l --add-locks -Q -c -F -E -f -q --no-data --no-autocommit --protocol=tcp --log-error=$log_dir/backup.log -u$db_user -p$db_pass -B $db_name -P$db_port |gzip > "$backup_dir/$db-$BACKDATE"_meta.gz
if [ "$?" -eq 0 ]
then
    /usr/bin/curl -v -T /$backup_dir/"$db-$BACKDATE"_meta.gz -u "$ftp_user:$ftp_pass" ftp://$ftp_host/$db/
else
    echo "$BACKDATE "$db-$BACKDATE"_meta.gz DUMP ERROR" >> backup.log
fi
/usr/bin/mysqldump -C --character-sets-dir=$charsets_dur --default-character-set=cp1251 -h $db_host -a -l --add-locks -Q -c -F -E -f -q --routines --triggers --no-autocommit --protocol=tcp --log-error=$log_dir/backup.log --no-data -t -u$db_user -p$db_pass -B $db_name -P$db_port |gzip > "$backup_dir/$db-$BACKDATE"_proc.gz
if [ "$?" -eq 0 ]
then
    /usr/bin/curl -v -T /$backup_dir/"$db-$BACKDATE"_proc.gz -u "$ftp_user:$ftp_pass" ftp://$ftp_host/$db/
else
    echo "$BACKDATE "$db-$BACKDATE"_proc.gz DUMP ERROR" >> backup.log
fi
done

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

Latest article

Must read