Для создания бэкапов базы данных 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