MySql, wie kann ich Indizes aus meiner Entwicklungsdatenbank in meine Produktionsdatenbank exportieren?

8

Ich habe an meiner Entwicklungsdatenbank gearbeitet und die Leistung optimiert.

Zu meiner Überraschung kann ich jedoch keine Möglichkeit finden, die Indizes in meine Produktionsdatenbank zu exportieren.

Ich dachte, es wäre ein einfacher Weg, dies zu tun. Ich möchte die Daten in meiner Produktionsdatenbank nicht ersetzen.

Das Hauptproblem ist, dass ich die Sortierung in den Indizes nicht sehen kann, so dass es schwierig wird, es sogar manuell zu machen.

    
Jules 20.01.2011, 06:54
quelle

6 Antworten

10

Vielleicht meinen Sie "Wie erstelle ich meine Entwicklungsindizes für meine (bestehende) Live-Datenbank neu?"

Wenn das so ist, denke ich, dass die SQL-Befehle, nach denen Sie suchen, sind;

SHOW CREATE TABLE {Tabellenname};

ALTER TABLE ADD INDEX {Indexname} (Spalte1, Spalte2)

ALTER TABLE DROP INDEX {Indexname}

Sie können die Zeilen "KEY" und "CONSTRAINT" aus der Ausgabe "SHOW CREATE TABLE" kopieren und in den "ALTER TABLE ADD INDEX" zurückstellen.

%Vor%

Hoffe, das hilft!

    
origo 20.01.2011, 07:08
quelle
3

Lesen Sie zuerst das Tutorial über Anleitungen zum Exportieren von MySQL-Indizes mit einer SQL-Abfrage . Weiter:

  1. Wenn Sie DUMP Ihrer Datenbank abschließen und sie in einen anderen IMPORTIEREN (mit PHPMyAdmin usw.), werden die Indizes neu generiert.

  2. Wenn möglich, können Sie den Inhalt Ihres gesamten MySQL-Datenbankordners in die Produktionsdatenbank kopieren. Dies wird auch schnell funktionieren. Lesen Sie hier mehr unter MySQL-Dokumente.

shamittomar 20.01.2011 06:57
quelle
1

Sie können den folgenden Befehl verwenden, um einen Speicherauszug zu erstellen

%Vor%

und Indizes werden automatisch kopiert.

    
UVM 20.01.2011 07:04
quelle
1

Ich glaube, Sie versuchen, die Indizes selbst zu exportieren und nicht nur den Code, um sie in der Produktion zu regenerieren, oder? (Ich nehme das an, weil das Laden dieser Indizes in den meisten Produktionsumgebungen nicht günstig ist.)

Das Dienstprogramm mysqldump ist nützlich, wenn Leistung nicht Ihr Hauptanliegen ist, und ich benutze es die ganze Zeit. Wenn Sie jedoch nach einer sehr schnellen Methode suchen, würde ich vorschlagen, die eigentlichen InnoDB-Dateien von einer Cold-Datenbank in die andere zu kopieren (vorausgesetzt, sie sind genau die gleiche MySQL-Version mit genau der gleichen Konfiguration und genau den gleichen Erwartungen Verhalten usw.). Diese Methode ist gefährlich, wenn zwischen den Systemen Unterschiede bestehen.

Es klingt, als würden Sie in Ihrer Situation Ihre guten Daten zuerst in Ihre Testumgebung kopieren. Mein Entwicklungszyklus folgt typischerweise diesem Ansatz: DDL fließt vom Testen zur Produktion über die Programmierung und DML fließt von der Produktion zum Testen über die tatsächliche Nutzung des Systems.

    
Kevin Durette 20.09.2012 02:14
quelle
1

Ich habe auch Entwicklungs- und Produktionsserver mit der gleichen Datenbankstruktur.

Ich habe die Indizes für beide geändert, also wollte ich alle zusammenführen. Also musste ich Daten mit Notepad + vergleichen.

So exportieren Sie Indizes für alle Tabellen, alle Datenbanken und wie Sie sie filtern und vergleichen:

%Vor%

Nun, phpMyAdmin - & gt; In CSV-Excel exportieren:

fügen Sie eine Kopfzeile hinzu - & gt; lösche alle Spalten, belasse aber "Datenbankname Tabellenname Index Spaltenwert"

Dann filtere nach Datenbank.

Kopiere alles von Datenbank1 in einen Notizblock + Bildschirm 1, filtere Excel-Datenbank2, kopiere alles auf Notizblock + Bildschirm2 - & gt; VERGLEICH!

    
Tarik 03.09.2017 10:09
quelle
0

Erweitere die Antwort von @ origo. Es gibt einen Fall, wo ich die DDL für eine Reihe von Indizes extrahieren musste. Dieses Skript erledigt die Aufgabe.

Quelle: Ссылка

%Vor%     
vira 15.02.2018 22:18
quelle

Tags und Links