MyDump - MySQL-Backup-Script

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Einleitung
    Hallo liebe Breadfishler. Nach langer Zeit nun endlich mal wieder was von mir.
    An dem Teil hier arbeite ich seit gestern.
    Es ist eine Include, mit dem man seine MySQL-Datenbank ganz einfach aus dem Gamemode heraus exportieren kann.


    Was ist das?
    Wie gesagt: Mit dieser Include kann man Tabellen aus der MySQL-Datenbank ganz einfach exportieren.
    Momentan ist das ganze noch in der BETA-Phase und nicht ganz so sicher. Man sollte sich nicht ausschließlich darauf verlassen, sondern sicherheitshalber noch manuell Backups anlegen.
    Für das Backup muss das Script einige Zeichen ersetzen, finden und löschen. Diese Zeichen können jedoch auch variieren. Ich habe versucht alle Möglichkeiten einzubauen, jedoch glaube ich nicht, dass ich das wirklich geschafft habe. Sollte das Script also irgendwann mal etwas total sinnloses auswerfen, dann meldet dies bitte hier.


    Funktionen
    Hauptfunktionen:
    [table=2]
    [*]Funktion
    [*]Beschreibung


    [*]MyDump:MyDumpExportInit(host[], user[], pw[], db[])
    [*]Initialisiert eine MySQL-Verbindung mit den angegeben Daten und erstellt gleichzeitig ein MyDump-Handle


    [*]MyDumpExportExit(MyDump:handle)
    [*]Schließt die MyDump-Verbindung


    [*]ExportTablesToFile(file[], MyDump:handle, IfNotExists = 1)
    [*]Exportiert die Tabellen der in dem Handle geöffneten Datenbank in die angegebene Datei. Ist der 3. Parameter 1 wird der IF NOT EXISTS-Zusatz hinzugefügt.


    [*]SetAutoExportTime(sec, MyDump:handle)
    [*]Setzt die Timerzeit für Auto-Export. Erst gültig, wenn der Auto-Export des Handles neugestartet wird.


    [*]SetAutoExportIfNotExists(num, MyDump:handle)
    [*]Wenn num = 1: Beim Auto-Export des Handles wird der IF NOT EXISTS-Zusatz verwendet. Falls 0, nicht. Sofort wirksam.


    [*]AutoExportTimerStart(MyDump:handle)
    [*]Startet den Auto-Export-Timer für das besagte Handle


    [*]AutoExportTimerStop(MyDump:handle)
    [*]Stoppt den Timer wieder
    [/table]



    Nebenfunktionen:
    Die Nebenfunktionen existieren zwar, sind für den normalen Gebrauch aber relativ unnötig.
    [table=2]
    [*]Funktion
    [*]Beschreibung


    [*]ExportTable(data_table[], MyDump:handle)
    [*]Gibt einen String mit dem CREATE TABLE-Inhalt der besagten Tabelle zurück


    [*]ExportContents(table[], File:fhandle, MyDump:handle)
    [*]Schreibt den Inhalt der angegebenen Tabelle (nicht Struktur!) in die angegebene Datei (Datei muss existieren)


    [*]SaveTables(MyDump:handle)
    [*]Lädt Liste mit den Tabellen der Datenbank in das Array MyDump_Table[MAX_TABLES];
    [/table]


    Optimale Verwendung
    Um die Verwendung besser zu erklären, habe ich ein Beispiel-Filterscript geschrieben. Link ist beim Downloadlink.


    Sachen, die noch zu beachten wären

    • Bevor MyDump.inc inkludiert wird, muss mysql.inc inkludiert werden.
    • MAX_TABLES ist standartmäßig auf 100. Indem man es VOR dem inkludieren anders definiert, lässt es sich einfach ändern
    • Es ist nicht zu 100% stabil. Also bitte nicht ausschließlich darauf verlassen.


    Downloads
    Beispielscript - Pastebin
    Include v1.1 - Pastebin
    Include v1.0 - Pastebin

    Einmal editiert, zuletzt von Ternary ()

  • Habe zwar ein Script auf über Mysql läuft, bin da aber noch nicht so ganz frisch drinne, doch sowie du es beschreibst, kliengt es gut und nützlich soger für mich.


    8/10

  • was soll eigentlich das sein?
    if(i == MAX_TABLES) con = true;
    brech die schelife doch einfach ab, wenn du nicht mehr speicher willst / kannst.


    aus dem hier kannst du 2 Sachen machen
    if(!fexist(file)) fhandle = fopen(file, io_write);
    else fhandle = fopen(file, io_append);
    entweder du nutzt den Thenary
    fhandle = fopen(file,(fexist(file))?io_append:io_write);


    oder du machst einfach nur io_append,
    das erstellt nämlich auch eine Datei ;)


    mit dem Thenary kannst du auch viel an Geschwindigkeit gewinnen,
    z.B. auch hier
    if(rows == row) fwrite(fhandle, ");\n\n");
    else fwrite(fhandle, "),");


    Code
    (bedingung)?wenn wahr:wenn nicht wahr


    Nach diesem Schema kannst du dein ganzes Script optimieren ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski