2016-09-08

Бэкап всех баз MySQL с ротацией (удалением старых) бэкапов

Скрипт делает дампы всех БД сервера, сохраняя в папки именованные по дате и времени создания. Сохраняются последние N (переменная $BACKUPS) бэкапов.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Optional variables for a backup script
MYSQL_USER="root"
MYSQL_PASS="password"
BACKUP_ROOT=/var/backups/mysql;
BACKUPS=2;
BACKUP_DIR="$BACKUP_ROOT/$(date +%Y-%m-%dT%H_%M_%S)";

# Create folders
test -d "$BACKUP_DIR" || mkdir -p "$BACKUP_DIR"
# Get the database list, exclude information_schema
for db in $(mysql -B -s -u $MYSQL_USER --password=$MYSQL_PASS -e 'show databases' | grep -v information_schema)
do
  # dump each database in a separate file
  mysqldump -u $MYSQL_USER --password=$MYSQL_PASS "$db" | gzip > "$BACKUP_DIR/$db.sql.gz"
done

# backup cleanup
ls "$BACKUP_ROOT" \
        | head -n$(expr $(ls "$BACKUP_ROOT" | wc -l) - $BACKUPS) \
        | while read in; 
                do rm -rf  "$BACKUP_ROOT/$in"; 
          done

Комментариев нет:

Отправить комментарий