Вырашыў цалкам адмовіцца ад выкарыстання ispmanager, бо рэсурсы займае, а выкарыстоўваецца толькі для аднаго - рэзервовага капіявання дадзеных. Але раз гэта можна зрабіць ўласнаручна, то трымаць панэль на сэрвэры для дзесяці сайтаў наогул няма сэнсу.
А таму найпершай задачай становіцца стварэнне рэзервовых копій баз дадзеных mysql. Базы невялікія па памеры, таму будзе выкарыстоўвацца самы найпросты варыянт бэкапаў - стварэнне архіваў і размяшчэнне іх у пэўнай тэчцы сервера.
Вядома, куды надёжней было б адпраўляць бэкап па sftp куды-небудзь на іншы сервер у іншым дата-цэнтры (і краіне, чаго ўжо там), але паколькі мае сайты мяняюцца пару разоў у месяц, то запампоўка бэкапаў раз у два дні нельга назваць цяжкім заняткам. :)
Вопыту ў напісанні скрыптоў на Bash у мяне не было да гэтага моманту. Але разабрацца не склала працы, улічваючы шматлікія прыклады скрыптоў рэзервовага капіявання mysql на розных сайтах аб адміністраванні сервераў.
Сам скрыпт mysqlbackup.sh:
#! / Bin / bash # ініцыялізуючы зменныя TMPDIR = "sqlfiles" BACKUPDIR = "/ storage" USER = "root" PASS = "xxx" TIMEY = $ (date +% Y-% m-% d) # Правяраем наяўнасць тэчкі для бэкапаў if [! -d "$ BACKUPDIR"]; then mkdir -m 0700 "$ BACKUPDIR" fi # Правяраем наяўнасць часовага каталога if [! -d "$ BACKUPDIR / $ TMPDIR"]; then mkdir -m 0700 "$ BACKUPDIR / $ TMPDIR" fi # Захоўваем копіі cd "$ BACKUPDIR / $ TMPDIR" for database in `mysql -s -r -e 'SHOW DATABASES' | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v mysql`; do mysqldump $ database> $ database.sql; done # Создаём архіў cd "$ BACKUPDIR" tar -cjf databases - "$ TIMEY" .tbz2 "$ TMPDIR" chmod 0600 databases - "$ TIMEY" .tbz2 # Выдаляны часовую тэчку rm - r $ TMPDIR echo "Базы дадзеных захаваны!" exit 1
Праца з mysql выконваецца непасрэдна ад карыстальніка root, так як ён мае доступ адразу да ўсіх баз дадзеных.
З бэкапу выключаюцца базы дадзеных information_schema, mysql, performance_schema. Затым усе базы змяшчаюцца ў bzip2-архіў і складуюцца ў пэўную тэчку, адкуль іх потым можна спампаваць.
У планавальніку Cron прапісваецца заданне на выкананне скрыпту раз у суткі, напрыклад, у гадзіну ночы.
00 01 * * * sh ~ / mysqlbackup.sh
Калі ў наладах крона зададзены верны email, то на пошту прыйдзе справаздачу, у якім будуць пералічаны захаваныя базы дадзеных.
PS Таксама можна ствараць рэзервовыя копіі і некалькі разоў на дзень. Для гэтага трэба ў імя архіва ўказваць яшчэ і час стварэння, каб файл не перазапісваць.
Нешта ў скрыпце нідзе не выкарыстоўваецца пароль да mysql
Дакладна, выпушчаны момант. Але толькі таму, што ў сябе выкарыстоўваю файл .my.cnf у хатняй тэчцы root. Там прапісаны лагін і пароль ў такім фармаце:
Трэба было дадаць гэта ў пост раней. :)
Дзякуй, даведаўся пра my.cnf :)
Мой варыянт рэалізацыі, можа каму спатрэбіцца:
https://github.com/wdda/backupper_mysql