Portál AbcLinuxu, 30. dubna 2025 09:13
Tak jsem se take musel ponorit do taju databazoveho systemu MySQL, abych se pokusil vyresit nasledujici problem.
V soucasne dobe pouzivam 2 servery, jeden jako master, druhy jako slave. Kazdy zaznam na master server se replikuje na slave, proste klasicka replikace.
Jenze data pribyvaji, cca 3-10 zaznamu za minutu na master server, to vse replikovano na slave (celkem asi 35 milionu zaznamu v ruznych databazich a tabulkach). Po diskusi typu "vsechna data jsou dulezita, nektera vsak jeste dulezitejsi" se doslo k zaveru, ze data starsi nez rok nejsou tak dulezita, presto jejich odstraneni nepripada v uvahu. Proto bych chtel dojit k nasledujicimu reseni:
Pridat treti server, na ktery by se opet replikovaly vsechny zaznamy (data or roku 2004, kazda tabulka obsahuje sloupec timestamp). Na master serveru nastavit, aby se kazdy den (napr. v pulnoci) smazaly data starsi nez jeden rok (ve vsech databazich, ve vsech tabulkach). Potom bych mel nejdulezitejsi data na master i slave serveru vzdy do stari jednoho roku, na tretim serveru pak vsechny, vcetne tech nejaktualnejsich.
Bohuzel nejsem v MySQL tak zbehly, tak jsem se chtel zeptat, zda uz nekdo podobny pripad neresil, popripadne me nakopnul spravnym smerem. Problem replikace je, ze replikuje opravdu vsechno, tedy nevim, jak nastavit presouvani dat na treti server, a jak resit automaticke mazani starsich dat nez jeden rok (nejspis pomoci nejake stored procedure?)...
Nebo lze tento problem resit uplne jinak?
Tiskni
Sdílej:
a master serveru nastavit, aby se kazdy den smazaly data starsi nez jeden rok.Pokud nemáte problém s místem, nedělal bych archivaci každý den. Zbytečně budete fragmentovat databázi a nutit jí stavět nové indexy (nebo naopak bude používat zastaralé indexy). Perioda jednou za měsíc by podle mne mohla stačit.
bych vytvoril vzdy neco jako "old" tabulku, ktera by mela identickou strukturu jako hlavni, ale odlejvala by se do ni data starsi nez rokNebo použít partyšny v Oraclu
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.