2010-12-10 7 views

Antwort

14

Ich glaube schon. Nachdem die Replikation funktioniert, können Sie die Indizes auf dem Slave löschen und die gewünschten Indizes erstellen, die dies tun sollen. Da MySQL Anweisungen repliziert und keine Daten (zumindest standardmäßig), solange das SQL, das zum Einfügen oder Aktualisieren oder Auswählen aus der Tabelle erforderlich ist, nicht geändert werden muss, sollte es dies nicht bemerken.

Jetzt gibt es natürlich Nachteile. Wenn Sie einen eindeutigen Schlüssel erstellen, der nicht auf dem Master ist, könnten Sie Daten auf dem Master einfügen, die nicht auf dem Slave eingefügt werden können. Wenn ein Update durchgeführt wird, das einen Index verwendet, kann es schnell auf dem Master laufen, aber einen Tabellen-Scan auf dem Slave verursachen (da Sie keinen Index griffbereit haben).

Und wenn irgendwelche DDL-Änderungen jemals auf dem Master passieren (zum Beispiel einen Index zu ändern), die an den Slave übergeben werden und der neue Index wird auch dort erstellt, auch wenn Sie nicht wollen.

+0

Wie ändern Sie die Slave-Tabelle? – jeffry

2

Sicher, ich denke, es ist sogar eine übliche Praxis, InnoDB-Tabellen in MyISAM-Tabellen auf dem Slave zu replizieren, um Volltextindizes hinzufügen zu können.

14

Sicher. Das mache ich die ganze Zeit. Probleme Ich habe laufen in:

  • Referenzierung Indizes über FORCE/USE/IGNORE INDEX in SELECTS Fehler in ALTER statments auf dem Master
  • Referenzierung Indizes aus kann die Replikation
  • brechen Fügt einen weiteren Schritt einen Sklaven zur Förderung der Master zu sein im Notfall
  • Wenn Sie Anweisung basierte Replikation (die Norm) verwenden, und Sie spielen um mit UNIQUE Indizes, alle INSERT... ON DUPLICATE KEY, INSERT IGNORE oder REPLACE statments treiben verursachen extreme Daten/d ivergence
  • Performance-Unterschiede (gut und schlecht)
+0

Wie ändern Sie den Slave-Tisch? – jeffry

Verwandte Themen