MySQL е система за управление на релационни бази данни с отворен код (СУБД), която често се внедрява в широк спектър от контексти. Най-често се разгръща като част от стека LAMP. Системата за бази данни също е лесна за използване и силно преносима и е изключително ефективна в контекста на много приложения. Тъй като MySQL често е централизирано хранилище на данни за големи количества критични за мисията данни, правенето на редовно архивиране на вашата MySQL база данни е една от най-важните задачи за възстановяване при бедствия, които системният администратор може да изпълнява. Това ръководство разглежда редица различни методи за създаване на резервни копия на вашата база данни, както и възстановяване на бази данни от резервни копия.
Преди да започнете процеса на инсталиране, предполагаме, че сте следвали стъпките, описани в нашата настройка и защита на изчислителен екземпляр. Освен това ще трябва да инсталирате базата данни MySQL. Цялата конфигурация ще се извърши в терминална сесия; уверете се, че сте влезли във вашия Linode като root чрез SSH. Ако сте нов в администрирането на сървъри на Linux, може да се интересувате от нашето въведение в ръководството за концепции на Linux, ръководството за начинаещи и ръководството за основите на администрирането.
Методология за архивиране
Повечето архиви на MySQL бази данни в това ръководство се извършват с помощта на mysqldump
инструмент, който се разпространява с инсталацията на MySQL сървър по подразбиране. Препоръчваме ви да използвате mysqldump
когато е възможно, защото често това е най-лесният и ефикасен начин за правене на резервни копия на база данни. Други методи, описани подробно в това ръководство, са предоставени за ситуации, когато нямате достъп до mysqldump
инструмент, както в среда за възстановяване като Finnix или в ситуации, при които локалният екземпляр на MySQL сървъра няма да се стартира.
Независимо от това, това ръководство предоставя обикновен преглед на mysqldump
инструмент, тъй като има много опции за и употреби на mysqldump
които попадат извън обхвата на този документ. Насърчаваме ви да се запознаете с всички процедури, обхванати в този документ, и да продължите своето проучване на mysqldump
извън описаните тук случаи. Не забравяйте да отбележите следното:
*.sql
файлове, създадени сmysqldump
може да бъде възстановен по всяко време. Можете дори да редактирате базата данни.sql
файлове ръчно (с голямо внимание!) с помощта на любимия ви текстов редактор.- Ако вашите бази данни използват само механизма за съхранение MyISAM, можете да замените
mysqldump
команда с по-бързияmysqlhotcopy
.
Създаване на резервни копия на цялата система за управление на база данни (СУБД)
Често е необходимо да се направи резервно копие (или „изхвърляне“) на цялата система за управление на база данни заедно с всички бази данни и таблици, включително системните бази данни, които съдържат потребители, разрешения и пароли.
Опция 1:Създайте резервни копия на цялата система за управление на база данни с помощта на помощната програма mysqldump
Най-прекият метод за създаване на единно последователно архивиране на цялата система за управление на база данни MySQL използва mysqldump
помощна програма от командния ред. Синтаксисът за създаване на дъмп на база данни с текущо времеви печат е както следва:
mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p
Тази команда ще ви подкани за парола, преди да започнете архивирането на базата данни в текущата директория. Този процес може да отнеме от няколко секунди до няколко часа в зависимост от размера на вашите бази данни.
Автоматизирайте този процес, като добавите ред към crontab
:
0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD
За примера по-горе използвайте which mysqldump
за да потвърдите правилния път към командата и заменете root
с потребителя на mysql, от който искате да стартирате архивиране, и PASSWORD
с правилната парола за този потребител.
Забележка В примера с crontab се уверете, че няма място между флага -P и вашата парола.
Опция 2:Създаване на резервни копия на цяла СУБД с помощта на копия на MySQL Data Directory
Докато mysqldump
инструментът е предпочитаният метод за архивиране, има няколко случая, които изискват различен подход. mysqldump
работи само когато сървърът на базата данни е достъпен и работи. Ако базата данни не може да бъде стартирана или хост системата е недостъпна, можем директно да копираме базата данни на MySQL. Този метод често е необходим в ситуации, в които имате достъп само до среда за възстановяване като Finnix с дисковете на вашата система, монтирани в тази файлова система. Ако опитвате този метод в самата си система, уверете се, че базата данни не бягане. Издайте команда, подобна на следната:
/etc/init.d/mysqld stop
В повечето версии на MySQL на дистрибуцията, директорията с данни се намира в /var/lib/mysql/
директория. Ако тази директория не съществува, проверете /etc/mysql/my.cnf
файл за път към директорията с данни. Като алтернатива можете да търсите във вашата файлова система за директорията с данни, като издадете следната команда:
find / -name mysql
След като намерите вашата MySQL директория с данни, можете да я копирате на място за архивиране. Следният пример предполага, че директорията с данни на MySQL се намира в /var/lib/mysql/
:
cp -R /var/lib/mysql/* /opt/database/backup-1266871069/
В този случай сме копирали рекурсивно съдържанието на директорията с данни (напр. /var/lib/mysql/
) към директория в /opt/
йерархия (напр. /opt/database/backup-1266871069/
). Тази директория трябва да съществува преди да започне операцията за копиране. Помислете за следната последователност от операции:
/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/
Тези команди започват със спиране на демона на сървъра MySQL, след което се създава директория с име /opt/database/backup-1266872202/
и извършване на рекурсивно копие на директорията с данни. Имайте предвид, че избрахме да използваме backup-[time_t]
конвенция за именуване за нашите примери. Заменете горните пътища за предпочитаната от вас организация и схема за именуване. cp
командата не произвежда изход и може да отнеме известно време за завършване в зависимост от размера на вашата база данни. Не се тревожете, ако отнеме известно време за завършване. Когато операцията по копиране приключи, може да искате да архивирате директорията с данни в архив „tar“, за да улесните управлението и придвижването между машините. Издайте следните команди, за да създадете архива:
cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz
След като архивът е създаден, можете лесно да прехвърлите файла по най-удобния за вас начин. Не забравяйте да рестартирате отново демона на MySQL сървъра, ако е необходимо:
/etc/init.d/mysql start
Създаване на резервни копия на една база данни
В много случаи не се изисква създаване на резервно копие на целия сървър на база данни. В някои случаи, като надграждане на уеб приложение, инсталаторът може да препоръча да направите резервно копие на базата данни, в случай че надстройката се отрази неблагоприятно на базата данни. По същия начин, ако искате да създадете „сметище“ на конкретна база данни, за да преместите тази база данни на друг сървър, може да помислите за следния метод.
Когато е възможно, използвайте mysqldump
инструмент за експортиране на „сметище“ на една база данни. Тази команда ще прилича на следното:
mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql
Горният пример е като примера в предишния раздел, с изключение на използването на --all-databases
опция, този пример посочва конкретно име на база данни. В този случай създаваме резервно копие на danceLeaders
база данни. Формата на тази команда в по-проста нотация е следната:
mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql
За допълнителен пример ще архивираме базата данни с име customer
като използвате основния акаунт в базата данни, като издадете следната команда:
mysqldump -u root -p -h localhost customer > customerBackup.sql
Ще бъдете подканени за парола преди mysqldump
започва процеса на архивиране. Както винаги архивният файл, в този случай customerBackup.sql
, се създава в директорията, където издавате тази команда. mysqldump
командата може да завърши за няколко секунди или няколко часа в зависимост от размера на базата данни и натоварването на хоста при стартиране на архивирането.
Създаване на резервни копия на една таблица
Опция 1:Създаване на резервни копия на една таблица с помощта на помощната програма mysqldump
Тази операция, подобно на предишни употреби на mysqldump
помощна програма в този документ ви позволява да създадете резервно копие на една таблица с база данни. Продължавайки нашите предишни примери, следният пример ви позволява да архивирате таблицата usernameRecords
в danceLeaders
база данни.
mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql
Горният пример е като примера в предишния раздел, с изключение на това, че сме добавили спецификация на името на таблицата към командата, за да посочим името на таблицата, която искаме да архивираме. Формата на тази команда в по-проста нотация е следната:
mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql
За допълнителен пример ще архивираме таблицата с име „поръчка“ от базата данни с име customer
като използвате основния акаунт в базата данни, като издадете следната команда:
mysqldump -u root -p -h localhost customer order > customerBackup-order.sql
Ще бъдете подканени за парола преди mysqldump
започва процеса на архивиране. Както винаги, архивният файл (в този случай customerBackup.sql
) се създава в директорията, където издавате тази команда. mysqldump
командата може да завърши за няколко секунди или няколко часа в зависимост от размера на базата данни и натоварването на хоста при стартиране на архивирането.
Вариант 2:Създаване на резервни копия на една таблица с помощта на MySQL клиента и изявление OUTFILE
Самият MySQL клиент има някои възможности за архивиране. Полезно е, когато вече сте влезли и не искате да излизате от текущата сесия. Ако използвате система на живо и не можете да си позволите престой, трябва да помислите за временно заключване на таблицата, на която архивирате.
Имайте предвид, че когато архивирате една таблица с MySQL клиента, структурата на тази таблица не се поддържа в архива. При използване на този метод се записват само самите данни.
-
Преди да започнем, препоръчваме да извършите
LOCK TABLES
на таблиците, които възнамерявате да архивирате, последвано отFLUSH TABLES
за да се гарантира, че базата данни е в последователно пространство по време на операцията по архивиране. Трябва ви само заключване за четене. Това позволява на други клиенти да продължат да заявяват таблиците, докато правите копие на файловете в директорията с данни на MySQL. За заключване на „четене“, синтаксисът наLOCK TABLES
изглежда по следния начин:1
LOCK TABLES tableName READ;
За да извършите
LOCK TABLES
наorder
таблица наcustomer
база данни, издайте следната команда:mysql -u root -p -h localhost
След това ще бъдете подканени за root парола. След като сте въвели идентификационните данни на базата данни, ще стигнете до подканата на mysql клиента. Издайте следната команда, за да заключите
order
таблица вcustomer
база данни (завършващият;
се изисква за MySQL команди):1 2 3
USE customer; LOCK TABLES order READ; FLUSH TABLES;
-
Сега можем да започнем операцията по архивиране. За да създадете резервно копие на една таблица с помощта на MySQL клиента, ще трябва да сте влезли във вашата MySQL СУБД. Ако в момента не сте влезли, можете да влезете със следната команда:
mysql -u root -p -h localhost
Ще бъдете подканени за парола. След като въведете правилната парола и сте в подканата на MySQL клиента, можете да използвате
SELECT * INTO OUTFILE
изявление. Синтаксисът на този израз изглежда по следния начин:1
SELECT * INTO OUTFILE 'file_name' FROM tbl_name;
В този пример ще създадем резервно копие на данните от
order
таблица наcustomer
база данни. Издайте следната команда, за да започнете процедурата за архивиране (завършващият;
се изисква за MySQL команди):1 2 3 4 5
USE customer; LOCK TABLES order READ; FLUSH TABLES; SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order; UNLOCK TABLES;
customerOrderBackup.sql
файл ще бъде създаден в съответната поддиректория с данни в директорията с данни на MySQL. Директорията с данни на MySQL обикновено е/var/lib/mysql/
. В този примерOUTFILE
ще бъде/var/lib/mysql/customer/customerOrderBackup.sql
. Местоположението на тази директория и файл обаче може да варира в различните дистрибуции на Linux. Ако не можете да намерите своя архивен файл, можете да го потърсите със следната команда:find / -name customerOrderBackup.sql
-
След като завършите операцията по архивиране, ще искате да отключите таблиците, като използвате следната команда в MySQL клиента. Това ще върне вашата база данни към нормалната й работа. Влезте в MySQL клиента с първата команда, ако в момента не сте влезли и след това издайте втората команда:
mysql -uroot -p -h localhost
1
UNLOCK TABLES;
От този момент можете да продължите да използвате вашата база данни както обикновено.
Съображения за ефективна стратегия за архивиране
Създаването на резервни копия на вашата MySQL база данни трябва да бъде редовна и планирана задача. Може да помислите за планиране на периодични архиви с помощта на cron
, mysqldump
и/или mail
. Разгледайте нашата документация за повече информация относно cron. Внедряването на автоматизирано решение за архивиране може да помогне за минимизиране на времето за престой в ситуация на възстановяване след бедствие.
Не е необходимо да влизате като root, когато архивирате бази данни. Потребител на MySQL с четене (напр. SELECT
) разрешението може да използва и двата mysqldump
и mysql
(напр. MySQL клиента) инструменти за правене на архиви, както е описано по-долу. Като обичайна практика препоръчваме да не използвате MySQL root
потребител, когато е възможно, за да сведе до минимум рисковете за сигурността.
Може да искате да обмислите инкременталните архиви като част от дългосрочен план за архивиране на база данни. Въпреки че този процес не е обхванат тук, препоръчваме ви да разгледате ресурса Методи за архивиране на MySQL база данни за повече информация.
Възстановяване на цяла СУБД от архивиране
Архив, който не може да бъде възстановен, е с минимална стойност. Препоръчваме да тествате редовно резервните си копия, за да сте сигурни, че те могат да бъдат възстановени, в случай че може да се наложи да възстановите от архивни копия. Когато използвате възстановяване на резервни копия на вашата MySQL база данни, методът, който използвате, зависи от метода, който сте използвали за създаване на въпросното архивиране.
Вариант 1:Възстановяване на цяла DBMS с помощта на MySQL клиента и архивите, създадени от mysqldump
Преди да започнете процеса на възстановяване, този раздел предполага, че вашата система работи с новоинсталирана версия на MySQL без съществуващи бази данни или таблици. Ако вече имате бази данни и таблици във вашата MySQL СУБД, моля, направете резервно копие, преди да продължите, тъй като този процес ще замени текущите MySQL данни.
Можете лесно да възстановите цялата си СУБД с помощта на mysql
команда. Синтаксисът за това ще прилича на следния:
mysql -u [username] -p [password] < backupFile.sql
В този случай ние просто възстановяваме цялата СУБД. Командата ще изглежда по следния начин:
mysql -u root -p < 1266861650-backup-all.sql
Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като бъдат предоставени правилните идентификационни данни, процесът на възстановяване ще започне. Тъй като този процес възстановява цяла СУБД, може да отнеме от няколко секунди до много часове.
Опция 2:Възстановяване на цяла DBMS с помощта на MySQL файлове с данни, копирани директно от Директория с данни на MySQL
Преди да започнете процеса на възстановяване, този раздел предполага, че вашата система работи с новоинсталирана версия на MySQL без съществуващи бази данни или таблици. Ако вече имате бази данни и таблици във вашата MySQL СУБД, моля, направете резервно копие, преди да продължите, тъй като този процес ще замени текущите MySQL данни.
-
Ако имате пълен архив на вашата директория с данни MySQL (обикновено
/var/lib/mysql
), можете да го възстановите от командния ред. За да осигурите успешно възстановяване, първо трябва да спрете демона на MySQL сървъра и да изтриете текущите данни в директорията с данни на MySQL./etc/init.d/mysql stop rm -R /var/lib/mysql/*
-
В следващия пример резервното копие на директорията с данни на MySQL се намира в
/opt/database/backup-1266872202
директория. Ако сте направили tarball на директорията с данни, когато сте архивирали вашата DBMS директория с данни, ще трябва да извлечете файловете от архива, преди да копирате със следните команди:cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/ cd /var/lib/mysql tar xzvf mysqlBackup-1266872202.tar.gz
-
Преди да можем да рестартираме процеса на база данни MySQL, трябва да се уверим, че разрешенията са зададени правилно в
/var/lib/mysql/
директория. За този пример приемаме, че демонът на MySQL сървъра работи като потребителmysql
с групатаmysql
. За да промените разрешенията за директорията с данни, изпълнете следната команда:chown -R mysql:mysql /var/lib/mysql
-
Променете
mysql:mysql
част от тази команда, ако вашият MySQL екземпляр работи с различни потребителски и групови разрешения. Формата на този аргумент е[user]:[group]
. Накрая можем да стартираме демона на сървъра MySQL със следната команда:/etc/init.d/mysql start
Ако получите грешка, подобна на следната:
/usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Ще трябва да намерите стария
debian-sys-maint
паролата на потребителя в/etc/mysql/debian.cnf
и след това променете новияdebian-sys-maint
потребителска парола към него. Можете да видите старата парола с помощта наcat
:cat /etc/mysql/debian.cnf | grep password
Копирайте (или запомнете) паролата. След това ще трябва да промените новия
debian-sys-maint
потребителска парола. Можете да направите това, като влезете като root потребител на MySQL и издадете следната команда (къдетое паролата на стария debian-sys-maint
потребител):1
GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
-
След това ще трябва да рестартирате MySQL със следната команда:
/etc/init.d/mysql restart
След като MySQL сървърът стартира успешно, ще искате да тествате вашата MySQL СУБД и да се уверите, че всички бази данни и таблици са възстановени правилно. Препоръчваме също да одитирате вашите регистрационни файлове за потенциални грешки. В някои случаи MySQL може да стартира успешно въпреки грешки в базата данни.
Възстановяване на една база данни от архивиране
В случаите, когато сте създали резервно копие само за една база данни или трябва да възстановите само една база данни, процесът на възстановяване е малко по-различен.
Преди да започнете процеса на възстановяване, този раздел предполага, че вашата система работи с новоинсталирана версия на MySQL без съществуващи бази данни или таблици. Ако вече имате бази данни и таблици във вашата MySQL СУБД, моля, направете резервно копие, преди да продължите, тъй като този процес ще замени текущите MySQL данни.
-
За да възстановите една база данни с помощта на
mysql
команда, първо подгответе дестинационната база данни. Влезте във вашия (нов) сървър на база данни MySQL, като използвате MySQL клиента:mysql -u root -p -h localhost
-
Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като предоставите правилните идентификационни данни, трябва да създадете целевата база данни. В този случай
customer
базата данни ще бъде възстановена:1
CREATE DATABASE customer;
-
Както при всички MySQL изрази, не пропускайте последното точка и запетая (напр.
;
) в края на всяка команда. В зависимост от вашето разгръщане може да се наложи да създадете нов потребител на MySQL или да пресъздадете предишен потребител с достъп до новосъздадената база данни. Командата за създаване на нов потребител на MySQL приема следната форма:1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
В следващия пример ще създадем потребител с име
customeradmin
:1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Сега ще дадем
customeradmin
привилегии за достъп доcustomer
база данни. Командата за предоставяне на привилегии на база данни за конкретен потребител има следната форма:1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
-
За целите на следващия пример ще дадем
customeradmin
пълен достъп доcustomer
база данни. Издайте следната команда в MySQL клиента:1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Може да се наложи да посочите различни разрешения за достъп в зависимост от изискванията на вашето внедряване. Консултирайте се с официалната документация за изявлението GRANT на MySQL. След като базата данни на местоназначението и потребителят на MySQL са създадени, можете да затворите MySQL клиента със следната команда:
quit
-
Вече можете да използвате
mysql
команда за възстановяване на вашия SQL файл. Формата на тази команда прилича на следното:mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
В следващия пример ще възстановим customer
база данни от SQL архивен файл с име customerBackup.sql
(обърнете специално внимание на <
символ в тази команда):
mysql -u root -p -h localhost customer < customerBackup.sql
Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като бъдат предоставени правилните идентификационни данни, процесът на възстановяване ще започне. Продължителността на тази операция зависи от натоварването на вашата система и размера на базата данни, която възстановявате. Може да завърши за няколко секунди или може да отнеме много часове.
Възстановяване на една таблица от архивиране
Вариант 1:Възстановяване на една таблица с помощта на MySQL и архиви, създадени от mysqldump
-
Преди да започнем процеса на възстановяване, приемаме, че вашият MySQL екземпляр вече има съществуваща база данни, която може да получи таблицата, която искате да възстановите. Ако вашият MySQL екземпляр няма необходимата база данни, ще трябва да я създадем, преди да продължим. Първо, влезте във вашия MySQL екземпляр със следната команда:
mysql -u root -p -h localhost
-
Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като предоставите правилните идентификационни данни, трябва да създадете целевата база данни. За целите на този пример ще създадем
customer
база данни.1
CREATE DATABASE customer;
След това излезте от
mysql
подкана:quit
Ако вече имате необходимата база данни, можете спокойно да пропуснете горната стъпка. За да продължите с възстановяването на таблицата, издайте команда в следната форма:
mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
-
За следващия пример ще възстановим
order
таблица в съществуващияcustomer
база данни от SQL архивен файл с имеcustomerOrderBackup.sql
. Внимавайте да използвате<
оператор в следната команда:mysql -u root -p -h localhost customer < customerOrderBackup.sql
Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като бъдат предоставени правилните идентификационни данни, процесът на възстановяване ще започне. Продължителността на тази операция зависи от натоварването на вашата система и размера на таблицата, която възстановявате. Може да завърши за няколко секунди или може да отнеме много часове.
Опция 2:Възстановяване на единична таблица чрез клиента на MySQL и изявление INFILE за архивиране, създадено с OUTFILE
-
Преди да започнем процеса на възстановяване, приемаме, че вашият MySQL екземпляр вече има съществуваща база данни, която може да получи таблицата, която искате да възстановите. Ако вашият MySQL екземпляр няма необходимата база данни, ще трябва да я създадем, преди да продължим. Първо, влезте във вашия MySQL екземпляр със следната команда:
mysql -u root -p -h localhost
-
Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като предоставите правилните идентификационни данни, трябва да създадете целевата база данни. За целите на този пример ще създадем
customer
база данни.1
CREATE DATABASE customer;
След това излезте от
mysql
подкана:quit
-
Резервното копие на данните, използвано в този случай, е създадено с помощта на
SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName
команда. Този тип архивиране запазва само самите данни, така че структурата на таблицата трябва да бъде пресъздадена. За да възстановите една таблица от MySQL клиента, първо трябва да подготвите целевата база данни и таблица. Влезте във вашия (нов) MySQL екземпляр, като използвате MySQL клиента:mysql -u root -p -h localhost
-
Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като бъдат предоставени правилните идентификационни данни, трябва да създадете целевата база данни. В този случай ще създадем
customer
база данни. Издайте следното изявление:1
CREATE DATABASE customer;
-
Не забравяйте, че точката и запетаята (напр.
;
) след всяко твърдение са задължителни. Сега трябва да създадете таблицата на дестинацията с правилната структура. Типовете данни на полетата на таблицата трябва да отразяват тези на таблицата, откъдето произхожда архивирането. В този пример ще възстановимorder
таблица наcustomer
база данни. Има 2 полета вorder
таблица,custNum
с тип данниINT
иorderName
с тип данниVARCHAR(20)
; структурата на вашата таблица ще бъде различна:1 2
USE customer; CREATE TABLE order (custNum INT, orderName VARCHAR(20));
-
В зависимост от вашето разгръщане може да се наложи да създадете нов потребител на MySQL или да пресъздадете предишен потребител с достъп до новосъздадената база данни. Командата за създаване на нов потребител на MySQL приема следната форма:
1
CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
-
В следващия пример ще създадем потребител с име
customeradmin
:1
CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
-
Сега ще дадем
customeradmin
привилегии за достъп доcustomer
база данни. Командата за предоставяне на привилегии на база данни за конкретен потребител има следната форма:1
GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
За целите на следващия пример ще дадем
customeradmin
пълен достъп доcustomer
база данни. Издайте следната команда в MySQL клиента:1
GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
-
Може да се наложи да посочите различни разрешения за достъп в зависимост от изискванията на вашето внедряване. Консултирайте се с официалната документация за изявлението GRANT на MySQL. След като таблицата и потребителят са създадени, можем да импортираме архивните данни от архивния файл, като използваме
LOAD DATA
команда. Синтаксисът прилича на следния:1
LOAD DATA INFILE '[filename]' INTO TABLE [tableName];
В следващия пример ще възстановим данни от таблица от файл с име
customerOrderBackup.sql
. Когато MySQL клиент получи път и име на файл следINFILE
, той търси в директорията с данни на MySQL за този файл. Ако името на файлаcustomerOrderBackup.sql
беше даден, пътят ще бъде/var/lib/mysql/customerOrderBackup.sql
. Уверете се, че файлът, от който се опитвате да възстановите, съществува, особено ако MySQL генерираFile not found
грешки. -
За да импортирате данните от
customerOrderBackup.sql
файл, намиращ се в/var/lib/mysql/
, издайте следната команда:1
LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;
Този процес може да отнеме от няколко секунди до много часове в зависимост от размера на вашата маса. Продължителността на тази операция зависи от натоварването на вашата система и размера на таблицата, която възстановявате. Може да завърши за няколко секунди или може да отнеме много часове. След като сте потвърдили, че вашите данни са импортирани успешно, можете да излезете:
quit
Повече информация
Може да пожелаете да се консултирате със следните ресурси за допълнителна информация по тази тема. Въпреки че те са предоставени с надеждата, че ще бъдат полезни, моля, имайте предвид, че не можем да гарантираме за точността или навременността на външно хостваните материали.
- Официалният уеб сайт на MySQL
- Страница Методи за архивиране на MySQL база данни
- Страница с ръководство на mysqldump
- Планирайте задачите с Cron
- Декларация за предоставяне на MySQL, официална документация