2013-01-18 15 views
9

Mamy oddzielną instancję RDS do obsługi tabel stanu sesji, jednak okazało się, że obciążenie sesji SQL jest bardzo niskie. jeśli możemy przekonwertować sesję obsługi wystąpień jako Read Replica głównej DB, możemy użyć jej do zadań tylko do odczytu, które są bezpieczne nawet przy dużym opóźnieniu w kopii.Na RDS mogę tworzyć tabele w Read Replica, które nie są obecne w Master?

Czy ktoś zrobił coś takiego na RDS (czy jest to możliwe i bezpieczne)? Czy powinienem uważać na jakiekolwiek poważne skutki uboczne? Pomocne będą wszelkie linki lub pomoc w lepszym zrozumieniu tego.

http://aws.amazon.com/rds/faqs/#95 próbuje odpowiedzieć na pytanie, ale szukam więcej informacji.

Odpowiedz

-1

Nie ma wiele do dodania - jedynym normalnym scenariuszem, który naprawdę ma sens w przypadku czystej repliki odczytu, jest np. Dodawanie kilku indeksów itp., Jeśli jest używany przede wszystkim do raportowania lub wykonywania innych czynności wymagających odczytu.

Jeśli próbujesz wstępnie obliczyć wiele danych i w inny sposób zmodyfikować zawartość repliki czytającej, musisz być naprawdę uważać, aby nie zmieniać danych - jeśli odczyt nie jest już spójny, "Masz kłopoty :)

Jeśli jesteś ciekawy, co się stanie, jeśli zmienisz dane na urządzeniu slave, a kapitan spróbuje je zaktualizować, jesteś już w drodze do niewłaściwej ścieżki IMHO.

TL; DR Nie rób tego, chyba że naprawdę wiesz, co robisz i rozumiesz wszystkie konsekwencje.

  • I dosadnie, replikacji MySQL może być ekscentryczne z mojego doświadczenia, więc nawet nie wiedząc, co się powinien się stało i co ma zdarzyć, jeśli nie jako mistrz próbuje napisać aktualizowane dane do niewolniczej masz także zaktualizowane .... kto wie.
3

Tak, jest to możliwe. Używam go z powodzeniem za pomocą RDS, dla konkretnego przypadku lokalnej pamięci podręcznej.

Musisz ustawić parametr read_only na swojej replice na 0. Aby ten parametr zadziałał, musiałem zrestartować mój serwer.

Będzie dobrze działał, jeśli użyjesz różnych nazw tabel, ponieważ RDS nie pozwala ustawić parametru: replicate-ignore-table.

Pamiętaj, że nie może dojść do kolizji danych między kapitanem <> niewolnikiem. Jeśli istnieje instrukcja, która działa poprawnie na MASTER, ale kończy się niepowodzeniem na SLAVE, to właśnie zepsułeś replikację. To może się zdarzyć np. po utworzeniu tabeli pod numerem SLAVE najpierw, po pewnym czasie dodałeś tę tabelę do MASTER. Instrukcja CREATE będzie działać czysto na MASTER, ale zakończy się niepowodzeniem na SLAVE, ponieważ tabela już istnieje.

Zakładając, że musisz być naprawdę ostrożny, umożliwiając pisanie aplikacji do SLAVE. Jeśli zapomnisz/lub popełnisz błąd i zaczniesz pisać, aby odczytać replikę niektórych innych danych, na końcu możesz utracić dane lub problemy z debugowaniem.

+0

Występuje błąd podczas wykonywania operacji usuwania, ponieważ użytkownik ma tylko uprawnienia do wyboru dla wszystkich tabel.Kiedy przyznam użytkownikowi uprawnienia do odczytu w replice odczytu, otrzymuję komunikat o błędzie: 'Odmowa dostępu dla użytkownika ...' Jak nadać uprawnienia w instancji RDS czytającej replikę? –

Powiązane problemy