Zálohování a Přesun Databází a Tabulek v MySQL

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

Comments

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *