Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Migawka woluminu EBS używanego do replikacji

Chociaż dobrym pomysłem jest zablokowanie bazy danych i zamrożenie systemu plików podczas inicjowania migawki, rzeczywiste wywołanie interfejsu API w celu zainicjowania migawki zajmuje ułamek sekundy, więc baza danych i system plików nie są zablokowane/zamrożone na długo.

To powiedziawszy, istnieje kilka innych kwestii, o których nie wspomniałeś:

  1. Podczas próby utworzenia blokady w bazie danych może być konieczne oczekiwanie na zakończenie innych instrukcji przed przyznaniem blokady. W tym czasie oczekująca blokada może poczekać, aż otrzymasz i zwolnisz blokadę. Może to spowodować przerwy w przepływie instrukcji w Twojej produkcyjnej bazie danych.

  2. Po zainicjowaniu tworzenia migawki Twoja aplikacja/baza danych może swobodnie korzystać z systemu plików na woluminie, ale jeśli masz dużo zapisów, możesz doświadczyć wysokiego iowait, czasami wystarczającego do zauważalnego spowolnienia aplikacji. Powodem tego jest to, że proces migawki w tle musi skopiować blok do S3, zanim zezwoli na zapis do tego bloku na aktywnym woluminie.

Rozwiązuję pierwszy problem, prosząc o blokadę i limit czasu, jeśli nie zostanie szybko przyznany. Potem trochę czekam i próbuję ponownie, aż dostanę blokadę. Odpowiednie limity czasu i opóźnienie ponownych prób mogą się różnić w zależności od obciążenia bazy danych.

Drugi problem rozwiązuję wykonując częste, spójne migawki na slave zamiast na master, tak jak proponowałeś. Nadal zalecam wykonywanie okazjonalnych migawek na wzorcu, aby poprawić jego wewnętrzną trwałość (właściwość deep EBS), ale te migawki nie muszą być wykonywane z blokowaniem lub zamrażaniem, ponieważ nie będziesz ich używać do tworzenia kopii zapasowych.

Polecam również korzystanie z systemu plików, który obsługuje opróżnianie i zamrażanie (XFS). W przeciwnym razie wykonujesz migawkę zablokowanych tabel w MySQL, które mogą jeszcze nie mieć wszystkich swoich bloków na woluminie EBS lub inne części systemu plików mogą zostać zmodyfikowane i niespójne w migawce.

Jeśli jesteś zainteresowany, opublikowałem oprogramowanie open source, które wykonuje najlepsze zebrane przeze mnie praktyki związane z tworzeniem spójnych migawek EBS za pomocą MySQL i XFS (oba opcjonalne).

Aby odpowiedzieć na ostatnie pytanie, zablokowanie tabel w masterze nie spowoduje przerwania replikacji. W moim oprogramowaniu do tworzenia migawek również opróżniam tabele z blokadą odczytu, aby upewnić się, że wszystko jest na dysku, na którym jest zrzut ekranu, i dodaję słowo kluczowe „LOCAL”, aby opróżnianie nie było replikowane do żadnych potencjalnych urządzeń podrzędnych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest typ danych tablicy DC2Type w mysql

  2. WorkbenchJ — Błąd:agregaty niedozwolone w klauzuli GROUP BY

  3. Czy usunięcie wiersza z widoku powoduje usunięcie wiersza z tabeli bazowej - MySQL?

  4. Jak ograniczyć głosowanie dziennie według IP w głosowaniu PHP+Mysql?

  5. lavaral 5 ERROR{ (SQLSTATE[HY000] [1045] Odmowa dostępu dla użytkownika 'root'@'localhost' (przy użyciu hasła:YES)}