Android

Jak zálohovat a obnovit databáze mysql pomocí mysqldump

Návod JeraScale - Záloha databáze

Návod JeraScale - Záloha databáze

Obsah:

Anonim

Tento tutoriál vysvětluje, jak zálohovat a obnovit databáze MySQL nebo MariaDB z příkazového řádku pomocí obslužného programu mysqldump.

Záložní soubory vytvořené obslužným programem mysqldump jsou v podstatě sadou příkazů SQL, které lze použít k obnovení původní databáze. Příkaz mysqldump může také generovat soubory ve formátu CSV a XML.

Nástroj mysqldump můžete také použít k přenosu vaší databáze MySQL na jiný server MySQL.

Syntaxe příkazu Mysqldump

Než se podíváme na to, jak používat příkaz mysqldump, začneme kontrolou základní syntaxe.

Výrazy utility mysqldump mají následující podobu:

mysqldump > file.sql

  • options - The mysqldump options file.sql - Soubor výpisu (zálohy)

Aby bylo možné použít příkaz mysqldump, musí být server MySQL přístupný a spuštěný.

Zálohujte jednu databázi MySQL

Nejběžnějším případem použití nástroje mysqldump je zálohování jediné databáze.

Chcete-li například vytvořit zálohu databáze s názvem database_name pomocí root uživatele a uložit ji do souboru s názvem database_name.sql , spusťte následující příkaz:

mysqldump -u root -p database_name > database_name.sql

Budete vyzváni k zadání hesla root. Po úspěšném ověření se spustí proces výpisu. V závislosti na velikosti databáze může tento proces nějakou dobu trvat.

mysqldump database_name > database_name.sql

Zálohujte více databází MySQL

Chcete-li zálohovat více MySQL databází jedním příkazem, musíte použít volbu --database následovanou seznamem databází, které chcete zálohovat. Každý název databáze musí být oddělen mezerou.

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

Výše uvedený příkaz vytvoří soubor výpisu obsahující obě databáze.

Zálohujte všechny databáze MySQL

Pomocí volby --all-databases zálohujte všechny databáze MySQL:

mysqldump -u root -p --all-databases > all_databases.sql

Stejně jako v předchozím příkladu vytvoří výše uvedený příkaz jediný soubor výpisu obsahující všechny databáze.

Zálohujte všechny databáze MySQL do samostatných souborů

Nástroj mysqldump neposkytuje možnost zálohování všech databází do samostatných souborů, ale toho snadno dosáhneme jednoduchou smyčkou bash FOR :

for DB in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $DB > "$DB.sql"; done

Výše uvedený příkaz vytvoří samostatný soubor výpisu pro každou databázi s použitím názvu databáze jako názvu souboru.

Vytvořte zálohu komprimované databáze MySQL

Pokud je velikost databáze velmi velká, je vhodné komprimovat výstup. Chcete-li to provést, jednoduše poslat výstup do obslužného gzip a přesměrovat jej do souboru, jak je znázorněno níže:

mysqldump database_name | gzip > database_name.sql.gz

Vytvořte zálohu pomocí časového razítka

mysqldump database_name > database_name-$(date +%Y%m%d).sql

Výše uvedený příkaz vytvoří soubor s následujícím formátem database_name-20180617.sql

Obnovení výpisu MySQL

Můžete obnovit výpis MySQL pomocí nástroje mysql . Obecná syntaxe příkazu je následující:

mysqld database_name < file.sql

Ve většině případů budete muset vytvořit databázi, do které chcete importovat. Pokud databáze již existuje, musíte ji nejprve odstranit.

V následujícím příkladu vytvoří první příkaz databázi s názvem database_name a poté do ní importuje výpis database_name.sql :

mysql -u root -p -e "create database database_name"; mysql -u root -p database_name < database_name.sql

Obnovte jednu databázi MySQL z úplného výpisu MySQL

mysql --one-database database_name < all_databases.sql

Export a import databáze MySQL jedním příkazem

Místo vytvoření výpisu z jedné databáze a následného importu zálohy do jiné databáze MySQL můžete použít následující jednostrannou linii:

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

Výše uvedený příkaz převede výstup na klienta mysql na vzdáleném hostiteli a importuje jej do databáze s názvem remote_database_name . Před spuštěním příkazu se ujistěte, že databáze již existuje na vzdáleném serveru.

Automatizujte zálohy pomocí Cron

Automatizace procesu zálohování databází je stejně jednoduchá jako vytvoření úlohy cron, která spustí příkaz mysqldump v určený čas.

Chcete-li nastavit automatické zálohy databáze MySQL pomocí cronjob, postupujte takto:

  1. Vytvořte soubor s názvem .my.cnf v domovském adresáři uživatele:

    sudo nano ~/.my.cnf

    Zkopírujte a vložte následující text do souboru.my.cnf.

    user = dbuser password = dbpasswd

    Nezapomeňte nahradit dbuser a dbpasswd databázovým uživatelem a heslem uživatele.

    Omezte oprávnění souboru pověření tak, aby k němu měl přístup pouze váš uživatel:

    chmod 600 ~/.my.cnf

    Vytvořte adresář pro uložení záloh:

    mkdir ~/db_backups

    Otevřete soubor crontab uživatele:

    crontab -e

    Přidejte následující úlohu cron, která vytvoří zálohu jména databáze mydb každý den ve 3:00:

    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql

    Nezapomeňte nahradit username skutečným uživatelským jménem.

Můžete také vytvořit další cronjob a odstranit všechny zálohy starší než 30 dnů:

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

Musíte samozřejmě upravit příkaz podle umístění zálohy a názvů souborů. Další informace o příkazu find najdete v naší příručce Jak najít soubory v systému Linux pomocí Průvodce příkazovým řádkem.

Závěr

Tento tutoriál pokrývá pouze základy, ale měl by být dobrý začátek pro každého, kdo se chce naučit, jak vytvářet a obnovovat databáze MySQL z příkazového řádku pomocí nástroje mysqldump.

Můžete také zkontrolovat návod, jak resetovat root heslo MySQL v případě, že jste jej zapomněli.

mysql mariadb backup mysqldump