Резервное копирование базы данных MySql в Ubuntu/Debian по расписанию

Для создания бэкапов базы данных MySql необходимо установить программу mysqldump (если она не установлена), предполагается что пакеты mysql-server и mysql-client уже установлены. Установка программы mysqldump в Ubuntu / Debian осуществляется следующуей командой:

sudo apt-get install mysqldump

Для того, чтобы проверить, установилась ли программа можно выполнить следующую команду:

mysqldump -V # выводит версию установленной программы

Или:

mysqldump --version # выводит версию установленной программы

 Полный список команд программы можно посмотреть командой:

mysqldump --help

Бэкап базы данных MySql создается следующей командой:

mysqldump -uuser -ppassword mydatabase > /home/user/dump.sql

 В данном случае:

  • user - имя пользователя базы данных;
  • password - пароль пользователя базы данных;
  • mydatabase - имя базы данных, которую бэкапим;
  • /home/user/ - директория, в которой будет находится созданный бэкап;
  • dump.sql - имя файла-бэкапа.

Стоит обратить внимание, что перед логином и паролем пользователя пишутся ключи: "-u" перед логином, "-p" перед паролем, пробела между ключами и логином/паролем нет.

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

mysqldump -uuser -ppassword mydatabase > /home/user/dump-$(date +"%d.%m.%y").sql

После выполнения данной команды будет создан бекап со следующим именем: dump-08.06.2017.sql.

Для создания бэкапа MySql базы по расписанию создадим в директории пользователя sh скрипт (например, create_mysql_dump.sh) следующего содержания:

#!/bin/sh
mysqldump -uuser -ppassword mydatabase > /home/user/dump-$(date +"%d.%m.%y").sql

Теперь необходимо настроить файл заданий crontab демона cron. Cron - демон (служба) в Linux, предназначенная для выполнения заданий по расписанию.

Для того, чтобы отредактировать расписание в файле crontab, необходимо выполнить следующую команду:

crontab -e

Чтобы не запутаться, каждое задание в данном файле лучше всего начинать с новой строки, так как со временем данный файл может разрастись и в нем будет трудно разобраться. Предположим, необходимо делать резервныю копию базы данных каждый день в 5 часов утра. Для этого нужно написать следующую команду:

0 5 * * * sh /home/user/create_mysql_dump.sh

Зачастую, может оказаться необходимым выполнять какую-либо команду от суперпользователя, это можно сделать следующим образом:

0 5 * * * echo 'password' | sudo -S sh /home/user/create_mysql_dump.sh

На этом базова настройка резервного копирования MySql базы данных для Ubuntu/Debian закончена.