MySQL 5.1 / phpMyAdmin - protokolliert CREATE / ALTER-Anweisungen

8

Ist es möglich, CREATE / ALTER-Anweisungen auf einem MySQL-Server über phpMyAdmin zu protokollieren? Ich habe gehört, dass es mit einem Auslöser gemacht werden könnte, aber ich finde nirgendwo passenden Code. Ich möchte diese Anweisungen in einer Tabelle protokollieren, vorzugsweise mit dem Zeitstempel ihrer Ausgabe. Kann mir jemand einen Beispieltrigger zur Verfügung stellen, mit dem ich das erreichen kann?

Ich möchte diese Anweisungen protokollieren, damit ich die Änderungen leicht mit einem anderen MySQL-Server synchronisieren kann.

    
pako 06.04.2010, 10:55
quelle

4 Antworten

4

Für phpMyAdmin gibt es einen Patch bietet konfigurierbare Protokollierung mit nur einigen einfachen Code-Änderungen.

Wir haben das bei meiner Arbeit gemacht und dann habe ich es weiter optimiert, um mich am Tag in Ordnern einzuloggen, IP-Adressen und ein paar andere Dinge zu protokollieren und es funktioniert großartig.

Danke @unreason für den Link, ich konnte mich nicht erinnern, wo ich es gefunden habe.

    
Jarod Elliott 08.04.2010, 10:27
quelle
2

Hier ist ein Skript, das für mysql-proxy funktioniert > (Überprüfen Sie den Link in der offiziellen Dokumentation, wie Sie den Proxy installieren).

Um die Abfragen tatsächlich zu protokollieren, können Sie so einfach wie

etwas verwenden %Vor%

Das Skript wurde von hier übernommen und sucht nach "einfacher Protokollierung".

Dies ist nicht wichtig für Ergebnisse - selbst wenn die Abfrage einen Fehler zurückgegeben hat, würde es protokolliert werden (es gibt ein Beispiel für "mehr angepasste Protokollierung", das ein besserer Kandidat für die Produktionsprotokollierung ist).

Sie können auch einen anderen Ansatz wählen, wenn es für Sie anwendbar ist - verschiedene Benutzer in Ihrer Datenbank definieren und DDL-Rechten nur einem bestimmten Benutzer geben, dann können Sie alles für diesen Benutzer protokollieren und müssen sich keine Sorgen machen Details (zum Beispiel - Proxy erkennt die folgenden Serverbefehle , von denen nur Abfragen abgefragt werden

Die Installation des Proxy ist einfach, wenn Sie es testen, können Sie es mit

ausführen %Vor%

Es läuft standardmäßig auf Port 4040, also testen Sie es mit

%Vor%

(vergewissere dich, dass du den Proxy nicht umgehst; zum Beispiel habe ich auf meiner Distribution mysql -u user -p -h localhost -P 4040 den Port und den Connected-over-Socket vollständig ignoriert, was mich für ein paar Minuten verwirrt hat)

    
Unreason 15.04.2010 15:41
quelle
1

Die Antwort auf Ihre Frage wird in einem der MySQL Server-Protokolle

Wenn Sie nur die CREATE / ALTER-Anweisungen erhalten möchten, würde ich mit die Allgemeines Abfrageprotokoll Aber Sie müssen die Datei manuell analysieren. Beachten Sie die Sicherheitsprobleme, die dieser Ansatz aufwirft.

In Ihrem Szenario scheint Replikation ein Overkill zu sein.

Trigger sind keine gültige Option, da sie nur auf SELECT-, UPDATE- und INSERT-Ebene und nicht ALTER / CREATE unterstützt werden.

Bearbeiten 1:

Das Abfrageprotokoll wäre die beste Wahl, aber wie Sie bereits auf ausgelasteten Servern erwähnt haben, würden die Protokolle zu erheblichen Effizienzeinbußen führen. Die einzige zusätzliche Alternative, die ich kenne, ist MySQL Proxy .

    
unode 06.04.2010 16:03
quelle
0

Ich denke, dass Ihre beste Wette wäre, die Verwendung von gespeicherten Prozeduren und Funktionen hier zu betrachten, um Änderungen an Ihrer DB vorzunehmen. Auf diese Weise können Sie Daten manuell protokollieren.

    
ChrisBD 07.04.2010 09:00
quelle

Tags und Links