MySQL: ne dump-olja az in-memory táblákat

Sziasztok,

MySQL-ben lehet létrehozni in-memory táblákat, melyek tartalma elvész mysql server újraindítása után. Pont ez kellene.

Viszont mysqldump kinyomja az in-memory táblák tartalmát is.

Hogyan tudnék olyan mysqldump parancsot írni, amely nem dump-olja ki a memory engine-es táblák tartalmát vajon?

Köszi.

Hozzászólások

man mysqldump

keres: --ignore-table

Pár kérdésem lenne ezzel kapcsolatban:
1. Miért nem fontos az in-memory táblák tartalma? Attól, hogy azok elvesznek a MySQL szerver újraindítása után, még fontosak lehetne, ha egy adott időpontban lévő rendszer állapotát akarod visszaálítani. Baromi fontos adatok is lehetnek bennük, ha egy adott időpontra akarsz visszamenni, akár debugolási célból, akár másból.

2. Ha te kontrollálod azt az szofvert, ami készíti a táblákat, miért nem rakod őket külön adatbázisba? Külön DB a perzisztens, és külön DB a nemperszisztens relációs adatokatnak. A MEMORY engine idegen kulcsokat amúgy sem támogat, úgyhogy a két adatbázis között nincsen semmilyen reláció - hiszen annak sincs értelme, hogy a perzisztens adattábla nemperzisztens adattáblára tartalmazzon idegen kulcsot. És ekkor elég csak a perzisztens DB-t dumpolnod és készen is van.

Ez egyértelmű, már megoldottam. A dump parancsra értettem hogy hogyan tudom kiválogatni hatékonyan. SQL lekérdezéssel megy természetesen. Csak itt bejöhetnek olyanok hogy milyen limitje van a shell argument listának stb, tehát nem tartom egészen jó megoldásnak:

$ getconf ARG_MAX
2097152

Ha meg megnövelem, akkor szerintem könnyebben DoS-olhatnak.

Azt írod kell a funkció, de nem tudod mi lesz a táblanév... Ha fontos ignorálni, akkor mindenképp valamilyen szinten jóváhagyott listára lesz szükséged. Szóval a korábbiakat csak azzal egészíteném ki, hogy ha már bármit kihagysz a mentésből, azt ne automatikusan tedd.

Írj rá egy scriptet, ami az alábbi query alapján felépít egy listát, majd azt rakd be --ignore-table paramétereként mysqldump-ba.
SHOW TABLE STATUS FROM `database` WHERE `engine` LIKE "memory";

Open source, nem? Fejlessz egy flag-et, ami ezt megoldja, és küldd be nekik :). Tipikus esete annak, amikor a fejlesztővel egyeztetve a legkönnyebb a tákolás helyett.