Fórum Root.cz
Hlavní témata => Server => Téma založeno: MySQL TABLE 40GB 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!
-
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.
-
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 :-)
-
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