Adatbázisok mentése

A mysqldump egy rendkívül hasznos eszköz, amelyet a MySQL adatbázisok biztonsági mentésére használnak. Segítségével egyszerűen készíthetünk teljes adatbázis mentéseket, amelyek tartalmazzák a táblák szerkezetét, az adatokat, valamint az indexeket és más objektumokat. Azonban nem minden adatbázis objektumot ment el alapértelmezés szerint, és a tárolt eljárások (stored procedures) esetében is vannak speciális szabályok.

Mit ment el a mysqldump?

  1. Tábla szerkezete: A mysqldump alapértelmezés szerint menti a táblák struktúráját, tehát a táblák oszlopait, azok típusait és egyéb attribútumokat (például NOT NULL, AUTO_INCREMENT stb.).
  2. Adatok: A táblák adatainak mentése is megtörténik. Az adatok INSERT INTO parancsok formájában kerülnek elmentésre.
  3. Indexek: A táblák indexei, például elsődleges kulcsok (PRIMARY KEY), egyedi kulcsok (UNIQUE), valamint az idegen kulcsok (FOREIGN KEY) szintén mentésre kerülnek.
  4. Nézetek (Views): A mysqldump alapértelmezés szerint menti a nézeteket (views), tehát a táblák adataiból készült virtuális táblákat is elmenti.
  5. Egyéb adatbázis objektumok: Az alapértelmezett mentés tartalmazza az adatbázis szintű beállításokat, mint például az adatbázisok, táblák, nézetek, indexek, trigger-ek (triggerek), készletek (sequences) és egyéb metaadatok.

Mit NEM ment el a mysqldump?

  1. Tárolt eljárások és függvények (Stored Procedures & Functions): A mysqldump nem menti el alapértelmezés szerint a tárolt eljárásokat (stored procedures) és függvényeket (stored functions). Az automatikus mentés ezeket nem tartalmazza jogosultság kezelési problémák és egyéb kompatibilitási problémák miatt, ezért mentésüket manuálisan kell elvégezni.

    A tárolt eljárások és függvények mentéséhez a --routines kapcsolót kell használni. Ezzel biztosítható, hogy a mysqldump mentse a tárolt eljárásokat és függvényeket is.

  2. Események (Events): A mysqldump alapértelmezés szerint nem menti el az eseményeket (events), amelyek automatikusan végrehajtódó műveletek a MySQL-ben. Az események mentéséhez szintén a --events kapcsolót kell használni.
  3. Felhasználók és jogosultságok: Alapértelmezés szerint a mysqldump nem menti a felhasználói fiókokat, azok jelszavait és jogosultságait. A felhasználói jogosultságok biztonsági mentéséhez a --all-databases kapcsolót vagy a mysql adatbázist külön kell menteni, amely tartalmazza a felhasználókat és jogosultságokat.

  4. Nem táblázatos adatok: A mysqldump alapvetően a relációs táblákra koncentrál, tehát nem menti a nem relációs adatokat (például fájlokat, blobokat), ha azokat nem táblákban tárolják.

Miért nem menti el alapértelmezés szerint a tárolt eljárásokat?

A mysqldump eszköz alapértelmezés szerint nem menti el a tárolt eljárásokat és függvényeket, mert azok az adatbázis logikájához és működéséhez tartoznak, nem pedig közvetlenül a táblákhoz. A mentés során figyelmet kell fordítani arra, hogy a tárolt eljárások működése sokszor adatbázis-specifikus lehet, és egy adatbázis másik példányában való visszaállításuk esetén külön figyelmet kell fordítani az esetleges változtatásokra.

További kapcsolók a mysqldump eszközhöz

A mysqldump eszköz különféle kapcsolókkal használható a mentés testreszabására. Íme néhány hasznos kapcsoló, amit használhatsz:

  • --all-databases: Minden adatbázis mentése.
  • --databases: Több adatbázis mentése.
  • --add-drop-database: Az adatbázis törlését tartalmazó parancsot is generál a mentés előtt.
  • --no-data: Csak a tábla struktúráját mentesíti, adatokat nem.
  • --single-transaction: Ha az adatbázis tranzakció alapú (InnoDB), a mentést egyetlen tranzakcióval végezheti el, biztosítva az adatbázis állapotának konzisztenciáját a mentés közben.

Összegzés

A mysqldump eszköz nem menti el alapértelmezés szerint a tárolt eljárásokat (stored procedures) és függvényeket (stored functions). Ha szükség van ezek mentésére, akkor a --routines kapcsolót kell használni. Ezen kívül az események és a felhasználói jogosultságok sem kerülnek mentésre, ha azokat nem külön kezeljük. A mysqldump eszközt testreszabhatjuk különböző kapcsolók használatával a kívánt adatok mentéséhez.