Данный скрипт делает бэкап нескольких баз данных, проверяет что дампы сделались без ошибок и только в этом случае копирует их на 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