Правила для бекапа mysqldump

Тема в разделе "Администрирование серверов", создана пользователем egoryichinfo, 16 мар 2012.

Модераторы: mefish, stooper
  1. egoryichinfo

    egoryichinfo Создатель

    Регистр.:
    19 мар 2010
    Сообщения:
    43
    Симпатии:
    6
    Всем привет.
    Прошу прощения за такое название темы, так и не смог более правильней придумать.
    Объясню ситуацию. Ubuntu 10.04.3 LTS, настроил бекап мускулу через sh
    вот что внутри
    Код:
    #!bin/sh
    /usr/bin/mysqldump -uroot -ppass nazvbazi > /backup/bases/`date +%Y-%m-%d`db_web10.txt
    find /backup -name "*.txt" -mtime +2 -delete
    повесил на крон, каждое утро база бекапится, но правило удаления файла старше 2ух дней не срабатывает.
     
  2. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    find написан правильно
    попробуйте вручную посмотреть что выводит
    find /backup -name "*.txt" -mtime +2
    если имена файлов выводятся, то попробуйте другой вариант с логом ошибок в /backup/delOldBackups.log:
    Код:
    (find /backup -name "*.txt" -mtime +2 -exec rm {} \;) 2>&1 >> /backup/delOldBackups.log
    
     
  3. egoryichinfo

    egoryichinfo Создатель

    Регистр.:
    19 мар 2010
    Сообщения:
    43
    Симпатии:
    6
    я понял в чем косяк, при вводе команды
    Код:
    find /backup -name "*.txt" -mtime +1
    выдает последнюю запись
    а если ввести
    Код:
    find /backup -name "*.txt" -mtime -1
    выдаст первую запись, тем самым будет удалять первый бекап
     
  4. Jasonv

    Jasonv Создатель

    Регистр.:
    22 авг 2009
    Сообщения:
    40
    Симпатии:
    4
    На днях писал похожий скрипт для своих целей. Нашел скрипт с записью на ftp, может кому пригодится
    Создает полный бэкап в воскресенье и каждый следущий день инкрементальный.

    Код:
    #!/bin/sh
    # System + MySQL backup script
    # Full backup day - Sun (rest of the day do incremental backup)
    # ---------------------------------------------------------------------
    ### System Setup ###
    DIRS="/home /etc /var/www"
    BACKUP=/tmp/backup.$$
    NOW=$(date +"%d-%m-%Y")
    INCFILE="/root/tar-inc-backup.dat"
    DAY=$(date +"%a")
    FULLBACKUP="Sun"
    ### MySQL Setup ###
    MUSER="admin"
    MPASS="mysqladminpassword"
    MHOST="localhost"
    MYSQL="$(which mysql)"
    MYSQLDUMP="$(which mysqldump)"
    GZIP="$(which gzip)"
    ### FTP server Setup ###
    FTPD="/home/vivek/incremental"
    FTPU="vivek"
    FTPP="ftppassword"
    FTPS="208.111.11.2"
    NCFTP="$(which ncftpput)"
    ### Other stuff ###
    EMAILID="admin@theos.in"
    ### Start Backup for file system ###
    [ ! -d $BACKUP ] && mkdir -p $BACKUP || :
    ### See if we want to make a full backup ###
    if [ "$DAY" == "$FULLBACKUP" ]; then
      FTPD="/home/vivek/full"
      FILE="fs-full-$NOW.tar.gz"
      tar -zcvf $BACKUP/$FILE $DIRS
    else
      i=$(date +"%Hh%Mm%Ss")
      FILE="fs-i-$NOW-$i.tar.gz"
      tar -g $INCFILE -zcvf $BACKUP/$FILE $DIRS
    fi
    ### Start MySQL Backup ###
    # Get all databases name
    DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
    for db in $DBS
    do
    FILE=$BACKUP/mysql-$db.$NOW-$(date +"%T").gz
    $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
    done
    ### Dump backup using FTP ###
    #Start FTP backup using ncftp
    ncftp -u"$FTPU" -p"$FTPP" $FTPS<<EOF
    mkdir $FTPD
    mkdir $FTPD/$NOW
    cd $FTPD/$NOW
    lcd $BACKUP
    mput *
    quit
    EOF
    ### Find out if ftp backup failed or not ###
    if [ "$?" == "0" ]; then
    rm -f $BACKUP/*
    else
    T=/tmp/backup.fail
    echo "Date: $(date)">$T
    echo "Hostname: $(hostname)" >>$T
    echo "Backup failed" >>$T
    mail  -s "BACKUP FAILED" "$EMAILID" <$T
    rm -f $T
    fi
    
     
    kikabidze нравится это.
  5. egoryichinfo

    egoryichinfo Создатель

    Регистр.:
    19 мар 2010
    Сообщения:
    43
    Симпатии:
    6
    не та команда, она удаляет все записи

    вот эта, удаляет только то что старше N дней
    Код:
    find /backup/ -mtime +N -type f -delete