Skip to main content

Скрыпт рэзервовага капіявання баз Mysql ў лакальную тэчку



Вырашыў цалкам адмовіцца ад выкарыстання 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 Таксама можна ствараць рэзервовыя копіі і некалькі разоў на дзень. Для гэтага трэба ў імя архіва ўказваць яшчэ і час стварэння, каб файл не перазапісваць.



Як вы ацэніце артыкул?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Пакуль адзнак няма)
Загрузка ...

” 4 Каментары "Скрыпт рэзервовага капіявання баз Mysql ў лакальную тэчку"

    1. Дакладна, выпушчаны момант. Але толькі таму, што ў сябе выкарыстоўваю файл .my.cnf у хатняй тэчцы root. Там прапісаны лагін і пароль ў такім фармаце:

        [Client]
       user = root
       password = 12345qwerty 

      Трэба было дадаць гэта ў пост раней. :)

Дадаць каментар

Ваш e-mail не будзе апублікаваны.