День добрый, есть скрипт который бекапит базы mysql. столкнулся с такой проблемой, поломалась как-то база и скрипт бекап делал zero размер с ошибкой но, делал. Возник вопрос как проверять что бекап выполнился без ошибки? Вот сам скрипт:
mysqldump -uroot -hlocalhost -123456-dezS –default-character-set=cp1251 par1 | gzip -c > /var/backups/backup/mysql/par1-date "+%Y-%m-%d"
.sql.gz
mysqldump -uroot -hlocalhost -123456-dezS –default-character-set=cp1251 par2 | gzip -c > /var/backups/backup/mysql/par2-date "+%Y-%m-%d"
.sql.gz
mysqldump -uroot -hlocalhost -123456-dezS –default-character-set=cp1251 par3 | gzip -c > /var/backups/backup/mysql/par3-date "+%Y-%m-%d"
.sql.gz
mysqldump -uroot -hlocalhost -123456-dezS –default-character-set=cp1251 par4 | gzip -c > /var/backups/backup/mysql/par4-date "+%Y-%m-%d"
.sql.gz
#Удаляем файлы бекапов старше 7 дней tmpwatch -m 7d /var/backups/backup/mysql/
Решено:
#/bin/bash
allerror=""
mysql_pass="password"
set -o pipefail
mysqldump -uuser -hlocalhost -p$mysql_pass --default-character-set=cp1251 par1 | gzip -c > /var/backups/backup/mysql/par1-`date "+%Y-%m-%d"`.sql.gz
if [ $? -ne 0 ]; then
allerror="Backup базы par1 не выполнен\n"
fi
mysqldump -uuser -hlocalhost -p$mysql_pass --default-character-set=cp1251 par2 | gzip -c > /var/backups/backup/mysql/par2-`date "+%Y-%m-%d"`.sql.gz
if [ $? -ne 0 ]; then
allerror="${allerror}Backup базы par2 не выполнен\n"
fi
mysqldump -uuser -hlocalhost -p$mysql_pass --default-character-set=cp1251 par3 | gzip -c > /var/backups/backup/mysql/par3-`date "+%Y-%m-%d"`.sql.gz
if [ $? -ne 0 ]; then
allerror="${allerror}Backup базы par3 не выполнен\n"
fi
mysqldump -uuser -hlocalhost -p$mysql_pass --default-character-set=cp1251 par4 | gzip -c > /var/backups/backup/mysql/par4-`date "+%Y-%m-%d"`.sql.gz
if [ $? -ne 0 ]; then
allerror="${allerror}Backup базы par4 не выполнен\n"
fi
if [[ -n "$allerror" ]]; then
TMP=$(mktemp)
FROM_EMAIL_ADDRESS="откого@example.net"
TO_EMAIL_ADDRESS="кому@example.net"
EMAIL_SUBJECT="Тема письма"
SMTP="smtp.example.net:25"
FRIENDLY_NAME="User Name"
EMAIL_ACCOUNT_PASSWORD="smtp_password"
cat > $TMP << EOF
EOF
cat $TMP | \
echo -e $allerror | iconv -t UTF-8 | mailx -v \
-s "$EMAIL_SUBJECT" \
-S smtp-auth=login \
-S smtp=${SMTP} \
-S from="${FROM_EMAIL_ADDRESS}(${FRIENDLY_NAME})" \
-S smtp-auth-user=$FRIENDLY_NAME \
-S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \
$TO_EMAIL_ADDRESS
[ -e $TMP ] && rm $TMP
fi