Nemtudom ki hogy van vele, én általában az egész adatbázist, annak minden adatbázisával és táblájával együtt szoktam  menteni.
Persze visszaállításkor valahogy meg kell oldani, hogy csak az a bizonyos adatbázis, esetleg csak egy táblája legyen visszaállítva.
Már azzal megkönnyítem a helyzetem, ha az adatbázisszerverről külön- külön mentem az adatbázisokat, hiszenen így visszaállításkor nem kell a másikakkal foglalkozni, egyszerűbb a helyzet.  
Régebben mindig úgy állítottam be a MySQL mentését, hogy létrehoztam egy felhasználót, akinek csak select és lock table jogosultsága volt minden adatbázisra és csak localhoston jelentkezhet be.
Ez körülményes, viszont talán a legbiztonságosabb megoldás.  
Ennél egy sokkal kényelmesebb és jól beállított fájl jogosultság után biztonságos megoldást mutatok. Arra figyelni kell, hogy annak akinek feltétlenül nem szükséges, ne módosíthassa a szkriptet, mert a debian-sys-maint felhasználó teljes jogosultsággal bír az adatbázisban,
A szkript működése szavakban:
Minden adatbázisról visszamenőleg az előző 14 nap mentését tartja meg.
Első körben lekérdezi a helyi kiszolgálón az adatbázisokat (show databases;) majd a mysqldump paranccsal mentést készít róluk . Természetesen tömöríti a mentést.
Mint látható minden adatbázist lement, kivéve egyet, az information_schema nevűt. Ez ugyanis nem tartalmaz olyan adatot, ami máshol ne lenne elérhető, MySQL metaadatokat tartalmaz.
A mysql adatbázist sem mentjük, mivel onnan csak a felhasználói adatokra és jogosultságokra van szükség, azt pedig külön mentjük.
A korábbi mentések törlése find-del történik, így ha kimarad egy mentés, akkor sem maradnak régi fájlok.
Az adatbázisok struktúrájáról külön készítünk mentést. Ebben a táblák, view táblák, tárolt eljárások és függvények is bent vannak.
Adatbázisonként és adattáblánként külön fájlba mennek az adatok. Ez visszatöltéskor könnyíti meg az ember életét, ha csak egy-egy tábla kell.
A MySQL felhasználók és jogosultságok mentése is ezzel a szkripttel történik. Így könnyű visszaállítani szükség esetén.
Az alábbi egy, már sokszor változtatott MySQL adatbázis mentő szkript sokadik verziója:
#!/bin/bash
# Ennyi ideig őrizzük a mentést:
BACKUPTIME=14
# Ide mentünk:
DIRECTORY=/backup/MySQL  
#------------------------------------- Az alábbiakat ne módosítsd!
TODAY=`date +"%Y-%m-%d"`
MYCONFIG=" --defaults-file=/etc/mysql/debian.cnf  --skip-column-names "
MYCONFIG_BACKUP=" --defaults-file=/etc/mysql/debian.cnf --opt -Q --routines --triggers -e --skip-add-locks "  
for DBNAME in `mysql $MYCONFIG -e "show databases" | grep -v -E 'information_schema|mysql' `
do
        mkdir -p $DIRECTORY/$TODAY/$DBNAME
        mysqldump $MYCONFIG_BACKUP $DBNAME  --no-data  | bzip2 > $DIRECTORY/$TODAY/$DBNAME/mysql_dump.$DBNAME.structure.bz2
        for DBTABLE in `mysql $MYCONFIG $DBNAME -e "show tables"`
        do
                mysqldump $MYCONFIG_BACKUP $DBNAME $DBTABLE  | bzip2 > $DIRECTORY/$TODAY/$DBNAME/mysql_dump.$DBNAME.$DBTABLE.bz2
        done
done  
# SQL jogosultságok mentése:
mysql $MYCONFIG --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql $MYCONFIG --skip-column-names -A | sed 's/$/;/g' | bzip2 > $DIRECTORY/$TODAY/grants.bz2
# Régi mentések törlése
find  $DIRECTORY -maxdepth 1 -mtime +$BACKUPTIME -type d -exec rm -rf {} \;  
Várom a véleményeket