Fórum Root.cz

Hlavní témata => Server => Téma založeno: MySQL TABLE 40GB 08. 02. 2012, 15:19:15

Název: MySQL 5.1 a optimalizace bez čekání
Přispěvatel: 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!
Název: Re:MySQL 5.1 - OPTIMIZE TABLE
Přispěvatel: mysql tables > 40 GB :) 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.
Název: Re:MySQL 5.1 - OPTIMIZE TABLE
Přispěvatel: neopreno 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 :-)
Název: Re:MySQL 5.1 - OPTIMIZE TABLE
Přispěvatel: Tomas Matejicek 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