Mysql
 sql >> база данни >  >> RDS >> Mysql

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

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 клиента, структурата на тази таблица не се поддържа в архива. При използване на този метод се записват само самите данни.

  1. Преди да започнем, препоръчваме да извършите 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;
  2. Сега можем да започнем операцията по архивиране. За да създадете резервно копие на една таблица с помощта на 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
    
  3. След като завършите операцията по архивиране, ще искате да отключите таблиците, като използвате следната команда в 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 данни.

  1. Ако имате пълен архив на вашата директория с данни MySQL (обикновено /var/lib/mysql ), можете да го възстановите от командния ред. За да осигурите успешно възстановяване, първо трябва да спрете демона на MySQL сървъра и да изтриете текущите данни в директорията с данни на MySQL.

    /etc/init.d/mysql stop
    rm -R /var/lib/mysql/*
    
  2. В следващия пример резервното копие на директорията с данни на 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
    
  3. Преди да можем да рестартираме процеса на база данни MySQL, трябва да се уверим, че разрешенията са зададени правилно в /var/lib/mysql/ директория. За този пример приемаме, че демонът на MySQL сървъра работи като потребител mysql с групата mysql . За да промените разрешенията за директорията с данни, изпълнете следната команда:

    chown -R mysql:mysql /var/lib/mysql
    
  4. Променете 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;
  5. След това ще трябва да рестартирате MySQL със следната команда:

    /etc/init.d/mysql restart
    

След като MySQL сървърът стартира успешно, ще искате да тествате вашата MySQL СУБД и да се уверите, че всички бази данни и таблици са възстановени правилно. Препоръчваме също да одитирате вашите регистрационни файлове за потенциални грешки. В някои случаи MySQL може да стартира успешно въпреки грешки в базата данни.

Възстановяване на една база данни от архивиране

В случаите, когато сте създали резервно копие само за една база данни или трябва да възстановите само една база данни, процесът на възстановяване е малко по-различен.

Преди да започнете процеса на възстановяване, този раздел предполага, че вашата система работи с новоинсталирана версия на MySQL без съществуващи бази данни или таблици. Ако вече имате бази данни и таблици във вашата MySQL СУБД, моля, направете резервно копие, преди да продължите, тъй като този процес ще замени текущите MySQL данни.

  1. За да възстановите една база данни с помощта на mysql команда, първо подгответе дестинационната база данни. Влезте във вашия (нов) сървър на база данни MySQL, като използвате MySQL клиента:

    mysql -u root -p -h localhost
    
  2. Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като предоставите правилните идентификационни данни, трябва да създадете целевата база данни. В този случай customer базата данни ще бъде възстановена:

    1
    
    CREATE DATABASE customer;
  3. Както при всички MySQL изрази, не пропускайте последното точка и запетая (напр. ; ) в края на всяка команда. В зависимост от вашето разгръщане може да се наложи да създадете нов потребител на MySQL или да пресъздадете предишен потребител с достъп до новосъздадената база данни. Командата за създаване на нов потребител на MySQL приема следната форма:

    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  4. В следващия пример ще създадем потребител с име customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  5. Сега ще дадем customeradmin привилегии за достъп до customer база данни. Командата за предоставяне на привилегии на база данни за конкретен потребител има следната форма:

    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
  6. За целите на следващия пример ще дадем customeradmin пълен достъп до customer база данни. Издайте следната команда в MySQL клиента:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  7. Може да се наложи да посочите различни разрешения за достъп в зависимост от изискванията на вашето внедряване. Консултирайте се с официалната документация за изявлението GRANT на MySQL. След като базата данни на местоназначението и потребителят на MySQL са създадени, можете да затворите MySQL клиента със следната команда:

     quit
    
  8. Вече можете да използвате 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

  1. Преди да започнем процеса на възстановяване, приемаме, че вашият MySQL екземпляр вече има съществуваща база данни, която може да получи таблицата, която искате да възстановите. Ако вашият MySQL екземпляр няма необходимата база данни, ще трябва да я създадем, преди да продължим. Първо, влезте във вашия MySQL екземпляр със следната команда:

    mysql -u root -p -h localhost
    
  2. Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като предоставите правилните идентификационни данни, трябва да създадете целевата база данни. За целите на този пример ще създадем customer база данни.

    1
    
    CREATE DATABASE customer;

    След това излезте от mysql подкана:

    quit
    

    Ако вече имате необходимата база данни, можете спокойно да пропуснете горната стъпка. За да продължите с възстановяването на таблицата, издайте команда в следната форма:

    mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    
  3. За следващия пример ще възстановим order таблица в съществуващия customer база данни от SQL архивен файл с име customerOrderBackup.sql . Внимавайте да използвате < оператор в следната команда:

    mysql -u root -p -h localhost customer < customerOrderBackup.sql
    

Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като бъдат предоставени правилните идентификационни данни, процесът на възстановяване ще започне. Продължителността на тази операция зависи от натоварването на вашата система и размера на таблицата, която възстановявате. Може да завърши за няколко секунди или може да отнеме много часове.

Опция 2:Възстановяване на единична таблица чрез клиента на MySQL и изявление INFILE за архивиране, създадено с OUTFILE

  1. Преди да започнем процеса на възстановяване, приемаме, че вашият MySQL екземпляр вече има съществуваща база данни, която може да получи таблицата, която искате да възстановите. Ако вашият MySQL екземпляр няма необходимата база данни, ще трябва да я създадем, преди да продължим. Първо, влезте във вашия MySQL екземпляр със следната команда:

    mysql -u root -p -h localhost
    
  2. Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като предоставите правилните идентификационни данни, трябва да създадете целевата база данни. За целите на този пример ще създадем customer база данни.

    1
    
    CREATE DATABASE customer;

    След това излезте от mysql подкана:

    quit
    
  3. Резервното копие на данните, използвано в този случай, е създадено с помощта на SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName команда. Този тип архивиране запазва само самите данни, така че структурата на таблицата трябва да бъде пресъздадена. За да възстановите една таблица от MySQL клиента, първо трябва да подготвите целевата база данни и таблица. Влезте във вашия (нов) MySQL екземпляр, като използвате MySQL клиента:

    mysql -u root -p -h localhost
    
  4. Ще бъдете подканени да въведете паролата на root MySQL потребителя. След като бъдат предоставени правилните идентификационни данни, трябва да създадете целевата база данни. В този случай ще създадем customer база данни. Издайте следното изявление:

    1
    
    CREATE DATABASE customer;
  5. Не забравяйте, че точката и запетаята (напр. ; ) след всяко твърдение са задължителни. Сега трябва да създадете таблицата на дестинацията с правилната структура. Типовете данни на полетата на таблицата трябва да отразяват тези на таблицата, откъдето произхожда архивирането. В този пример ще възстановим order таблица на customer база данни. Има 2 полета в order таблица, custNum с тип данни INT и orderName с тип данни VARCHAR(20); структурата на вашата таблица ще бъде различна:

    1
    2
    
    USE customer;
    CREATE TABLE order (custNum INT, orderName VARCHAR(20));
  6. В зависимост от вашето разгръщане може да се наложи да създадете нов потребител на MySQL или да пресъздадете предишен потребител с достъп до новосъздадената база данни. Командата за създаване на нов потребител на MySQL приема следната форма:

    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  7. В следващия пример ще създадем потребител с име customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  8. Сега ще дадем customeradmin привилегии за достъп до customer база данни. Командата за предоставяне на привилегии на база данни за конкретен потребител има следната форма:

    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'

    За целите на следващия пример ще дадем customeradmin пълен достъп до customer база данни. Издайте следната команда в MySQL клиента:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  9. Може да се наложи да посочите различни разрешения за достъп в зависимост от изискванията на вашето внедряване. Консултирайте се с официалната документация за изявлението 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 грешки.

  10. За да импортирате данните от customerOrderBackup.sql файл, намиращ се в /var/lib/mysql/ , издайте следната команда:

    1
    
    LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;

    Този процес може да отнеме от няколко секунди до много часове в зависимост от размера на вашата маса. Продължителността на тази операция зависи от натоварването на вашата система и размера на таблицата, която възстановявате. Може да завърши за няколко секунди или може да отнеме много часове. След като сте потвърдили, че вашите данни са импортирани успешно, можете да излезете:

    quit
    

Повече информация

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

  • Официалният уеб сайт на MySQL
  • Страница Методи за архивиране на MySQL база данни
  • Страница с ръководство на mysqldump
  • Планирайте задачите с Cron
  • Декларация за предоставяне на MySQL, официална документация

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намерете дублиращи се записи в MySQL

  2. Мониторинг на Percona XtraDB клъстер – ключови показатели

  3. Какво е по-добре в MYSQL count(*) или count(1)?

  4. Какъв е размерът на колоната на int(11) в mysql в байтове?

  5. Разликата между FIELD() и FIND_IN_SET() в MySQL