2010-12-10 13 views

Odpowiedz

14

Tak sądzę. Po powieleniu działa, możesz upuścić indeksy na slave i utworzyć indeksy, które chcesz i że powinno to zrobić. Ponieważ MySQL replikuje instrukcje, a nie dane (przynajmniej domyślnie), tak długo, jak SQL niezbędny do wstawienia lub aktualizacji lub wyboru z tabeli nie musi się zmieniać, nie powinien tego zauważyć.

Teraz są oczywiście wady tego. Jeśli utworzysz unikatowy klucz, którego nie ma w urządzeniu nadrzędnym, możesz uzyskać dane wstawione do urządzenia nadrzędnego, których nie można włożyć do urządzenia podrzędnego. Jeśli aktualizacja zostanie wykonana przy użyciu indeksu, może działać szybko na wzorzec, ale powoduje skanowanie tabeli na slave (ponieważ nie masz żadnego indeksu był przydatny).

A jeśli jakiekolwiek zmiany DDL kiedykolwiek staną się na kapitanie (np. W celu zmiany indeksu), które zostaną przekazane do niewolnika i nowy indeks zostanie utworzony tam również, nawet jeśli nie chcesz tego.

+0

jak można zmienić tabelę niewolnikiem? – jeffry

2

Oczywiście, uważam, że nawet powszechną praktyką jest replikowanie tabel InnoDB w tabelach MyISAM na niewolniku, aby móc dodawać indeksy pełnotekstowe.

14

Na pewno. Ciągle to robię. Problemy Zabrakło mi:

  • indeksów odsyłania poprzez FORCE/USE/IGNORE INDEX w SELECTS będzie error out
  • indeksy odniesienie w ALTER statments na wzorcu może złamać replikacji
  • Dodaje kolejny krok do promowania niewolnika być mistrzem w przypadku awarii:
  • Jeśli używasz replikacji opartej na instrukcjach (norma) i bawisz się indeksami UNIQUE, wszelkie statystyki INSERT... ON DUPLICATE KEY, INSERT IGNORE lub REPLACE spowodują ekstremalne dryfowanie danych/d ivergence
  • różnice wydajności (zarówno dobre i złe)
+0

Jak zmienić tabelę niewolników? – jeffry

Powiązane problemy