sql >> Databáze >  >> RDS >> Mysql

Zálohujte své databáze MySQL

MySQL je open source systém pro správu relačních databází (DBMS), který je často nasazován v široké škále kontextů. Nejčastěji se nasazuje jako součást LAMP Stack. Databázový systém je také snadno použitelný a vysoce přenosný a v kontextu mnoha aplikací je mimořádně efektivní. Protože MySQL je často centralizovaným úložištěm dat pro velké množství kritických dat, pravidelné zálohování vaší databáze MySQL je jednou z nejdůležitějších úloh obnovy po havárii, kterou může správce systému provést. Tato příručka se zabývá řadou různých metod pro vytváření záloh vaší databáze a také pro obnovu databází ze záloh.

<šablona x-if=visible><šablona x-if=$isMobile()>

Před zahájením procesu instalace předpokládáme, že jste postupovali podle kroků uvedených v části Nastavení a zabezpečení výpočetní instance. Kromě toho budete muset nainstalovat databázi MySQL. Veškerá konfigurace bude provedena v terminálové relaci; ujistěte se, že jste přihlášeni ke svému Linode jako root přes SSH. Pokud jste v administraci linuxových serverů nováčkem, možná vás bude zajímat naše úvodní příručka s koncepty Linuxu, příručka pro začátečníky a příručka se základy administrace.

Metodika zálohování

Většina záloh MySQL databází v této příručce se provádí pomocí mysqldump nástroj, který je distribuován s výchozí instalací serveru MySQL. Doporučujeme použít mysqldump kdykoli je to možné, protože je to často nejjednodušší a nejúčinnější způsob zálohování databáze. Další metody popsané v této příručce jsou uvedeny pro situace, kdy nemáte přístup k mysqldump nástroj, jako v prostředí obnovy, jako je Finnix, nebo v situacích, kdy se místní instance serveru MySQL nespustí.

Nicméně tato příručka poskytuje pouhý přehled mysqldump nástroj, protože existuje mnoho možností a použití mysqldump které přesahují rámec tohoto dokumentu. Doporučujeme vám seznámit se se všemi postupy uvedenými v tomto dokumentu a pokračovat ve zkoumání mysqldump nad rámec zde popsaných případů. Nezapomeňte si uvědomit následující:

  • *.sql soubory vytvořené pomocí mysqldump lze kdykoli obnovit. Můžete dokonce upravit databázi .sql soubory ručně (s velkou opatrností!) pomocí vašeho oblíbeného textového editoru.
  • Pokud vaše databáze využívají pouze úložiště MyISAM, můžete nahradit mysqldump příkaz s rychlejším mysqlhotcopy .

Vytváření záloh celého systému správy databází (DBMS)

Často je nutné provést zálohu (neboli „skládku“) celého systému správy databází spolu se všemi databázemi a tabulkami, včetně systémových databází, které obsahují uživatele, oprávnění a hesla.

Možnost 1:Vytvořte zálohy celého systému správy databáze pomocí nástroje mysqldump

Nejpřímější metoda pro vytvoření jediné koherentní zálohy celého systému správy databáze MySQL používá mysqldump nástroj z příkazového řádku. Syntaxe pro vytvoření výpisu databáze s aktuálním časovým razítkem je následující:

mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p

Tento příkaz vás vyzve k zadání hesla před zahájením zálohování databáze v aktuálním adresáři. Tento proces může trvat od několika sekund do několika hodin v závislosti na velikosti vašich databází.

Automatizujte tento proces přidáním řádku do crontab :

0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD

Pro výše uvedený příklad použijte which mysqldump potvrďte správnou cestu k příkazu a nahraďte root s uživatelem mysql, pod kterým chcete spouštět zálohy, a PASSWORD se správným heslem pro daného uživatele.

Poznámka V příkladu crontab se ujistěte, že mezi příznakem -P a zadáním hesla není mezera.

Možnost 2:Vytvořte zálohy celého DBMS pomocí kopií datového adresáře MySQL

