Архивиране на MySQL бази данни

Лесно е да направите копие на всички статични HTML и други документи. Също така е лесно периодично да "оставяте настрана" и копия на скриптове. Много по-трудна е задачата за създаване на копие (по-долу архивиране) на такава динамична структура като база данни MySQL. Основните трудности, които възникват за администратора на хостван сайт, обикновено са следните:

Как да направите копие на MySQL база данни

Има програма mysqldump, която ви позволява бързо и лесно да създавате резервни копия на MySQL бази данни. Mysqldump също ви позволява да правите много фини корекции, за да контролирате процеса на създаване на резервни копия на бази данни или отделни таблици. Можем да кажем, че mysqldump е основният инструмент, който ще трябва да използвате, ако архивирате MySQL.

Нека вземем проста задача, която ще решим с помощта на mysqldump и ще разберем какво е какво. Има хостинг, има база данни DBNAME, която ви е била предоставена от доставчика на хостинг услуги. Има HOST хост, който хоства MySQL сървъра, ВХОД за влизане в него, PORT порт, на който сървърът работи, и PASS парола. Разполагайки с всички тези данни, можете да изхвърлите (изхвърлите, копирате) базата данни DBNAME по този начин (изпълнете в обвивката на unix):

След като изпълним тази команда във файла dump.txt, ще имаме копие на базата данни MySQL DBNAME. Това ще се случи само ако, разбира се, зададете всички параметри правилно, в съответствие с настройките на вашия хостинг. Трябва да кажа веднага, че програмата mysqldump извежда резултатите директно на вас на STDIN, тоест на екрана. Трябва да пренасочите изхода към някакъв файл. Например, както в този случай - "> dump.txt". Ако това не бъде направено и базата данни е голяма, ще получите на екрана всички онези мегабайта информация, която тя съдържа.

Нека поговорим малко за това какво прави mysqldump. Тази програма създава скрипт за възстановяване на вашите данни. Тоест изходът на mysqldump не е някакви абстрактни и нечетливи двоични данни, а смислен текст на скрипта. Например, ако вашата база данни е имала тест на таблица, в който е имало поле test2 с цяло число на типа данни и един запис "1111", тогава mysqldump ще създаде нещо подобно:

По този начин mysqldump ще "опише" всичките ви таблици и ще създаде INSERT команди за възстановяване на данните в таблиците. И така, пренасочваме изхода на mysqldump към текстов файл, който след това ще използваме за възстановяване. Помислете и за този процес - пресъздаване на база данни от резервно копие.

За възстановяване ще използваме стандартната програма mysql, която е включена в MySQL заедно с mysqldump. Да приемем, че имаме резервно копие във файла dump.txt. Трябва да го възстановим до работеща база. Например случайно изтрихме нашата база данни и сега се опитваме да разрешим този проблем. Ние правим това:

Тоест, ние принуждаваме клиента на mysql да се свърже със сървъра и да изпълни скрипта, който имаме. След изпълнението на тази команда във вашата база данни ще се появят таблици и данни от резервното копие. Имайте предвид, че данните просто ще бъдат възстановени чрез скрипт от dump.txt. Тоест, ако таблиците, споменати в дъмп на база данни, вече съществуват и имат различна структура, тогава очевидно ще възникне грешка. Просто погледнете скрипта и производствената база и си представете, че ръчно изпълнявате команди от скрипта. Ако сте сигурни, че всичко ще се оправи - не се колебайте да възстановите.