Kisebb gyorsításokat hajtok végre a napokban a bringás siteokat kiszolgáló szerveren. A criticalmass.hu 22-én megint csúcsra lesz járatva, az alleycat.hu pedig szinte folyamatosan: először Goldenblog-győzelem, tegnap IGA, és a CM környékén is hagyományosan küldik az Alley-t is a népek.
Első körben MyISAM-ról átállunk ezek alatt az adatbázisok alatt InnoDB storage engine-re, amitől gyorsabb lesz minden írásművelet, hurrá. Ezt persze rég meg kellett volna már tenni, de idő hiányában sose történt meg.
Az átállás maga nem egy nagy etwas:
- Belövöd az InnoDB-t a szerveren: egyrészt ki kell kommentezni a skip-innodb opciót a /etc/mysql/my.cnf [mysql] szekciójában, másrészt beletolni pár opcionális sort. (Lásd MySQL doksi.)
- Kidumpolod a MyISAM táblákat:
mysqldump --default-character-set=utf8 -u[user] -p[pass] [db] > [db].sql
- Létrehozol egy új adatbázist: ez lesz majd az InnoDB-vel küldött adatbázis. (A régit egy ideig tartogatjuk a történelemkönyvek kedvéért.)
- MyISAM helyett InnoDB használatát állítod be, azaz kicseréled az ENGINE=MyISAM stringeket ENGINE=InnoDB stringekre:
sed 's/ENGINE=MyISAM/ENGINE=INNODB/' [db].sql >[db]-inno.sql
- Visszatolod az InnoDB sql-t az új (üres) adatbázisodba:
mysql -u[user] -p[pass] [db]-inno <[db]inno.sql
Egész jó kis migrációs howto-t találsz itt, kicsit több magyarázattal, mint az enyém. (Már így is túlragoztam, nemde?)
Ami következik:
- alleycat.hu átállítása ugyanígy;
- InnoDB backupmegoldás.
És ha az megvan, akkor jön a Lighty, vagy egy lecsupaszított Apache beállítása a terhelt oldalak kiszolgálására.
Update: Drupal.hu thread itt, egy jó ötlet pedig itt: file_per_table optimalizálás.
Update 2: Syntax Error megválaszolta a file_per_table kérdésemet, köszi:
én csak export-import megoldásról tudok. táblánként ki, átállít, minden drop, aztán táblánként be.
mysql manualból:
„innodb_file_per_table affects only table creation, not access to existing tables. If you start the server with this option, new tables are created using .ibd files, but you can still access tables that exist in the shared tablespace. If you remove the option and restart the server, new tables are created in the shared tablespace, but you can still access any tables that were created using multiple tablespaces.”
http://dev.mysql.com/doc/refman/5.0/en/multiple-tablespaces.html
hogyhogy egyáltalán ki volt kommentezve az InnoDB eddig? nálam ilyen sose fordult elő, mindig azzal együtt tolom fel a MySQL-t (sőt igazából mindig InnoDB-t használok, de ez nem kötelező, vannak mások által írt cuccok is rajtuk amik MyISAM-mal futnak de az az ő bajuk ;) )
történelmi okai vannak.
niceone!
ráengedek egy egy ilyet cronból.
miért és mikor jobb az innodb a myisamnál?
sz: szerintem az egyszerű és kis táblákon-alkalmazásokon kívül mindig az InnoDB jobb. van benne foreign key, transaction (commit, rollback, crash recovery), non-locking read (ami párhuzamos kérések kiszolgálásánál komoly performance boost)
mysql manual szerint:
„InnoDB has been designed for maximum performance when processing large data volumes. Its CPU efficiency is probably not matched by any other disk-based relational database engine.”
és:
„InnoDB is used in production at numerous large database sites requiring high performance. The famous Internet news site Slashdot.org runs on InnoDB.”
köszi SE, búvárkodom még a témában!