Zatímco mysqldump je preferovanou metodou zálohování, existuje několik případů, které vyžadují jiný přístup. mysqldump funguje pouze tehdy, když je databázový server přístupný a běží. Pokud databázi nelze spustit nebo je hostitelský systém nedostupný, můžeme přímo zkopírovat databázi MySQL. Tato metoda je často nezbytná v situacích, kdy máte přístup pouze k prostředí pro obnovu, jako je Finnix, s disky vašeho systému připojenými v daném systému souborů. Pokud tuto metodu zkoušíte na svém systému, ujistěte se, že databáze není běh. Zadejte příkaz podobný následujícímu:

/etc/init.d/mysqld stop

Ve většině verzí MySQL distribuce je datový adresář umístěn v /var/lib/mysql/ adresář. Pokud tento adresář neexistuje, prozkoumejte /etc/mysql/my.cnf soubor pro cestu k datovému adresáři. Alternativně můžete v systému souborů vyhledat adresář dat zadáním následujícího příkazu:

find / -name mysql

Jakmile najdete svůj datový adresář MySQL, můžete jej zkopírovat do záložního umístění. Následující příklad předpokládá, že datový adresář MySQL je umístěn na adrese /var/lib/mysql/ :

cp -R /var/lib/mysql/* /opt/database/backup-1266871069/

V tomto případě jsme rekurzivně zkopírovali obsah datového adresáře (např. /var/lib/mysql/ ) do adresáře v rámci /opt/ hierarchie (např. /opt/database/backup-1266871069/ ). Tento adresář musí existovat před zahájením operace kopírování. Zvažte následující sekvenci operací:

/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/

Tyto příkazy začínají zastavením démona serveru MySQL a vytvořením adresáře s názvem /opt/database/backup-1266872202/ a provedení rekurzivní kopie datového adresáře. Všimněte si, že jsme se rozhodli použít backup-[time_t] konvence pojmenování pro naše příklady. Nahraďte výše uvedené cesty svou preferovanou organizaci a schéma pojmenování. cp příkaz nevytváří výstup a jeho dokončení může nějakou dobu trvat v závislosti na velikosti vaší databáze. Neznepokojujte se, pokud dokončení bude chvíli trvat. Po dokončení operace kopírování můžete chtít archivovat datový adresář do archivu „tar“, abyste usnadnili správu a přesun mezi počítači. Chcete-li vytvořit archiv, zadejte následující příkazy:

cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz

Jakmile je tarball vytvořen, můžete soubor snadno přenést způsobem, který je pro vás nejpohodlnější. V případě potřeby nezapomeňte znovu restartovat démona serveru MySQL:

/etc/init.d/mysql start

Vytváření záloh jedné databáze

V mnoha případech není nutné vytvářet zálohu celého databázového serveru. V některých případech, jako je upgrade webové aplikace, může instalační technik doporučit vytvoření zálohy databáze pro případ, že by aktualizace databáze nepříznivě ovlivnila. Podobně, pokud chcete vytvořit „dump“ konkrétní databáze a přesunout tuto databázi na jiný server, můžete zvážit následující metodu.

Pokud je to možné, použijte mysqldump nástroj pro export „dump“ jedné databáze. Tento příkaz bude vypadat následovně:

mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql

Výše uvedený příklad je jako příklad v předchozí části, s výjimkou použití --all-databases Tento příklad určuje konkrétní název databáze. V tomto případě vytvoříme zálohu danceLeaders databáze. Forma tohoto příkazu v jednodušším zápisu je následující:

mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql

Pro další příklad provedeme zálohu databáze s názvem customer pomocí účtu kořenové databáze zadáním následujícího příkazu:

mysqldump -u root -p -h localhost customer > customerBackup.sql

Před mysqldump budete vyzváni k zadání hesla spustí proces zálohování. Jako vždy záložní soubor, v tomto případě customerBackup.sql , se vytvoří v adresáři, kde zadáváte tento příkaz. mysqldump příkaz může být dokončen během několika sekund nebo několika hodin v závislosti na velikosti databáze a zatížení hostitele při spuštění zálohy.

Vytváření záloh jedné tabulky

Možnost 1:Vytvořte zálohy jedné tabulky pomocí nástroje mysqldump

Tato operace, stejně jako předchozí použití mysqldump v tomto dokumentu vám umožňuje vytvořit zálohu jedné databázové tabulky. Následující příklad pokračuje v našich dřívějších příkladech a umožňuje vám zálohovat tabulku usernameRecords v danceLeaders databáze.

 mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql

Výše uvedený příklad je jako příklad v předchozí části s tím rozdílem, že jsme do příkazu přidali specifikaci názvu tabulky, která určuje název tabulky, kterou chceme zálohovat. Forma tohoto příkazu v jednodušším zápisu je následující:

mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql

Jako další příklad provedeme zálohu tabulky s názvem „objednávka“ z databáze s názvem customer pomocí účtu kořenové databáze zadáním následujícího příkazu:

mysqldump -u root -p -h localhost customer order > customerBackup-order.sql

Před mysqldump budete vyzváni k zadání hesla zahájí proces zálohování. Jako vždy záložní soubor (v tomto případě customerBackup.sql ) se vytvoří v adresáři, kde zadáte tento příkaz. mysqldump příkaz může být dokončen během několika sekund nebo několika hodin v závislosti na velikosti databáze a zatížení hostitele při spuštění zálohy.

Možnost 2:Vytvořte zálohy jedné tabulky pomocí klienta MySQL a prohlášení OUTFILE

Samotný klient MySQL má určitou zálohovací schopnost. Je to užitečné, když jste již přihlášeni a nechcete opustit aktuální relaci. Pokud používáte aktivní systém a nemůžete si dovolit odstávku, měli byste zvážit dočasné uzamčení tabulky, kterou zálohujete.

Uvědomte si, že při zálohování jedné tabulky pomocí klienta MySQL není v záloze zachována struktura této tabulky. Při použití této metody se uloží pouze samotná data.

  1. Než začneme, doporučujeme provést LOCK TABLES na tabulkách, které chcete zálohovat, a poté FLUSH TABLES abyste zajistili, že databáze bude během operace zálohování v konzistentním prostoru. Potřebujete pouze zámek pro čtení. To umožňuje ostatním klientům pokračovat v dotazování na tabulky, zatímco vy vytváříte kopie souborů v datovém adresáři MySQL. Pro zámek „čtení“ syntaxe LOCK TABLES vypadá následovně:

    1
    
    LOCK TABLES tableName READ;

    Chcete-li provést LOCK TABLES na order tabulky customer databáze, zadejte následující příkaz:

    mysql -u root -p -h localhost
    

    Poté budete vyzváni k zadání hesla uživatele root. Jakmile zadáte přihlašovací údaje k databázi, dostanete se na výzvu klienta mysql. Chcete-li uzamknout order, zadejte následující příkaz tabulce v customer databáze (koncové ; je vyžadován pro příkazy MySQL):

    1
    2
    3
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
  2. Nyní můžeme zahájit operaci zálohování. Chcete-li vytvořit zálohu jedné tabulky pomocí klienta MySQL, budete muset být přihlášeni do svého MySQL DBMS. Pokud nejste aktuálně přihlášeni, můžete se přihlásit pomocí následujícího příkazu:

    mysql -u root -p -h localhost
    

    Budete vyzváni k zadání hesla. Jakmile zadáte správné heslo a dostanete se na výzvu klienta MySQL, můžete použít SELECT * INTO OUTFILE prohlášení. Syntaxe tohoto příkazu vypadá následovně:

    1
    
    SELECT * INTO OUTFILE 'file_name' FROM tbl_name;

    V tomto příkladu vytvoříme zálohu dat z order tabulky customer databáze. Vydáním následujícího příkazu zahájíte proces zálohování (koncové ; je vyžadován pro příkazy 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 bude vytvořen v příslušném datovém podadresáři v datovém adresáři MySQL. Datový adresář MySQL je běžně /var/lib/mysql/ . V tomto příkladu OUTFILE bude /var/lib/mysql/customer/customerOrderBackup.sql . Umístění tohoto adresáře a souboru se však může v jednotlivých distribucích Linuxu lišit. Pokud nemůžete najít záložní soubor, můžete jej vyhledat pomocí následujícího příkazu:

    find / -name customerOrderBackup.sql
    
  3. Jakmile dokončíte operaci zálohování, budete chtít odemknout tabulky pomocí následujícího příkazu v klientovi MySQL. Tím se databáze vrátí do normálního provozu. Přihlaste se ke klientovi MySQL pomocí prvního příkazu, pokud právě nejste přihlášeni, a poté zadejte druhý příkaz:

    mysql -uroot -p -h localhost
    
    1
    
    UNLOCK TABLES;

Od tohoto okamžiku můžete pokračovat v používání databáze jako obvykle.

Úvahy o efektivní strategii zálohování

Vytváření záloh vaší databáze MySQL by mělo být pravidelnou a plánovanou úlohou. Můžete zvážit naplánování pravidelných záloh pomocí cron , mysqldump a/nebo mail . Další informace o cronu naleznete v naší dokumentaci. Implementace řešení automatického zálohování může pomoci minimalizovat prostoje v situaci obnovy po havárii.

Při zálohování databází se nemusíte přihlašovat jako root. Uživatel MySQL se čtením (např. SELECT ) je možné použít jak mysqldump a mysql (např. klient MySQL) nástroje pro vytváření záloh, jak je popsáno níže. V rámci běžné praxe doporučujeme nepoužívat root MySQL kdykoli je to možné, abyste minimalizovali bezpečnostní rizika.

Možná budete chtít zvážit přírůstkové zálohy jako součást dlouhodobého plánu zálohování databáze. I když zde tento proces není popsán, doporučujeme, abyste zvážili zdroj informací o metodách zálohování databáze MySQL.

Obnovení celého DBMS ze zálohy

Záloha, kterou nelze obnovit, má minimální hodnotu. Doporučujeme zálohy pravidelně testovat, abyste se ujistili, že je lze obnovit v případě, že budete možná potřebovat obnovit ze záloh. Při použití obnovy záloh vaší databáze MySQL závisí metoda, kterou použijete, na metodě, kterou jste použili k vytvoření příslušné zálohy.

Možnost 1:Obnovení celého DBMS pomocí klienta MySQL a záloh vytvořených mysqldump

Před zahájením procesu obnovy tato část předpokládá, že váš systém používá nově nainstalovanou verzi MySQL bez jakýchkoli existujících databází nebo tabulek. Pokud již máte databáze a tabulky v databázi MySQL DBMS, proveďte zálohu, než budete pokračovat, protože tento proces přepíše aktuální data MySQL.

Celý svůj DBMS můžete snadno obnovit pomocí mysql příkaz. Syntaxe tohoto bude vypadat takto:

mysql -u [username] -p [password] < backupFile.sql

V tomto případě jednoduše obnovujeme celý DBMS. Příkaz bude vypadat následovně:

mysql -u root -p < 1266861650-backup-all.sql

Budete vyzváni k zadání hesla uživatele root MySQL. Po zadání správných přihlašovacích údajů začne proces obnovy. Protože tento proces obnovuje celý DBMS, může to trvat od několika sekund po mnoho hodin.

Možnost 2:Obnovení celého DBMS pomocí datových souborů MySQL zkopírovaných přímo z Data Directory MySQL

Před zahájením procesu obnovy tato část předpokládá, že váš systém používá nově nainstalovanou verzi MySQL bez jakýchkoli existujících databází nebo tabulek. Pokud již máte databáze a tabulky v databázi MySQL DBMS, proveďte zálohu, než budete pokračovat, protože tento proces přepíše aktuální data MySQL.

  1. Pokud máte úplnou zálohu datového adresáře MySQL (obvykle /var/lib/mysql ), můžete jej obnovit z příkazového řádku. Chcete-li zajistit úspěšnou obnovu, musíte nejprve zastavit démona serveru MySQL a odstranit aktuální data v datovém adresáři MySQL.

    /etc/init.d/mysql stop
    rm -R /var/lib/mysql/*
    
  2. V následujícím příkladu je záloha datového adresáře MySQL umístěna v /opt/database/backup-1266872202 adresář. Pokud jste při zálohování datového adresáře DBMS vytvořili tarball datového adresáře, budete muset před kopírováním extrahovat soubory z tarballu pomocí následujících příkazů:

     cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/
     cd /var/lib/mysql
     tar xzvf mysqlBackup-1266872202.tar.gz
    
  3. Než budeme moci restartovat proces databáze MySQL, musíme se ujistit, že jsou správně nastavena oprávnění na /var/lib/mysql/ adresář. V tomto příkladu předpokládáme, že démon serveru MySQL běží jako uživatel mysql se skupinou mysql . Chcete-li změnit oprávnění k datovému adresáři, zadejte následující příkaz:

    chown -R mysql:mysql /var/lib/mysql
    
  4. Změňte mysql:mysql části tohoto příkazu, pokud vaše instance MySQL běží s různými uživatelskými a skupinovými oprávněními. Tvar tohoto argumentu je [user]:[group] . Nakonec můžeme spustit démona serveru MySQL pomocí následujícího příkazu:

    /etc/init.d/mysql start
    

    Pokud se zobrazí chyba podobná následující:

    /usr/bin/mysqladmin: connect to server at 'localhost' failed
        error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
    

    Budete muset najít starý debian-sys-maint uživatelské heslo v /etc/mysql/debian.cnf a poté změňte nový debian-sys-maint uživatelské heslo k němu. Staré heslo můžete zobrazit pomocí cat :

    cat /etc/mysql/debian.cnf | grep password
    

    Zkopírujte (nebo si zapamatujte) heslo. Pak budete muset změnit nový debian-sys-maint uživatelské heslo. Můžete to udělat tak, že se přihlásíte jako uživatel root MySQL a vydáte následující příkaz (kde je heslo starého debian-sys-maint uživatel):

    1
    
    GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
  5. Poté budete muset restartovat MySQL pomocí následujícího příkazu:

    /etc/init.d/mysql restart
    

Po úspěšném spuštění serveru MySQL budete chtít otestovat svůj MySQL DBMS a zajistit, aby byly všechny databáze a tabulky správně obnoveny. Doporučujeme také, abyste provedli audit protokolů, zda neobsahují potenciální chyby. V některých případech se MySQL může úspěšně spustit i přes chyby databáze.

Obnovení jedné databáze ze zálohy

V případech, kdy jste vytvořili zálohu pouze pro jednu databázi nebo potřebujete obnovit pouze jednu databázi, je proces obnovy poněkud odlišný.

Před zahájením procesu obnovy tato část předpokládá, že váš systém používá nově nainstalovanou verzi MySQL bez jakýchkoli existujících databází nebo tabulek. Pokud již máte databáze a tabulky v databázi MySQL DBMS, proveďte zálohu, než budete pokračovat, protože tento proces přepíše aktuální data MySQL.

  1. Chcete-li obnovit jednu databázi pomocí mysql nejprve připravte cílovou databázi. Přihlaste se ke svému (novému) databázovému serveru MySQL pomocí klienta MySQL:

    mysql -u root -p -h localhost
    
  2. Budete vyzváni k zadání hesla uživatele root MySQL. Po zadání správných pověření musíte vytvořit cílovou databázi. V tomto případě customer databáze bude obnovena:

    1
    
    CREATE DATABASE customer;
  3. Stejně jako u všech příkazů MySQL nevynechávejte poslední středník (např. ; ) na závěr každého příkazu. V závislosti na vašem nasazení možná budete muset vytvořit nového uživatele MySQL nebo znovu vytvořit předchozího uživatele s přístupem k nově vytvořené databázi. Příkaz pro vytvoření nového uživatele MySQL má následující podobu:

    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  4. V dalším příkladu vytvoříme uživatele s názvem customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  5. Nyní dáme customeradmin oprávnění pro přístup k customer databáze. Příkaz pro udělení oprávnění k databázi pro konkrétního uživatele má následující podobu:

    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
  6. Pro účely následujícího příkladu uvedeme customeradmin plný přístup k customer databáze. V klientovi MySQL zadejte následující příkaz:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  7. Možná budete muset zadat různá udělení přístupu v závislosti na požadavcích vašeho nasazení. Prostudujte si oficiální dokumentaci prohlášení GRANT MySQL. Po vytvoření cílové databáze a uživatele MySQL můžete klienta MySQL zavřít následujícím příkazem:

     quit
    
  8. Nyní můžete použít mysql příkaz k obnovení souboru SQL. Tvar tohoto příkazu se podobá následujícímu:

     mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    

V následujícím příkladu obnovíme customer databázi ze záložního souboru SQL s názvem customerBackup.sql (zvláštní pozornost věnujte < symbol v tomto příkazu):

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

Budete vyzváni k zadání hesla uživatele root MySQL. Po zadání správných přihlašovacích údajů začne proces obnovy. Doba trvání této operace závisí na zatížení vašeho systému a velikosti databáze, kterou obnovujete. Může to být dokončeno za několik sekund nebo to může trvat mnoho hodin.

Obnovení jedné tabulky ze zálohy

Možnost 1:Obnovení jedné tabulky pomocí MySQL a záloh vytvořených mysqldump

  1. Před zahájením procesu obnovy předpokládáme, že vaše instance MySQL již má existující databázi, která může přijmout tabulku, kterou chcete obnovit. Pokud vaše instance MySQL nemá požadovanou databázi, budeme ji muset před pokračováním vytvořit. Nejprve se přihlaste do své instance MySQL pomocí následujícího příkazu:

    mysql -u root -p -h localhost
    
  2. Budete vyzváni k zadání hesla uživatele root MySQL. Po zadání správných pověření musíte vytvořit cílovou databázi. Pro účely tohoto příkladu vytvoříme customer databáze.

    1
    
    CREATE DATABASE customer;

    Poté ukončete mysql výzva:

    quit
    

    Pokud již požadovanou databázi máte, můžete výše uvedený krok bezpečně přeskočit. Chcete-li pokračovat v obnově tabulky, zadejte příkaz v následujícím tvaru:

    mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    
  3. V následujícím příkladu obnovíme order tabulky do stávajícího customer databázi ze záložního souboru SQL s názvem customerOrderBackup.sql . Buďte velmi opatrní při použití < operátor v následujícím příkazu:

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

Budete vyzváni k zadání hesla uživatele root MySQL. Po zadání správných přihlašovacích údajů začne proces obnovy. Doba trvání této operace závisí na zatížení vašeho systému a velikosti tabulky, kterou obnovujete. Může to být dokončeno za několik sekund nebo to může trvat mnoho hodin.

Možnost 2:Obnovení jedné tabulky pomocí klienta MySQL a příkaz INFILE pro zálohy vytvořené pomocí OUTFILE

  1. Před zahájením procesu obnovy předpokládáme, že vaše instance MySQL již má existující databázi, která může přijmout tabulku, kterou chcete obnovit. Pokud vaše instance MySQL nemá požadovanou databázi, budeme ji muset před pokračováním vytvořit. Nejprve se přihlaste do své instance MySQL pomocí následujícího příkazu:

    mysql -u root -p -h localhost
    
  2. Budete vyzváni k zadání hesla uživatele root MySQL. Po zadání správných pověření musíte vytvořit cílovou databázi. Pro účely tohoto příkladu vytvoříme customer databáze.

    1
    
    CREATE DATABASE customer;

    Poté ukončete mysql výzva:

    quit
    
  3. Záloha dat použitá v tomto případě byla vytvořena pomocí SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName příkaz. Tento typ zálohy uchovává pouze samotná data, takže strukturu tabulky je třeba znovu vytvořit. Chcete-li obnovit jednu tabulku z klienta MySQL, musíte nejprve připravit cílovou databázi a tabulku. Přihlaste se do své (nové) instance MySQL pomocí klienta MySQL:

    mysql -u root -p -h localhost
    
  4. Budete vyzváni k zadání hesla uživatele root MySQL. Jakmile jsou zadána správná pověření, musíte vytvořit cílovou databázi. V tomto případě vytvoříme customer databáze. Vydejte následující prohlášení:

    1
    
    CREATE DATABASE customer;
  5. Pamatujte, že středníky (např. ; ) po každém prohlášení jsou povinné. Nyní musíte vytvořit cílovou tabulku se správnou strukturou. Datové typy polí tabulky musí odpovídat datovým typům tabulky, ze které záloha pochází. V tomto příkladu obnovíme order tabulky customer databáze. order obsahuje 2 pole tabulka, custNum s datovým typem INT a orderName s datovým typem VARCHAR(20); struktura vaší tabulky se bude lišit:

    1
    2
    
    USE customer;
    CREATE TABLE order (custNum INT, orderName VARCHAR(20));
  6. V závislosti na vašem nasazení možná budete muset vytvořit nového uživatele MySQL nebo znovu vytvořit předchozího uživatele s přístupem k nově vytvořené databázi. Příkaz pro vytvoření nového uživatele MySQL má následující podobu:

    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  7. V dalším příkladu vytvoříme uživatele s názvem customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  8. Nyní dáme customeradmin oprávnění pro přístup k customer databáze. Příkaz pro udělení oprávnění k databázi pro konkrétního uživatele má následující podobu:

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

    Pro účely následujícího příkladu uvedeme customeradmin plný přístup k customer databáze. V klientovi MySQL zadejte následující příkaz:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  9. Možná budete muset zadat různá udělení přístupu v závislosti na požadavcích vašeho nasazení. Prostudujte si oficiální dokumentaci prohlášení GRANT MySQL. Po vytvoření tabulky a uživatele můžeme importovat data zálohy ze záložního souboru pomocí LOAD DATA příkaz. Syntaxe je podobná následující:

    1
    
    LOAD DATA INFILE '[filename]' INTO TABLE [tableName];

    V následujícím příkladu obnovíme data z tabulky ze souboru s názvem customerOrderBackup.sql . Když je klientovi MySQL zadána cesta a název souboru za INFILE , hledá tento soubor v datovém adresáři MySQL. Pokud je název souboru customerOrderBackup.sql was given, the path would be /var/lib/mysql/customerOrderBackup.sql . Ensure that the file you are trying to restore from exists, especially if MySQL generates File not found errors.

  10. To import the data from the customerOrderBackup.sql file located in /var/lib/mysql/ , issue the following command:

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

    This process can take anywhere from a few seconds to many hours depending on the size of your table. The duration of this operation depends on your system’s load and the size of the table that you are restoring. It may complete in a few seconds, or it may take many hours. After you have verified that your data was imported successfully, you can log out:

    quit
    

Další informace

Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.

  • The Official MySQL Web Site
  • MySQL Database Backup Methods page
  • mysqldump Manual Page
  • Schedule Tasks With Cron
  • MySQL’s Grant Statement, Official Documentation

  1. Jak jsou klasifikovány příkazy SQL | UBIQ

  2. Jak vytvořit rolovatelný a aktualizovatelný objekt ResultSet v JDBC

  3. Jak používat Top with Ties v SQL Server - SQL Server / TSQL výukový program, část 114

  4. Datový kurz:Používání funkcí okna