ibdata shrink [megoldva]

Van egy 15GB-s ibdata-m, ami valójában már kevesebb adatot tartalmazhat, csak nem lehet karcsúsítani.
Dumpolnám és különálló fájlokba raknám azokat a táblákat, amik még benne vannak, csak nem tudom, hogy mely táblák érintettek.
Tudtok valami egyszerű lekérdezést, ami megmondja, hogy egy tábla melyik fájlban található?
Mert így nem kellene a teljes adatbázist kidumpolni.

Köszi!

Hozzászólások

Kb. 20 perccel ezelőtt töltöttem fel... :)

Hát akkor módosítsd a szkriptet, hogy csak a megtalált táblákat dumpolja.
Bár szerintem ez kicsit megbonyolítja a dolgot mert egy szinttel részletesebben kell foglalkozni a dologgal. Nem elég az adatbázis (ahol innodb van használva) hanem azon belül a táblákkal kell foglalkozni.

- Tehát megkeresed az innodb-t használó táblákat
- A megtalált táblákról készítesz dumpot
- Eldobálod a táblákat
- Mysql stop
- innodb fájlok törlése
- Mysql start
- Táblák visszatöltése a megfefelő adatbázisokba.

--
maszili

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'innodb' limit 1 \G
ezek kozott nez korul,hatha valamelyik ertek rautal :D

emlitett lekerdezes | awk -val szetszedbe es megnezve,hogy a db/table.ibd letezik-e, es van merete, ha nem akkor biztosan ezek a tablak vannak kulon.
valami ilyesmi:
cd /var/lib/mysql
echo "SELECT table_schema, table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = 'innodb';" | mysql | while read line
do
if [ -s `echo $line.ibd |sed 's/ /\//'` ]
then
true
else
echo $line
fi
done
Normalis esetben a fejlecet meg kell kapnod,hogy rossz.

"szeparalt file" alatt a myisam storage engine-t erted?

szerintem innodb_file_per_table-re gondol.

amugy szerintem egy INSERT INTO tmp SELECT * FROM tabla, drop table tabla, rename table tmp table komboval is meg lehet oldani, es nemkell dumpolni.

de lehet mas is van.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Optimize table az innodb-kre?