2008-11-07 11 views
6

Szczerze mówiąc, triedthisleftandright i nadal uważam, że mój serwer lustrzany, skonfigurowany jako slave replikacji, pozostaje w tyle. Baza użytkowników mojej aplikacji wciąż rośnie, a teraz dotarłem do punktu, w którym nie mogę "zamknąć" bazy danych "zsynchronizować" (nawet w weekendy).Binlog MySQL Replication to "Bag of Hurt". Czy są jakieś dobre alternatywy?

W każdym razie moje pytanie: czy istnieją wiarygodne, przystępne cenowo, alternatywy dla replikacji binogów? Mam dwa serwery, więc nie zastanawiałbym się nad zakupem trzeciej strony dla równoważenia obciążenia, chyba że jest to jedyna opcja.

Cheers,

/MP

+0

replikacja mysql to stabilne, szybkie i smukłe rozwiązanie w porównaniu do alternatyw. book.com wykorzystuje niewiarygodnie wiele instancji mysql i kaskadowane konfiguracje replikacji z tego, co słyszałem. Jeśli twoja strona jest naprawdę zbyt duża, możesz potrzebować specjalisty, który pomoże ci rozwiązać problem, jeśli twój niewolnik nie jest zbyt mały pod względem sprzętowym. Osobiście mam konfiguracje z 10k + zapytaniami na sekundę, które nie mają problemów z opóźnieniem slave. Być może twoje ustawienia replikacji również nie są doskonałe. – sjas

Odpowiedz

10

Twój mistrz wykonuje równolegle i twój niewolnik wykonuje w szeregowym. Jeśli twój mistrz może przetworzyć 1,5 godziny wstawek/aktualizacji/wykonań w ciągu jednej prawdziwej godziny, twój niewolnik spadnie z tyłu.

Jeśli nie możesz znaleźć sposobów na poprawę wydajności zapisu na urządzeniu podrzędnym (więcej pamięci, szybsze dyski, usunięcie niepotrzebnych indeksów), osiągnąłeś ograniczenie w swojej architekturze aplikacji. W końcu trafisz na punkt, w którym nie możesz wykonać zmian w czasie rzeczywistym tak szybko, jak twój master może je wykonywać równolegle.

Wiele dużych witryn wyodrębnia swoje bazy danych: rozważ podzielenie jednostki nadrzędnej i niewolniczej na kilka grup głównych i podrzędnych. Następnie podziel bazę klientów na te klastry. Kiedy niewolnik zacznie się spóźniać, nadszedł czas, aby dodać kolejną grupę.

Nie jest tani, ale jeśli nie znajdziesz sposobu na wykonanie instrukcji wykonania replikacji binlog równolegle, prawdopodobnie nie znajdziesz lepszego sposobu na zrobienie tego.

Aktualizacja (2017): MySQL obsługuje teraz parallel slave worker threads. Nadal istnieje wiele zmiennych, które spowodują, że niewolnik zostanie opóźniony, ale niewolnicy nie muszą już pisać w kolejności szeregowej. Wybór kolejności zatwierdzania równoległych wątków podrzędnych jest ważną opcją sprawdzenia, czy dokładny stan urządzenia podrzędnego w którymkolwiek momencie jest krytyczny.

+0

Czasami trzeba usłyszeć surową prawdę. – mauriciopastrana

+0

Wszystkie aplikacje trafiają na jakieś ograniczenia skalowania. Większość baz danych trafia na dysk IO. Wygląda na to, że twoja jest replikacja. Z drugiej strony nie można kupić większych serwerów baz danych, aby wykonać zadanie.Po stronie plusów można kupić mniejsze serwery baz danych :) –

0

Dodanie pamięci do niewolnika prawdopodobnie pomogłoby. Przeszliśmy od 32 do 128 megarów, a opóźnienie w mniejszym lub większym stopniu ustąpiło. Ale nie jest ani tanie, ani nie wystarcza we wszystkich sytuacjach.

Kupno trzeciego serwera prawdopodobnie nie pomoże tak bardzo, najprawdopodobniej po prostu dostaniesz innego opóźnionego niewolnika.

1

Czy próbowałeś: 1) SET innodb_flush_log_at_trx_commit = 0 2) SET sync_binlog = 0

Zarówno przyczyni się do przyspieszenia slave o małym poziomie dodanego ryzyka, jeśli masz awarię serwera.

+0

Te dwie komendy będą czynić cuda, pod względem wydajności. Pamiętaj, że jeśli twój serwer główny ulegnie awarii, możesz utracić transakcje, które jeszcze nie dotarły do ​​binogramów na dysku z pamięci RAM. Jeśli to w porządku, powinieneś być szczęśliwy. – sjas

Powiązane problemy