Lepší způsob, jak zálohovat a exportovat databázi MySQL nebo MariaDB, je provést úlohu lokálně na serveru, takže data tabulek mohou být okamžitě a bez prodlení uložena na místní disk. Rychlost exportu bude tedy rychlejší a zkrátí se čas, kdy je databáze nebo tabulka MySQL nebo MariaDB uzamčena pro přístup. Tento tutoriál je průvodcem, jak zálohovat (exportovat) a obnovovat (importovat) databáze MySQL nebo MariaDB na samotném databázovém serveru pomocí mysqldump a mysql utility. V zásadě existují dva způsoby zálohování MySQL nebo MariaDB, jedním je zkopírování všech souborů tabulky (soubory *.frm, *.MYD a *.MYI) nebo použití mysqlhotcopy nástroj, ale funguje pouze pro tabulky MyISAM. Níže uvedený tutoriál se zaměří na mysqldump, který funguje pro tabulky MyISAM i InnoDB.
Jak exportovat nebo zálohovat nebo vypsat databázi MySQL nebo MariaDB
Chcete-li exportovat databázi MySQL nebo MariaDB do souboru výpisu, jednoduše zadejte do shellu následující syntaxi příkazu. Pokud nemáte přístup k fyzické schránce, můžete ke vzdálenému přihlášení k počítači použít Telnet nebo SSH.
mysqldump -u username -ppassword database_name > dump.sql
Nahraďte uživatelské jméno s platným ID uživatele MySQL nebo MariaDB, heslem s platným heslem pro uživatele (DŮLEŽITÉ:za -p a heslem žádná mezera, jinak vás mysqldump vyzve k zadání hesla, přesto bude heslo považovat za název databáze, takže záloha selže) a název_databáze se skutečným názvem databáze, kterou chcete exportovat. Nakonec můžete pro výstupní soubor výpisu SQL zadat libovolný název, zde je dump.sql .
Celá data, tabulky, struktury a databáze database_name budou zálohovány do textového souboru SQL s názvem dump.sql pomocí výše uvedeného příkazu.
Jak exportovat pouze databázové struktury MySQL nebo MariaDB
Pokud již data v tabulkách databáze nepotřebujete (nepravděpodobné), jednoduše přidejte –no-data přepněte na export pouze struktury tabulek. Například syntaxe je:
mysqldump -u username -ppassword --no-data database_name > dump.sql
Jak zálohovat pouze data databáze MySQL nebo MariaDB
Pokud chcete pouze zálohovat data, použijte –no-create-info volba. S tímto nastavením nebude výpis při importu znovu vytvářet databázi, tabulky, pole a další struktury. Toto použijte pouze v případě, že jste si docela jisti, že máte duplicitní databáze se stejnou strukturou, kde je potřeba pouze aktualizovat data.
mysqldump -u username -ppassword --no-create-info database_name > dump.sql
Jak uložit několik databází MySQL nebo MariaDB do textového souboru
–databáze umožňuje zadat více než 1 databázi. Příklad syntaxe:
mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql
Jak vypsat všechny databáze na serveru MySQL nebo MariaDB
Chcete-li vypsat všechny databáze, použijte –all-databases a již není třeba zadávat název žádné databáze.
mysqldump -u username -ppassword --all-databases > dump.sql
Jak online zálohovat tabulky InnoDB
Zálohování databáze nevyhnutelné způsobí nedostupnost serveru MySQL nebo MariaDB aplikacím, protože při exportu všechny tabulky získaly globální zámek pro čtení pomocí FLUSH TABLES WITH READ LOCK na začátku výpisu až do konce. Takže ačkoli příkazy READ mohou pokračovat, všechny příkazy INSERT, UPDATE a DELETE se budou muset zařadit do fronty kvůli zamknutým tabulkám, jako kdyby MySQL nebo MariaDB nefungovaly nebo se zastavily. Pokud používáte InnoDB, –jedna transakce je způsob, jak minimalizovat dobu trvání uzamčení na téměř nulovou, jako při provádění online zálohy. Funguje tak, že načte souřadnice binárního logu, jakmile je zámek získán, a zámek je poté okamžitě uvolněn.
Syntaxe:
mysqldump -u username -ppassword --all-databases --single-transaction > dump.sql
Jak obnovit a importovat databázi MySQL nebo MariaDB
Můžete obnovit z phpMyAdmin pomocí záložky Import. Pro rychlejší způsob nahrajte soubor výpisu na server MySQL nebo MariaDB a pomocí následujícího příkazu importujte databáze zpět na server MySQL nebo MariaDB.
mysql -u username -ppassword database_name < dump.sqlPokud se chcete vzdáleně připojit k serverům MySQL nebo MariaDB na jiném serveru, přidejte -h název-serveru-nebo-IP-adresa na příkaz.
Import a export databáze MySQL nebo MariaDB je důležitý nejen pro obnovu dat v případě katastrofy, ale také poskytuje snadný způsob migrace nebo přesunu na jiný server, například při změně poskytovatele webhostingu. Pamatujte však na jeden společný problém – kódování znakové sady. Novější verze mysqldump používá UTF8 jako svou výchozí znakovou sadu, pokud není nic specifikováno, zatímco starší verze (starší než 4.1 typicky) používají Latin1 jako výchozí znakovou sadu. Pokud máte v databázi znakovou sadu Latin1 a uložíte ji do řazení UTF8, data se mohou stát jednoduše nesmyslnými, zkomolenými nebo nečitelnými (často se to stává na blogu WordPress). V tomto případě použijte –default-character-set=charset_name možnost zadat znakovou sadu nebo převést databázi na UTF8.