Heim  >  Artikel  >  Datenbank  >  Wie erstelle ich einen Index für eine riesige MySQL-Produktionstabelle, ohne die Tabelle zu sperren?

Wie erstelle ich einen Index für eine riesige MySQL-Produktionstabelle, ohne die Tabelle zu sperren?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 00:25:02676Durchsuche

How to Create an Index on a Huge MySQL Production Table Without Locking the Table?

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

Problem:

Sie müssen einen Index erstellen auf einer riesigen MySQL-Tabelle in einer Produktionsumgebung, ohne den laufenden Betrieb zu unterbrechen.

Conventional Wisdom (2015):

In MySQL-Versionen vor 5.6 wird ein Index für a erstellt MyISAM- oder InnoDB-Tabellen blockieren Schreibvorgänge.

Online-Indexaktualisierungen in MySQL 5.6 (2017):

MySQL 5.6 und höher unterstützen Online-Indexaktualisierungen, sodass Sie oder hinzufügen können Löschen Sie Indizes, ohne Lese- oder Schreibvorgänge zu blockieren.

Schema ohne Ausfallzeit aktualisieren:

Wenn Sie MySQL 5.6 oder höher nicht verwenden können, können Sie Ihr Schema mit der folgenden Methode aktualisieren ohne Ausfallzeit:

  1. Circular Masters: Rufen Sie einen neuen Master-Server auf und replizieren Sie Schreibvorgänge vom vorhandenen Master.
  2. Führen Sie eine Schemaaktualisierung auf dem neuen Master durch : Nehmen Sie die Schemaänderungen auf dem neuen Master vor.
  3. Tauschen Sie Clients: Migrieren Sie alle Clients atomar vom alten Master zum neuen Master.
  4. Alten Master aktualisieren: Wiederholen Sie den gleichen Vorgang mit dem alten Master, um ihn als sekundären Master auf den neuesten Stand zu bringen.

Perconas pt-online-schema-change Tool:

Dieses Tool bietet eine alternative Methode zum Ändern des Tabellenschemas, ohne Vorgänge zu blockieren. Es erstellt eine neue Tabelle mit der gewünschten Struktur, nimmt die Schemaänderungen vor und kopiert nach und nach Daten aus der Originaltabelle, bevor es sie ersetzt.

Amazon RDS:

Amazon RDS Vereinfacht den Prozess, indem es Ihnen ermöglicht, Lesereplikate zu erstellen, Schemaänderungen an einem Replikat vorzunehmen und das Replikat dann zum neuen Master heraufzustufen. Dieser Ansatz minimiert Ausfallzeiten und vereinfacht den Umstellungsprozess.

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen Index für eine riesige MySQL-Produktionstabelle, ohne die Tabelle zu sperren?. 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