Temat: MySQL i SLES 10 backup
Generalnie się sprawdzi, z treści pytania inicjującego dyskusję wnioskowałem, że do dyspozycji jest jedna maszyna więc niuansów replikacji nie poruszałem :-)
Oczywiście nie byłbym sobą, jakbym nie znalazł wielu różnych 'ale'.
Jeśli masz replikację to zapewne dlatego, że master nie wytrzymywał obciążenia. Wyłączając slave'a dorzucasz masterowi 'do pieca'. W godzinach nocnych to zda egzamin, o ile akurat to nie jest średniej wielkości stronka na której google sobie wymarzyło zapuścić indeksowanie w trakcie backupu.
Cała mechanika backupu MySQL sprowadza się do tego, żeby mieć wierną i spójną kopię plików bazy danych z danej chwili 't0'.
Posiadanie 'logicznej' kopii danych (czyli dumpa) nie jest warunkiem niezbędnym, ale się bardzo przydaje, gdy właśnie trwa 'czarna godzina' i wszystko poszło źle. Szczególnie, jak nie jest to bardzo stara logiczna kopia danych i jest na zewnętrznym względem maszyny nośniku, np. na szyfrowanym hdd trzymanym w tzw. bezpiecznej lokalizacji.
Z replikacją problem może być taki, że wcale nie jest powiedziane, że slave jest wierną kopią mastera. Te same tabele mogą mieć inne silniki. Slave może nie replikować wszystkich baz (np. nie włączysz replikacji bazy 'mysql', w której siedzą procedury i nawet tego nie zauważysz bo one mogą być potrzebne tylko masterowi. A jak będzie awaria to nagle 'zonk' - nie mamy pełnej kopii).
Gdy programiści mogą samodzielnie tworzyć bazy/tabele to może się okazać, że ktoś dodał coś, co nie jest replikowane, a po pół roku okazało się, że jednak powinno replikacji podlegać.
Zgodnie z prawem Murphy'ego awaria będzie dotyczyć właśnie tego czegoś :-)
Jeśli slave ma służyć wyłącznie backupowi, to są lepsze sposoby wykorzystania maszyny, np.
DRBD.
Zwykle aplikacja korzystająca z architektury replikowanej ma jakiś poziom opóźnienia, który jest akceptowalny i dosłownie wszystko zależy tu od specyfiki systemu - gdy prawie nie ma aktualizacji danych a odczyty są problemem, to wyłączenie slave zapewni backup, ale obciąży mastera, a gdy zapisów jest dużo, to wyłączenie slave spowoduje najprawdopodobniej osiągnięcie nieakceptowalnego opóźnienia (można na czas doganiania mastera selecty kierować do mastera, ale znowu pojawia się obciążenie, wszak nie bez powodu bazę obsługują dwa serwery).
Z powyższych powodów nadal bym obstawał przy wersji z migawką LVM na masterze.
Natomiast pliki bym skopiował na slave'a i tam je wciągał do drugiej instancji MySQL i potem robił dumpa - dla systemu powinno być to pomijalne obciążenie.
A jeśli nie jest pomijalne, ale bazy nie są jakoś astronomicznie wielkie (terabajty?), to można pliki z migawki przepchnąć dosłownie gdziekolwiek indziej i tam sobie je wciągać, choćby i pół dnia na desktopie z dużym dyskiem, 2GB RAM i jednym rdzeniem 1.7 GHz :-)
Paweł Skarżyński edytował(a) ten post dnia 09.04.10 o godzinie 14:53