autobackupmysql.sh автоматизируем бэкап Mysql | FreeBSD, MYSQL
Процесс резервного копирования разделяют на два типа – условно скажем – на физический и логический. Физический применим в таблицам типа myisam – когда мы можем просто заблокировать таблицы и скопировать файлы (MYD, MYI, frm). Этот тип выполняется к примеру скриптом mysqlhotcopy.
/usr/home/mysqlhotcopy.sh -u user -p pass --allowold --keepold --quiet database /path_to_back
Для «логического» бэкапа (бэкапа который генерирует логическую труктуру таблиц и запросы к базе, способные воссоздать таблицы) используется mysqldump.
mysqldump -uUSER -pPASS --databases base_name > /path_to_back/database.sql
Собственно для второго типа бэкапа есть скрипт autobackupmysql.sh – клон скрипта automysqlbackup.sh. Есть в портах, требует bash.
Поскольку в сети информации описывающей этот скрипт не нашел – пишем для себя.
Ставим из портов:
#cd /usr/ports/databases/autobackupmysql
#make install clean
В итоге получаем скрипт autobackupmysql.sh в /usr/local/sbin. В самом скрипте – инструкции по использованию. Если у нас есть конфиг /usr/local/etc/autobackupmysql.conf
значения переменных скрипт возьмет из конфига. Создаем:
#touch /usr/local/etc/autobackupmysql.conf
Пишем в файл:
USERNAME='user'
PASSWORD='pass'
DBHOST='localhost'
DBNAMES="base_name"
BACKUPDIR="/backup"
MAILCONTENT="log"
MAXATTSIZE="4000"
MAILADDR="your@mail.com"
Или файл конфига не создаем а правим значения переменных прямо в скрипте.
Запускаем.
#autobackupmysql.sh
И получаем ошибку:
###### WARNING ######
Errors reported during AutoBackupMySQL execution.. Backup failed
Error log below..
/usr/local/sbin/autobackupmysql.sh: line 556: [: 5: unary operator expected
Правим скрипт – добавляем символы [ ] в строку 556.
Было:
# Weekly Backup
if [ $DNOW = $DOWEEKLY ]; then
Стало:
# Weekly Backup
if [[ $DNOW = $DOWEEKLY ]]; then
Запускаем ещё раз. Скрипт создаст папки daily, weekly, monthly, и дампы указанных нами баз с точными временными метками. Кроме этого – пришлет отчет о проделанной работе на почту.