Při správě databází je důležité mít nástroje a postupy pro zálohování a obnovu dat. MySQL poskytuje nástroj mysqldump
, který umožňuje exportovat databáze, tabulky a všechny jejich objekty do SQL skriptu. Tento skript může být následně použit k obnovení databáze na jiném serveru. Tento postup zahrnuje zálohování uložených procedur, funkcí a triggerů.
Hlavní logika
mysqldump
: Primární nástroj pro zálohování MySQL databází.mysql
: Nástroj pro obnovu databáze z exportovaného SQL skriptu.- Přenos souborů: Může být proveden pomocí nástrojů jako
scp
pro přenos záložních souborů mezi servery.
Použití DELIMITER
pro vytváření uložených procedur
V MySQL se DELIMITER
používá pro změnu výchozího znakového řetězce, který označuje konec příkazu, aby bylo možné správně vytvářet složitější struktury jako uložené procedury.
Příklad uložené procedury
Změna DELIMITER
pro vytvoření procedury:
DELIMITER //
CREATE PROCEDURE GetOrCreateLatestWarehouseItem(IN p_costumer_id INT)
BEGIN
DECLARE count INT;
-- Zkontrolujeme, jestli existuje záznam s daným costumer_id
SELECT COUNT(*) INTO count
FROM warehouse_items_square
WHERE costumer_id = p_costumer_id;
IF count = 0 THEN
-- Pokud žádný záznam neexistuje, vložíme nový záznam s výchozími hodnotami
INSERT INTO warehouse_items_square (costumer_id, /* další sloupce */)
VALUES (p_costumer_id, /* hodnoty odpovídající výchozím hodnotám */);
END IF;
-- Vrátíme poslední záznam (nově vytvořený nebo existující)
SELECT *
FROM warehouse_items_square
WHERE costumer_id = p_costumer_id
ORDER BY timestamp DESC
LIMIT 1;
END //
DELIMITER ;
Volání procedury:
CALL GetOrCreateLatestWarehouseItem(123);
Zálohování celé databáze
Příkaz pro zálohování celé databáze včetně uložených procedur a funkcí:
mysqldump -u uživatel -p --routines název_databáze > backup.sql
-u uživatel
: Uživatelské jméno pro přihlášení k MySQL.-p
: Vyzve k zadání hesla pro uživatele.--routines
: Zajistí, že uložené procedury a funkce budou zahrnuty do zálohy.název_databáze
: Jméno databáze, kterou chceš zálohovat.backup.sql
: Soubor, do kterého se uloží záložní data.
Obnovení databáze na jiném serveru
Příkaz pro obnovení databáze z vytvořeného záložního souboru:
mysql -u uživatel -p název_databáze < backup.sql
Přesun konkrétní tabulky mezi servery
Příkaz pro zálohování konkrétní tabulky:
mysqldump -u uživatel -p název_databáze název_tabulky > tabulka_backup.sql
mysql -u uživatel -p název_databáze < tabulka_backup.sql
Přesun všech struktur a dat na nový server
Zálohování celé databáze na starém serveru:
mysqldump -u uživatel -p --routines --triggers --databases název_databáze > kompletni_backup.sql
scp kompletni_backup.sql uživatel@novy_server:/cesta/k/souboru
mysql -u uživatel -p < /cesta/k/souboru/kompletni_backup.sql
Napsat komentář