MySQL 5.1 a optimalizace bez čekání

MySQL TABLE 40GB

MySQL 5.1 a optimalizace bez čekání
« kdy: 08. 02. 2012, 15:19:15 »
Zdravim!

Chtel bych se zeptat jak nejlepe resit nasledujici problem. Mame strukturu DB serveru master1 s asynchronni replikaci na server slave1. Na master1 tak i na slave1 mame velmi dulezitou tabuly ktera ma 50GB, tuto tabuly chci alespon jednou zacas optimalizovat pomozi OPTIMIZE TABLE. Pokud takovou optimalizaci spustim na master1, optimalizace trva 5-6h a tabule je ve stavu LOCKED, takze to pro nas znamena vypadek.

Je nejaka sance optimalizovat tuto tabuly "stranou" a potom ji hlavnimu DB serveru master1 podstrcit, abychom neztratili data zmen a nemeli vypadek? Resi tuto situaci jine rozlozeni DB serveru? Myslim tim napriklad model master1-master2 nebo MySQL Cluster.

Diky za cenne rady!
« Poslední změna: 08. 02. 2012, 23:45:59 od Petr Krčmář »


mysql tables > 40 GB :)

Re:MySQL 5.1 - OPTIMIZE TABLE
« Odpověď #1 kdy: 08. 02. 2012, 18:03:55 »
Tuhle situaci jednoduse neresi vubec nic - mysql "replikuje" pomoci logu, to znamena, mimo dalsich hruz, ze ten dotaz se proste spusti na vsech serverech a vsechny si daji tu sestihodinovou praci. Reseni? Zmena designu aplikace.

neopreno

Re:MySQL 5.1 - OPTIMIZE TABLE
« Odpověď #2 kdy: 08. 02. 2012, 18:23:26 »
Prave riesim podobny problem. Jedine riesenie, ktore ma napadlo je take, ze mam rozbehnutu Master-Master replikaciu s kruhovou replikou, pricom slave je vzdy v rezime read-only. Stopnut kruhovu repliku a najskor spravit optimize table na slave-ovi - po dobehnuti spustit reset master. Potom spravit nanovo kruhovu repliku a vymenit serverom ulohy. Ten server, ktory bol master je teraz slave, znova stopnut kruhovu repliku a spustit optimize table. Po dobehnuti vratit znova vytvorit kruhovu repliku a master-a povodnemu serveru.

Ak napadne niekoho nievo lepsie, rad uvitam :-)

Re:MySQL 5.1 - OPTIMIZE TABLE
« Odpověď #3 kdy: 08. 02. 2012, 19:04:39 »
pokud nevadi maly vypadek (ktery v porovnani s 5ti hodinama bude opravdu zanedbatelny) tak bych postupoval takto:
- spustit optimize na slave serveru (predpokladam ze z nej zadny klient nic necte a slouzi jen jako live backup)
- az optimize skonci, pockat na replikovani dat z masteru, ktere cekaly na lockovanou tabulku ktera se optimalizovala
- pak prohodit master za slejv