Skip to content

Backup и restore в MySQL

1. Создание бэкапа

Чтобы создать backup базы данных MySQL создайте какой-нибудь каталог, например backup и затем создайте в нем shell скрипт командой

touch backup_db_mysql.sh


Сделаем этот файл запускаемым командой chmod:

sudo chmod +x backup_db_mysql.sh

Откройте файл backup_db_mysql.sh на редактирование и добавьте в него следующий скрипт

backup_db_mysql.sh

export BACKUP_NAME=dbbackup
export DB_BACKUP=`pwd`/backup/$BACKUP_NAME
#Если база данных находится на локальной машине, что бывает часто,
#то скорее всего HOST_NAME будет localhost
export HOST_NAME=YOUR_HOST_NAME
export USER_NAME=YOUR_USER_NAME
export DB_NAME=YOUR_DATABASE_NAME
 
# Количество бэкапов в очереде
counter=10
index=$counter
 
# Проходим очередь бэкапов, начиная с головы очереди (то есть с самой старой версии)
while [ $index -ge 1 ]
do
    # Удаляем ту версию бэкапа, которая достигла головы очереди бэкапов
    # это когда index == counter
    if [ $index -eq $counter -a -f "$DB_BACKUP""$index.sql" ];
    then
        rm -f "$DB_BACKUP""$index.sql"
    else
        # Все предыдущие версии бэкапов просто сдвигаем на одну позицию
        # к голове очереди бэкапов. Это когда index < counter
        if [ $index -lt $counter -a -f "$DB_BACKUP""$index.sql" ];
        then
            mv "$DB_BACKUP""$index.sql" "$DB_BACKUP"$(( $index + 1 ))".sql"
        fi
    fi
    # Переходим на одну позицию в сторону хвоста очереди
    index=$(( $index - 1))
done
# Сам бэкап, который перезапишит самый последний бэкап в очереде (то есть тот, который в хвосте),
# который должен быть уже перемещен на одину позицию в сторону головы очереди
mysqldump -h $HOST_NAME -u $USER_NAME -p $DB_NAME > "$DB_BACKUP"'1.sql'

Скрипт готов, теперь чтобы сделать бэкап базы достаточно выполнить его командой ./backup_db_mysql.sh

Warning
Тут нужно быть осторыжным при вводе пароля, если пароль будет введен не правильно, то сдвиг по очереде все равно произойдет, то есть каждый следующий бэкап перезапишся предыдущим, но в место самого последнего бэкапа в очереде будет пустой файл. Если бэкапов в очереде будет более чем три, то ничего страшного.

2. Восстановление базы данных из бэкапа

Теперь попробуем достать базу данных из бэкапа.
Для этого создадим файл, где будет скрипт который будет доставать базу из бэкапа

touch restore_db_mysql.sh

И сделаем его запускаемым:

sudo chmod +x restore_db_mysql.sh

Откроем файл restore_db_mysql.sh на редактирование и добавим в него такой скрипт:

restore_db_mysql.sh

export DB_BACKUP=/path/to/backup
#Если база данных находится на локальной машине, что бывает часто,
#то скорее всего HOST_NAME будет localhost
export HOST_NAME=YOUR_HOST_NAME
export USER_NAME=YOUR_USER_NAME
export DB_NAME=YOUR_DATABASE_NAME

# Восстанавливаем базу из хватста очереди бэкапов
mysql -h $HOST_NAME -u $USER_NAME -p -f $DB_NAME < $DB_BACKUP

Поделиться в социальных сетях

Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *