Mam pytanie dotyczące usuwania dzienników binarnych w środowisku replikacji:
Mamy środowisko z 1 masterem i 2 slaveami (działającymi w mysql 5.5). Czasami napotykamy problemy z przestrzenią podczas ciężkich czasów przetwarzania, w wyniku których katalog dziennika bin zapełnia się. Dzienniki wygasają co 3 dni. Zastanawiałem się, czy istnieje powód, dla którego logi powinny być przechowywane przez 3 dni na wszystkich skrzyniach - master i obaj slave? Czy miałoby sens, na przykład, przechowywanie dzienników przez 3 dni u mistrza, a przez 1 dzień w niewolnikach? Jak najlepiej to zrobić?
Dziękuję Ci!
Odpowiedzi:
NIEWOLNIK
Jeśli Twoi Niewolnicy nie są Mistrzami, wtedy Niewolnicy w ogóle nie potrzebują rejestrowania binarnego. Możesz nałożyć limit na ilość miejsca w dzienniku przekaźników zgromadzonym przez Slave. Aby dławić dzienniki przekaźnika przy 4G, dodaj
relay_log_space_limit
do /etc/my/.cnf na każdym Slavei zrestartuj mysql
Jeśli nie możesz tego ustawić, przynajmniej powinieneś mieć jakieś ostrzeżenie, które to robi
SHOW SLAVE STATUS\G
i sprawdzić wartośćRelay_Log_Space
(całkowita liczba bajtów zużyta przez dzienniki przekazywania).MISTRZ
Jeśli chodzi o Mistrza, możesz ustawić
expire_logs_days
na 1, ale mam dla ciebie surowe ostrzeżenie ...Jeśli replikacja się zepsuje, masz 1 dzień na jej naprawienie. W przeciwnym razie dziennik binarny na serwerze głównym może się obracać i nie można uruchomić żadnego polecenia CHANGE MASTER TO, aby wyrównać replikację. Wyszedłbym
expire_logs_days
o 3 na Mistrza.SUGESTIA # 1
Jeśli masz do czynienia z przetwarzaniem zbiorczym w ciągu nocy, być może powinieneś uruchomić procesy zbiorcze w Master
SET SQL_LOG_BIN=0;
na początku sesji. To oczywiście nie powiela się w Slave. Możesz wykonać to samo obciążenie masowe równolegle do obu urządzeń podrzędnych.SUGESTIA # 2
Inną rzeczą, którą możesz zrobić, aby zarządzać akumulacją dzienników binarnych Master, jest to.
Uruchom
SHOW SLAVE STATUS\G
na obu niewolnikach. PatrzećRelay_Master_Log_File
. Reprezentuje dziennik binarny na Master, którego ostatnie polecenie zostało wykonane na Slave.W tym przykładzie Relay_Master_Log_File to mysql-bin.009590. Wszystkie dzienniki binarne przed tym można usunąć z Master. Możesz uruchomić to na Master:
Spowoduje to usunięcie starszych dzienników i pozostawi replikację w takcie.
CAVEAT
Dzienniki binarne to pliki, które szeregowo kompilują (podobnie jak kolejka FIFO) wszystkie zakończone transakcje SQL jako instrukcję SQL lub zmianę wiersza. Dziennik przekazywania jest plikiem, który zbiera wpisy dziennika binarnego ze zdalnego serwera (zwanego także Master).
W replikacji MySQL
Jeśli przejdziesz w tryb failover do Slave i chcesz uczynić go mistrzem
log-bin=mysql-bin
do /etc/my.cnf w SlaveBędziesz musiał skonfigurować replikację innych Slaveów na nowo promowanym Master i upewnić się, że dane w Slave są zgodne z nowo promowanym Master
AKTUALIZACJA 2012-08-13 17:47 EDT
Zgodnie z dokumentacją MySQL dotyczącą
relay-log
opcji należy ją zdefiniować. Oto dlaczego:źródło