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?
- Tábla szerkezete: A
mysqldumpalapé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áulNOT NULL,AUTO_INCREMENTstb.). - Adatok: A táblák adatainak mentése is megtörténik. Az adatok
INSERT INTOparancsok formájában kerülnek elmentésre. - 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. - Nézetek (Views): A
mysqldumpalapé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. - 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?
Tárolt eljárások és függvények (Stored Procedures & Functions): A
mysqldumpnem 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
--routineskapcsolót kell használni. Ezzel biztosítható, hogy amysqldumpmentse a tárolt eljárásokat és függvényeket is.- Események (Events): A
mysqldumpalapé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--eventskapcsolót kell használni. Felhasználók és jogosultságok: Alapértelmezés szerint a
mysqldumpnem 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-databaseskapcsolót vagy amysqladatbázist külön kell menteni, amely tartalmazza a felhasználókat és jogosultságokat.Nem táblázatos adatok: A
mysqldumpalapvető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.