Heim  >  Artikel  >  Datenbank  >  Wie können Sie eine riesige MySQL-Produktionstabelle indizieren, ohne den Betrieb zu unterbrechen?

Wie können Sie eine riesige MySQL-Produktionstabelle indizieren, ohne den Betrieb zu unterbrechen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 11:52:02594Durchsuche

How Can You Index a Huge MySQL Production Table Without Disrupting Operations?

Erstellen Sie einen Index für eine riesige MySQL-Produktionstabelle

Problemstellung:

Erstellen Sie einen Index für eine große MySQL-Produktion Die Tabelle kann möglicherweise zu Datenbanksperren führen. Dies stellt eine Herausforderung dar, während des Indexierungsprozesses einen unterbrechungsfreien Zugriff auf die Datenbank sicherzustellen.

Lösung:

MySQL 5.6 und höher: Online-Indexaktualisierungen

Seit MySQL 5.6 unterstützt die Datenbank inkrementelle Indexaktualisierungen im laufenden Betrieb. Dies bedeutet, dass die Indexerstellung oder -löschung gleichzeitig mit Lese- und Schreibvorgängen erfolgen kann, wodurch das Risiko von Blockaden verringert und die Datenintegrität sichergestellt wird.

MySQL 5.5 und früher

In MySQL 5.5 und früheren Versionen UPDATE-Vorgänge Bei einer Tabelle mit einer aktiven Indexaktualisierung werden Blöcke auftreten. Dies kann die Leistung erheblich beeinträchtigen und zu Ausfällen führen.

Um diese Blockaden zu vermeiden, sollten Sie den folgenden Ansatz in Betracht ziehen:

1. Zirkuläre Master-Server:

  • Richten Sie zwei Server ein, wobei einer als primärer Master und der andere als Slave dient.
  • Führen Sie währenddessen die Indexaktualisierung auf dem Slave-Server durch repliziert Schreibvorgänge vom Master.
  • Ermöglichen Sie dem Slave, mit dem Master Schritt zu halten, und stellen Sie so die Kompatibilität zwischen dem aktualisierten und dem alten Schema sicher.
  • Schalten Sie Clients atomar vom Master zum Slave um, wodurch der Slave entsteht der neue Master mit dem aktualisierten Schema.
  • Wiederholen Sie den Vorgang mit dem Master-Server und machen Sie ihn zum neuen Slave.

2. Perconas pt-online-schema-change:

  • Erstellen Sie eine neue Tabelle mit einer identischen Struktur wie das Original.
  • Aktualisieren Sie das Schema in der neuen Tabelle.
  • Richten Sie einen Auslöser für die Originaltabelle ein, um Änderungen mit der Kopie synchron zu halten.
  • Migrieren Sie Daten stapelweise von der Originaltabelle in die neue Tabelle.
  • Ersetzen Sie die Originaltabelle durch die neuer Tisch.
  • Löschen Sie den alten Tisch.

3. RDS Read Replica Promotion:

Wenn Sie Amazons RDS verwenden, können Sie ein schreibgeschütztes Replikat erstellen und die Indexaktualisierung darauf durchführen. Sobald Sie fertig sind, stufen Sie die Replik zum neuen Master hoch. Dieser Ansatz vereinfacht den Prozess durch die Automatisierung des Failovers und der Datenmigration.

Hinweis: Dieser Ansatz erfordert einen Neustart der Anwendung, um die Verbindung zur aktualisierten Datenbankinstanz wiederherzustellen.

Das obige ist der detaillierte Inhalt vonWie können Sie eine riesige MySQL-Produktionstabelle indizieren, ohne den Betrieb zu unterbrechen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn