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