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.
- 1010 megtekintés
Hozzászólások
man mysqldump
keres: --ignore-table
- A hozzászóláshoz be kell jelentkezni
Kösz, csak nem tudott előre a táblák neve, tehát lehet hogy van 30 innodb-es engine-es, meg 10 memory-s, akkor hogy tudom megkülönböztetni? Egy ilyet találtam, ezzel ki tudom gyűjteni a tábla neveket ignore-hoz, de ennél egyszerűbb nincs?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Nem jó a db-k különválasztása program szempontjából. De amúgy jó ötlet.
- A hozzászóláshoz be kell jelentkezni
Az, hogy a program szempontjából nem jó, az egy dolog. Az üzemeltetési, és egyéb szempontok (aka nemfunkcionális követelmények) is számítanak egy rendszer teljes felépítésében.
- A hozzászóláshoz be kell jelentkezni
Egyetértek, csak a szoftver már kész és nem kompatibilis a javaslat a belső működésével, legalábbis csak nagy átalakítás árán.
- A hozzászóláshoz be kell jelentkezni
No offense, de akkor ott valami nagyon el van cseszve a perzisztencia-réteg absztrahálásában, ha nem lehet ennyire egyszerűen cserélni azt, hogy mit hova perzisztál.
- A hozzászóláshoz be kell jelentkezni
Ennél komplexabb a kialakítás, de meg lehetne csinálni persze.
- A hozzászóláshoz be kell jelentkezni
akkor hogy tudom megkülönböztetni?
Hm. Lekérdezed az összeset és kiválogatod scriptből? Vagy ez ilyen Linux-kezdő topik akart lenni?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Hogy érted hogy ne automatikusan tegyem? Szerintem kigyűjtöm automatikusan a memory engine-eseket és azt dobom az ignore listába. Vagy egyszerűen nyomok egy mysql restart-ot dump előtt.
- A hozzászóláshoz be kell jelentkezni
Í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";
- A hozzászóláshoz be kell jelentkezni
Valszeg ez lesz, kösz.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Nem open :)
- A hozzászóláshoz be kell jelentkezni
A mysqldump miért nem open? A komment arra vonatkozott, hogy küldj be patchet a mysqldumphoz, hogy képes legyen arra, hogy in-memory táblát ne dumpoljon.
- A hozzászóláshoz be kell jelentkezni
Félreértettem, azt hittem a szoftverre gondol, kösz a javítást.
- A hozzászóláshoz be kell jelentkezni