MySQL na SD kartě - MyISAM nebo InnoDB?

P. Poláček

MySQL na SD kartě - MyISAM nebo InnoDB?
« kdy: 27. 11. 2014, 20:42:19 »
Ahoj,

Mám takovou prosbu. Potřebuji na Raspberry Pi dlouhodobě provozovat MySQL databázi. Bude ukládat data z měřících přístrojů. Asi 10 tabulek a do zhruba 4 z nich se bude pravidelně zapisovat. Každou minutu 1 až 3 záznamy. U ostatních jednou denně nějaký sumární výpočty s asi 100 zápisy. Transakce nepotřebuju a bez ref. integrity atd. se taky obejdu, takže mám na výběr mezi MyISAM a InnoDB tabulkami.

Je možné říct, který typ tabulek je odolnější vůči chybě datového média při zápisu? Prostě kdyby začala karta při zápisech časem blbnout, tak u kterého typu tabulek je větší pravděpodobnost, že datové soubory zůstanou konzistentní alespoň pro čtení a půjde je odkopírovat jinam.

Na první pohled se mě zdá výhodnější MyISAM, který má každou tabulku v samostatných souborech. Ale vím, že i u InnoDB lze SQL server nastavit tak, aby každá tabulka měla svůj soubor. Což je pro záchranu dat asi lepší, než když je vše v jednom velkém souboru (výchozí nastavení InnoDB).

Filesystém karty bude ext4 s relatime. Kartu samozřejmě zvolím co největší kvůli rozložení zápisů.
Zatím mě to tu běží asi do července v testovací verzi na malé 4GB kartě a vše bez problémů. Ale než to nasadím naostro místo PC, rád bych ještě toto dořešil.

To PC tu běží už asi 5 let a taky párkrát spadlo (výpadek proudu a slabá UPS). Ale u MyISAM to vždycky odnesly jen indexy a vše vyřešil myisamchk. U SD karty hrozí spíš chyba média a tak bych jen chtěl vědět, jestli InnoDB není víc odolná na tento typ chyb. Zálohování samozřejmě bude.

Díky předem za rady.
Petr


Kit

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #1 kdy: 27. 11. 2014, 21:03:44 »
Asi bych zvolil typ CSV.

j

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #2 kdy: 27. 11. 2014, 21:21:18 »
1) ses si jistej, ze potrebujes MySQL? Nestacilo by neco lehciho?
2) karta (ani zadny jiny podobny medium) nikdy nezacne blbnout, ale proste z minuty na minutu zdechne. A nejen ze na to nic nezapises, ty z toho uz ani nic neprectes. A ver tomu, ze pri provozu MySQL ta karta kdyz vydrzi mesic, muzes si gratulovat.

Mimochodem, karta nema zadnej radic, kterej by se staral o pocet zapisu, takze ti velikost nepomuze.

fahacz

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #3 kdy: 27. 11. 2014, 21:30:24 »
SQLite? Nebo tmpfs na nem SQLite a rsync napr. po 15/30min nekam na backuper?

karel

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #4 kdy: 27. 11. 2014, 21:49:19 »
souhlasim ze co se karty tyka tak proste zdechne,
doplnil bych to pi o flesku, ci dve at mas zalohy nebo paklize to pi bude na siti pravidelne bych si data stahoval.

Zadruhe je opravdu otazka zda je nutne na to pouzivat databazi


Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #5 kdy: 27. 11. 2014, 22:39:50 »
narozdil od ostatnich k dotazu: dnes uz pouzivam jen innodb + file per table nastaveni(+ par dalsich veci jako barracuda, nastaveni bufferu apod ktery nepotrebujes).
Děkuji za možnost editace příspěvku.

P. Poláček

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #6 kdy: 28. 11. 2014, 08:47:39 »
Díky všem za postřehy.

Neviděl bych to tak černě s tím, že karta vydrží jen měsíc. Jak jsem psal, jede mě to tu pokusně už skoro půl roku a zatím není problém. To ale neznamená, že se to zítra nepodělá. Takže díky za upozornění, že karta zdechne z ničeho nic úplně. Myslel jsem, že blbnout začne jen zápis kvůli omezenému počtu zápisových cyklů na paměťovou buňku. Zálohovat určitě budu, zřejmě na tu flešku a po zapnutí PC i na počítač.

SQLite bohužel neumí pracovat úplně korektně s datumem a časem, takže je to pro můj případ špatně použitelné. Respektive bych musel matematické operace u datumů dělat v programu. Navíc si nejsem jistej, jestli je SQLite nějak šetrnější k mediu typu paměťová karta. Tam asi rozdíl nebude. Nebo jo?

Zajímavá je ta myšlenka s natažením DB do tmpfs v RAM a občas překopírovat na kartu. To bude asi správná cesta.
Nad InnoDB se samostatnými soubory pro tabulky jsem taky uvažoval. Ale je tam nějaká výhoda oproti MyISAM, když nepotřebuju transakce atd? Nebude to jen pomalejší?

Petr

karel

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #7 kdy: 28. 11. 2014, 09:24:37 »
No a co zkusit mariadb a aria tenle engine kombinueje vyhody obou zminenych

zrychlene povidani wiki http://en.wikipedia.org/wiki/Aria_%28storage_engine%29

https://mariadb.com/kb/en/mariadb/documentation/storage-engines/aria/


ja mariadb pouzivam uz na vsechno

DK

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #8 kdy: 28. 11. 2014, 09:30:28 »
No a co zkusit mariadb a aria tenle engine kombinueje vyhody obou zminenych

zrychlene povidani wiki http://en.wikipedia.org/wiki/Aria_%28storage_engine%29

https://mariadb.com/kb/en/mariadb/documentation/storage-engines/aria/


ja mariadb pouzivam uz na vsechno

Aria imho neni vubec transakcni, takze vubec nekombinuje vyhody MyISAM a InnoDB (spis je to jenom takove vylepsene MyISAM)... osobne bych asi zvolil XtraDB (Percona), nicmene na SD karte to asi fakt nevydrzi moc dlouho

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #9 kdy: 28. 11. 2014, 09:36:53 »
Ja teda taky jedu uz jen na marušce. Aria nepouzivam, InnoDB vs MyISAM vidim asi tak, ze zadny problemy za to nestoji. Zkratka InnoDB mi narozdil od MyISAM nekleklo nikdy.

Se zatezi 1-3 zaznamy za minutu nepoznas vykonnostni rozdil.
Děkuji za možnost editace příspěvku.

karel

Re:MySQL na SD kartě - MyISAM nebo InnoDB?
« Odpověď #10 kdy: 28. 11. 2014, 10:42:38 »
Aria imho neni vubec transakcni, takze vubec nekombinuje vyhody MyISAM a InnoDB (spis je to jenom takove vylepsene MyISAM)... osobne bych asi zvolil XtraDB (Percona), nicmene na SD karte to asi fakt nevydrzi moc dlouho

pro dotaz je podle me aria dobra volba prave proto ze je to MyISAM s transakcnim logem, cili nezhrou ti se jako MyISAM ale neni narocna jako InnoDB, sam tazatel tvrdi ze transakce jako takove nepotrebuje, rozhoduje se z pohledu vykonu x stabilita a zde mi aria prijde jako dobra volba