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изглежда по следния начин:1LOCK TABLES tableName READ;За да извършите
LOCK TABLESнаorderтаблица наcustomerбаза данни, издайте следната команда:mysql -u root -p -h localhostСлед това ще бъдете подканени за root парола. След като сте въвели идентификационните данни на базата данни, ще стигнете до подканата на mysql клиента. Издайте следната команда, за да заключите
orderтаблица вcustomerбаза данни (завършващият;се изисква за MySQL команди):1 2 3USE customer; LOCK TABLES order READ; FLUSH TABLES; -
Сега можем да започнем операцията по архивиране. За да създадете резервно копие на една таблица с помощта на MySQL клиента, ще трябва да сте влезли във вашата MySQL СУБД. Ако в момента не сте влезли, можете да влезете със следната команда:
mysql -u root -p -h localhostЩе бъдете подканени за парола. След като въведете правилната парола и сте в подканата на MySQL клиента, можете да използвате
SELECT * INTO OUTFILEизявление. Синтаксисът на този израз изглежда по следния начин:1SELECT * INTO OUTFILE 'file_name' FROM tbl_name;В този пример ще създадем резервно копие на данните от
orderтаблица наcustomerбаза данни. Издайте следната команда, за да започнете процедурата за архивиране (завършващият;се изисква за MySQL команди):1 2 3 4 5USE 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 localhost1UNLOCK 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потребител):1GRANT 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базата данни ще бъде възстановена:1CREATE DATABASE customer; -
Както при всички MySQL изрази, не пропускайте последното точка и запетая (напр.
;) в края на всяка команда. В зависимост от вашето разгръщане може да се наложи да създадете нов потребител на MySQL или да пресъздадете предишен потребител с достъп до новосъздадената база данни. Командата за създаване на нов потребител на MySQL приема следната форма:1CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]'; -
В следващия пример ще създадем потребител с име
customeradmin:1CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t'; -
Сега ще дадем
customeradminпривилегии за достъп доcustomerбаза данни. Командата за предоставяне на привилегии на база данни за конкретен потребител има следната форма:1GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]' -
За целите на следващия пример ще дадем
customeradminпълен достъп доcustomerбаза данни. Издайте следната команда в MySQL клиента:1GRANT 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база данни.1CREATE 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база данни.1CREATE DATABASE customer;След това излезте от
mysqlподкана:quit -
Резервното копие на данните, използвано в този случай, е създадено с помощта на
SELECT * INTO OUTFILE 'backupFile.sql' FROM tableNameкоманда. Този тип архивиране запазва само самите данни, така че структурата на таблицата трябва да бъде пресъздадена. За да възстановите една таблица от MySQL клиента, първо трябва да подготвите целевата база данни и таблица. Влезте във вашия (нов) MySQL екземпляр, като използвате MySQL клиента:mysql -u root -p -h localhost -
Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като бъдат предоставени правилните идентификационни данни, трябва да създадете целевата база данни. В този случай ще създадем
customerбаза данни. Издайте следното изявление:1CREATE DATABASE customer; -
Не забравяйте, че точката и запетаята (напр.
;) след всяко твърдение са задължителни. Сега трябва да създадете таблицата на дестинацията с правилната структура. Типовете данни на полетата на таблицата трябва да отразяват тези на таблицата, откъдето произхожда архивирането. В този пример ще възстановимorderтаблица наcustomerбаза данни. Има 2 полета вorderтаблица,custNumс тип данниINTиorderNameс тип данниVARCHAR(20); структурата на вашата таблица ще бъде различна:1 2USE customer; CREATE TABLE order (custNum INT, orderName VARCHAR(20)); -
В зависимост от вашето разгръщане може да се наложи да създадете нов потребител на MySQL или да пресъздадете предишен потребител с достъп до новосъздадената база данни. Командата за създаване на нов потребител на MySQL приема следната форма:
1CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]'; -
В следващия пример ще създадем потребител с име
customeradmin:1CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t'; -
Сега ще дадем
customeradminпривилегии за достъп доcustomerбаза данни. Командата за предоставяне на привилегии на база данни за конкретен потребител има следната форма:1GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'За целите на следващия пример ще дадем
customeradminпълен достъп доcustomerбаза данни. Издайте следната команда в MySQL клиента:1GRANT ALL ON customer.* TO 'customeradmin'@'localhost'; -
Може да се наложи да посочите различни разрешения за достъп в зависимост от изискванията на вашето внедряване. Консултирайте се с официалната документация за изявлението GRANT на MySQL. След като таблицата и потребителят са създадени, можем да импортираме архивните данни от архивния файл, като използваме
LOAD DATAкоманда. Синтаксисът прилича на следния:1LOAD 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/, издайте следната команда:1LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;Този процес може да отнеме от няколко секунди до много часове в зависимост от размера на вашата маса. Продължителността на тази операция зависи от натоварването на вашата система и размера на таблицата, която възстановявате. Може да завърши за няколко секунди или може да отнеме много часове. След като сте потвърдили, че вашите данни са импортирани успешно, можете да излезете:
quit
Повече информация
Може да пожелаете да се консултирате със следните ресурси за допълнителна информация по тази тема. Въпреки че те са предоставени с надеждата, че ще бъдат полезни, моля, имайте предвид, че не можем да гарантираме за точността или навременността на външно хостваните материали.
- Официалният уеб сайт на MySQL
- Страница Методи за архивиране на MySQL база данни
- Страница с ръководство на mysqldump
- Планирайте задачите с Cron
- Декларация за предоставяне на MySQL, официална документация