Backup von MySQL aus PHP heraus

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Backup von MySQL aus PHP heraus

    Hallo,

    Gibt es eine Möglichkeit, aus einem PHP-Script heraus ein Backup einer MySQL-Datenbank durchzuführen und den Inhalt in einer Datei zu speichern? Der Befehl SELECT INTO OUTFILE funktioniert bei mir leider nicht (es kommt eine Fehlermeldung von MySQL, dass ich nicht ausreichend Rechte habe, um diese Funktion auszuführen).

    Vielen Dank.

  • #2
    hassu phpmyadmin?
    sonst könntest du ein dump machen
    First: Things get worse under pressure.
    Second: If anything just cannot go wrong, it will anyway
    Third: A falling object will always land where it can do the most damage.

    Kommentar


    • #3
      backup

      ich habe phpmyadmin, möchte das aber nicht damit machen, sondern eine eigene Funktion in meinem Programm haben.

      Kennt jemand eine Möglichkeit, das Backup durchzuführen?

      Kommentar


      • #4
        hmmm .... ich denke das wuerde mit fopen .. fwrite etc gehen ... also die daten auslesen und in ne textdatei schreiben ... wie du das genau machst musste leider selber sheen ... vor allem musste auch ne funktion schrieben die aus der txt datei die sachen wieder so sinnvoll zusammenbastelst, dass du es wieder in mysql einfuegen kannst ....

        also eigentlich musste nur die struktur und den inhalt auslesen und in ne datei schreiben ,.....

        Kommentar


        • #5
          dann wird es aber...

          Mit dieser Methode gibt es ab einer bestimmten Anzahl an Datensätzen aber leider irgendwann ein Timeout beim Ausführen des PHP-Scripts.

          Kommentar


          • #6
            hmmm .... dann halt immer nur einzelne tabellen in eine datei ....
            und das fuer jede datei einzelnd ... oder doch phpmyadmin benutzen ... oder warten bis hier jemand was postet der davon ahnung hat ....

            wieviel datensaetze hast du denn in einer tabelle ????
            oder macht er das problem nur, wenn du die ganze db durchgehst ... koennt naemlich auch an einem nicht idealen code liegen ( wie man z.b. an dem einen thread vor nen paar tagen im php forum sah .... ) .....

            poste doch mal deinen code mit dem du das machst ... ich wette wir finden optimierungen ...

            mfg
            kapitaeniglo

            Kommentar


            • #7
              versuch doch mal den quelltext von phpmyadmin zu bearbeiten... wichtig hierfür ist die datei tbl_dump.php
              wer weiss, vielleicht hilft dir das!
              aus phpmyadmin wird es ja auch so gemacht, wie du es möchtest...
              First: Things get worse under pressure.
              Second: If anything just cannot go wrong, it will anyway
              Third: A falling object will always land where it can do the most damage.

              Kommentar


              • #8
                phpMyAdmin versagt aber bei größeren DB's.

                Bei Puretex ist zB die maximale Anusführungszeit 6 sek, da kommt man bis ca 2,5MB dann ist Pumpe.

                Aber es geht auch mit beliebig großen DB's. Einfach mal nachdenken,
                wie man ein eigenes Script unendlich lange laufen lassen kann,
                wenn keine Möglichkeit besteht die maximale Ausführungszeit zui
                ändern.

                Dass Script sollte dann einfach alle Tabellen durchgehen, und alle Daten
                in eine sql-Datei schreiben.

                Kleiner Tip:
                Man 150 MB Datenbanken mit einer maximalen Ausführungzeit von 2sek zu exportieren, und auch wieder zu importieren
                Nur mal scharf nachdenken !
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  "Dass Script sollte dann einfach alle Tabellen durchgehen, und alle Daten in eine sql-Datei schreiben."


                  Das wäre doch dann das, was ich bisher mache?

                  Abfrage "select * from tabelle" und dann alle Datensätze mit einer for-Schleife auslesen und einzeln in die Datei schreiben.

                  Dabei kommt dann allerdings der genannte Timeout. Die Größe aller Datensätze der zu sichernden Tabelle beträgt momentan rund 80 MB.

                  Kommentar


                  • #10
                    kurz nachdenken!

                    "wie kann ich das Script weiterlaufen lassen oder neu anstossen ohne das der User etwas machen muß ? ..."

                    - das Script sucht als erstes alle Tabellen raus => zB 30 Stück
                    - dann nimmt es die erste Tabelle und fragt einen Teil des Inhalts ab => zB 1000 von 8956 Datensätze
                    - diese 1000 Datensätze werden in die txt-Datei geschrieben
                    - Datei Ende, Ausgabe über den Stand der Dinge auf den Browser !

                    und wie gehts weiter ?

                    - Bei der Ausgabe wird ein Meta-Refresh geschrieben, welche das Script erneut aufruft, und
                    als Paramter übergibt

                    => bearbeite die erste Tabelle
                    => fange mit Datensatz 1001 an

                    dann werden wieder 1000 Datensätze in die Datei geschrieben, und wieder
                    der Meta-Refresh gemacht.

                    => bearbeite die erste Tabelle
                    => fange mit Datensatz 2001 an


                    Hat es eine Tabelle abgearbeitet, wird einfach mit einem anderen Parameter aufgerufen.

                    => bearbeite die zweite Tabelle
                    => fange mit Datensatz 1 an

                    ...

                    PS: Mein Rechner (K6-II) brauch bei einer 150 MB Datenbank mit 3.000.000 Einträgen (ist ne TestDB) ca 8 min


                    Und so könnte es aussehen
                    TBT

                    Die zwei wichtigsten Regeln für eine berufliche Karriere:
                    1. Verrate niemals alles was du weißt!


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar


                    • #11
                      Okay... da hast du Recht. Wäre dies aber nicht eher eine Notlösung, solange SELECT INTO OUTFILE nicht funktioniert, oder es nicht einen Befehl gibt, der das Backup erstellt?

                      Kommentar


                      • #12
                        ich habe mich auch lange damit beschäftigt, aber sonst keine Lösung gefunden,
                        die auf jedem Server auf dem PHP/MySQL installiert ist auch läuft.
                        Wenn der Space reicht, funktioniert auch das Backup, von jedem Rechner
                        mit Internetanschluß startbar.

                        Ein feiner Nebeneffekt des ganzen ist, daß ich das Backup im laufenden Betrieb
                        machen kann. Ich brauche dafür das Board nicht in den Wartungsmodus schalten.
                        TBT

                        Die zwei wichtigsten Regeln für eine berufliche Karriere:
                        1. Verrate niemals alles was du weißt!


                        PHP 2 AllPatrizier II Browsergame

                        Kommentar

                        Lädt...
                        X