Одно из самых нудных, но жизненно необходимых занятий - это создание бэкапов. И хвала небесам, если получается настроить автоматический бэкап по расписанию. В этой статье описан способ создания бэкапов базы mysql по расписанию cron.
Для бэкапа используем команду mysqldump. Обычный бэкап с помощью её "урезанной" версии делается так:
mysqldump -u alexgur -p db_alexgur > db_alexgur_backup_file
При вводе этой команды будет запрошен пароль от базы db_alexgur для пользователя alexgur. Но чтобы сделать автоматический бэкап необходимо прописать пароль внутри команды, поэтому используем mysqldump с ключами. Заодно сделаем сохранение времени создания бэкапа в названии файла и зададим папку, куда будет сохраняться бэкап. Команда будет выглядеть так:
mysqldump -u alexgur --password='ПАРОЛЬ' --databases db_alexgur > /root/db_alexgur_$(date +%Y%m%d_%H%M%S).sql.gz
В явном виде задали папку для сохранения бэкапа "/root/". Можно изменить на любую другую.
Набор символов $(date +%Y%d%m_%H%M%S) выводит дату создания в названии файлов. От года до секунды. Такое название бэкапов даёт возможность отсортировать файлы по дате создания с помощью сортировки по названию. Что удобно для поиска последнего бэкапа.
Если необходимо выбрать хост, то надо добавить ключ -h. По умолчанию он равен localhost.
Как показывает практика, дампы баз хорошо поддаются сжатию. Поэтому добавим gzip сжатие бэкапов для экономии места на диске.
mysqldump -u alexgur --password='ПАРОЛЬ' -h localhost --databases db_alexgur | gzip > /root/db_alexgur_$(date +\%Y\%m\%d_\%H\%M\%S).sql
В итоге, в /etc/crontab можно прописать выполнение бэкапа. К примеру, раз в 7 дней, в полночь:
0 0 */7 * * root mysqldump -u alexgur --password='ПАРОЛЬ' -h localhost --databases db_alexgur | gzip > /root/db_alexgur_$(date +\%Y\%m\%d_\%H\%M\%S).sql.gz