Portál AbcLinuxu, 10. května 2025 12:15

Dotaz: mysql + innodb a velikost souboru ibdata1 po výpadcích napajení

15.2.2009 13:24 ondrab | skóre: 12 | Milevsko
mysql + innodb a velikost souboru ibdata1 po výpadcích napajení
Přečteno: 1565×
Odpovědět | Admin

Zdravím,

nedávno jsem řešil jeden problém s nefunkční mysql. Databáze nenaběhla z důvodu nedostatku volného místa na disku, protože celý disk byl zaplněn ibdata1 souborem, který měl okolo 25GB.  Nevim proč byl měl takovou velikost, tolik data tam nebylo, podle phpMyAdmina celá databáze měla pouze okolo 1GB. Tento server byl často restartován přerušením napájení a v tom bude nejspíš ten problém. Databáze prostě nenaběhla a tak server restartovali jestě než se stačila obnovit po pádu.

Nesetkal jste se někdo s něčím podobným, nebo nevíte jak tomu předejít? Dík za rady.

Keep on keepin' on.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.2.2009 23:39 Jiří Hlinka | skóre: 29 | blog: zapisky | Teplice
Rozbalit Rozbalit vše Re: mysql + innodb a velikost souboru ibdata1 po výpadcích napajení
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravím,

AFAIK je to problém defaultního nastavení MySQL, které nenastavuje maximální velikost ibdata souborů (ale v komentáři v my.cnf je o tom zmínka ;-)).

Doporučoval bych:

1) zazálohovat datafiles (ibdata*)

2) nahodit mysql (pokud nejde spustit z důvodu nedostatku volného místa, máte imho smůlu, je prostě potřeba místo uvolnit)

3) dumpnout databáze

4) zastavit mysql

5) nastavit innodb_data_file_path podle Vašich potřeb (viz http://dev.mysql.com/doc/refman/5.0/en/innodb-configuration.html)

6) nastartovat mysql (možná bude ještě předtím dobré udělat mysql_install_db), naimportovat vydumpované databáze (př itakovém objemu doporučuju pro import zakázat kontrolu cizích klíčů - SET FOREIGN_KEY_CHECKS=0;)

...nyní by se měl ibdata držet na velikosti dané direktivou innodb_data_file_path.

17.2.2009 09:15 pupala | skóre: 21
Rozbalit Rozbalit vše Re: mysql + innodb a velikost souboru ibdata1 po výpadcích napajení
Ako sa to potom chová, ak aplikácia chce zväčšiť veľkosť InnoDB databázy nad stanovenú hodnotu? Lebo ak sa nemýlim,
tak všetky InnoDB tabuľky zo všetkých databáz sú len v tomto jednom súbore.
17.2.2009 10:09 razor | skóre: 33
Rozbalit Rozbalit vše Re: mysql + innodb a velikost souboru ibdata1 po výpadcích napajení
17.2.2009 10:01 ondrab | skóre: 12 | Milevsko
Rozbalit Rozbalit vše Re: mysql + innodb a velikost souboru ibdata1 po výpadcích napajení

Tohle přesně jsem udělal, export, smazaní DB, a import dat do nové.

Je mi ale záhodou, jakto že soubor ibdata1 tolik narostl. Tolik dat tam nemohlo být uloženo a data nebyla mazána. Nemohla velikost narůst při rekonstrukci souboru po nesprávném ukončení?

Ještě mě napadá jedna věc, jestli chyba může být někde v potvrzování transakcí.

Keep on keepin' on.
talpa avatar 17.2.2009 14:35 talpa | skóre: 2 | Praha 4
Rozbalit Rozbalit vše Re: mysql + innodb a velikost souboru ibdata1 po výpadcích napajení

je to tusim mrtvymi transakcemi a zaznamy, ktere se nemazou, ale zustanou v databazi i prestoze nebyly dokonceny, pomuze obnoveni dat z backupu nebo pro jine db existuje prikaz na vycisteni mrtvych zaznamu, kdyby jsi me zabil nevim.. ale myslim ze to zacinalo na F:))))

Tak nejak vse co mi prijde pod ruku
17.2.2009 20:17 Jiří Hlinka | skóre: 29 | blog: zapisky | Teplice
Rozbalit Rozbalit vše Re: mysql + innodb a velikost souboru ibdata1 po výpadcích napajení

jj, fVakuum :-D (joke)

21.2.2009 18:37 jooke | skóre: 9 | Opava
Rozbalit Rozbalit vše Re: mysql + innodb a velikost souboru ibdata1 po výpadcích napajení
Odpovědět | | Sbalit | Link | Blokovat | Admin

Jedine reseni je nastavit innodb per table a pak innodb_data_file_path na nejakou max rozumnou hodnotu.

Data se ti tak budou ukladat do ibd souboru a ibdata ti casem naroste na max hodnotu, ale pak uz nepreroste.

Jinak transakce se ukladaji do  transakcnich logu, takze maximalni hodnota ibdata muze byt malicka. Uz si to nepamatuji presne,

ale kdyz je innodb per table, tak by se nemelo skoro vubec vyuzit, ale celkove je innodb trochu tajemna, takze

bych urco nejakou max hodnotu dal a asi bych vubec nepouzil autoextend.

 

 

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.