Назад | Перейти на главную страницу

Резервное копирование Shell MySQL - какое у вас решение?

Я ищу отличное решение для резервного копирования моих баз данных MySQL - всех их. Я бы хотел, чтобы каждый был хотя бы в отдельном файле. Мне понадобится возможность FTP позже, но не сейчас. Сейчас мне просто нужно сохранить его на том же сервере, на котором он работает.

Что ты используешь?

Обновить

Полагаю, я должен быть более ясным в том, о чем я прошу ... Я ищу сценарий bash, который будет использовать mysqldump для создания отдельных файлов резервных копий для каждой базы данных или отдельного файла для таблицы, если таблица достаточно велика.

Я использовал это AutoMySQLBackup скрипт для моих mysqldumps. Делает ежедневные, еженедельные, ежемесячные резервные копии и ротации. Очень удобно.

Вы можете использовать этот скрипт:

#!/bin/bash
BACKUP_DIR="/opt/backup"
MYSQL_USER=your_user
MYSQL_PASS=your_pass
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"

DB_LIST="$($MYSQL -u $MYSQL_USER -p$MYSQL_PASS -Bse 'show databases')"
for db in $DB_LIST;
do
    BACKUP_SUBDIR="$BACKUP_DIR/mysql_`date +%Y-%m-%d`"
    BACKUP_FILE="$BACKUP_SUBDIR/$db.gz"
    if [ ! -d $BACKUP_SUBDIR ]; then
        mkdir -p $BACKUP_SUBDIR
    fi
    if [ -f $BACKUP_FILE ]; then
        unlink $BACKUP_FILE
    fi
    $MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS $db | $GZIP -9 > $BACKUP_FILE
done

Я использую простой сценарий Bash, который выполняет mysqldump, а затем rsync (легко использовать ftp) на другой удаленный компьютер.

очень просто, но работает!

нет необходимости отключать базу данных.

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

Люк

Это ежедневное резервное копирование создаст резервную копию вашей базы данных, а также 4-дневные резервные копии и их ротацию. Затем вы можете сделать резервную копию этой папки на удаленном сайте.

#!/bin/bash -x
#
# Marco Maldonado MySQL Backup
# Version 1.0 September 9 2008
# comments marco@penguincares.no-ip.org

MYSQL=`which mysql`
MYSQLDUMP=`which mysqdump`
BACKUPS=/opt/backups
dbs=`$MYSQL -u root -pYOURPASSWORD -Bse 'show databases'`

for db in $dbs
do
rm -rf $BACKUPS/$db.3
mv $BACKUPS/$db.2 $BACKUPS/$db.3
mv $BACKUPS/$db.1 $BACKUPS/$db.2
mv $BACKUPS/$db.0 $BACKUPS/$db.1
#mkdir $BACKUPS/$db.0
#$HOTCOPY $userpassword $db $BACKUPS/$db.0
mysqldump -u root -pIndr@sN3t $db  > $BACKUPS/$db.0
done

Убедитесь, что у вас есть папка внутри / opt, и вы называете ее резервными копиями.