frankx: komplette DB "clonen"

Hellihello,

wie krieg ich denn (PHP, phpMyAdmin) die komplette Datenbank "meineDB" von server example1.com so wie sie ist nach example2.com (anderer server)? Mussich ganze Handbuch von MySQL lesen, oder mysqldump machen oder...???

Dank und Gruß,

frankx

--
tryin to multitain  - Globus = Planet != Welt
  1. Hi,

    Hellihello,

    wie krieg ich denn (PHP, phpMyAdmin) die komplette Datenbank "meineDB" von server example1.com so wie sie ist nach example2.com (anderer server)? Mussich ganze Handbuch von MySQL lesen, oder mysqldump machen oder...???

    Wenn du die Datenbank nur kopieren willst (und nicht ständig synchronisieren) reicht es, wenn du auf example1 einen Dump schreibst und diesen dann auf example2 wieder einspielst.
    Das kannst du alles mit phpMyAdmin machen.

    Natürlich könntest du es auch auf der Kommandozeile machen, was aber nicht sein muss, wenn du eh phpMyAdmin installiert hast.

    mfG,
    steckl

    1. Hellihello

      wie krieg ich denn (PHP, phpMyAdmin) die komplette Datenbank "meineDB" von server example1.com so wie sie ist nach example2.com (anderer server)? Mussich ganze Handbuch von MySQL lesen, oder mysqldump machen oder...???

      Wenn du die Datenbank nur kopieren willst (und nicht ständig synchronisieren) reicht es, wenn du auf example1 einen Dump schreibst

      Einen "Dump" schreiben, heißt, den SQL-Server dazu zu bewegen, den Inhalt der spezifizierten Datenbank in einem Standardformat auszugeben? Komplette Struktur, Variablenzuordungen. Es gibt aber nich für jede DB "sowieso" eine solche Datei (aus Sicherheitsgründen vermutlich)?

      Dank und Gruß,

      frankx

      --
      tryin to multitain  - Globus = Planet != Welt
      1. Hi,

        Einen "Dump" schreiben, heißt, den SQL-Server dazu zu bewegen, den Inhalt der spezifizierten Datenbank in einem Standardformat auszugeben? Komplette Struktur, Variablenzuordungen. Es gibt aber nich für jede DB "sowieso" eine solche Datei (aus Sicherheitsgründen vermutlich)?

        Ein Dump ist eine Text-Datei, die aus lauter Sql-Kommandos besteht.
        Mit Hilfe dieser kannst du den aktuellen Stand der Datenbank wieder herstellen. Gegebenenfalls auch auf einem anderen Server.

        MySql speichert die Datenbanken anders ab. Wenn ich mich richtig erinnere sind das pro Tabelle 3 Dateien.
        Diese direkt zu kopieren ist aber äußerst kritisch. Erstens kann es Probleme zwischen verschiedenen mySql-Versionen geben und zweitens kann es sein, dass sich noch Daten im Arbeitsspeicher befinden, die noch nicht in die Files geschrieben wurden.

        Also solltest du um eine Datenbank umzuziehen lieber einen Dump verwenden, als die Dateien von mysql direkt zu kopieren.

        mfG,
        steckl

        1. Hellihello

          Also solltest du um eine Datenbank umzuziehen lieber einen Dump verwenden, als die Dateien von mysql direkt zu kopieren.

          Der MySQL-Server speichert dann in einem Verzeichnis nach Userwahl, via Parameter (komplette DB, mit allen Tabellen)?. Ich kenn wohl die grundlegenden Funktionen, auch dass ich per Konsole mit dem SQL-Server "sprechen" kann.

          SQL>hierBefehl

          Gibt der auch (wie --help in der Shell) Beschreibungen zu seinen Funktionen ab? Sowas wie "dump --help"?

          Dank und Gruß,

          frankx

          --
          tryin to multitain  - Globus = Planet != Welt
          1. Hi,

            Also solltest du um eine Datenbank umzuziehen lieber einen Dump verwenden, als die Dateien von mysql direkt zu kopieren.

            Der MySQL-Server speichert dann in einem Verzeichnis nach Userwahl, via Parameter (komplette DB, mit allen Tabellen)?.

            Du kannst auswählen was du genau "dumpen" willst. Du kannst einzelne Tabellen oder auch ganze Datenbanken "dumpen".

            Im Dumpfile ist dann u.a. der Create-Befehl, der die Datenbank und Tabelle erzeugt und viele Insert-Befehle, die die Tabellen dann mit Inhalten füllen.

            Gibt der auch (wie --help in der Shell) Beschreibungen zu seinen Funktionen ab? Sowas wie "dump --help"?

            mysqldump ist ein eigenes Programm.
            Unter Linux gibt es "man mysqldump" und "mysqldump --help".

            mfG,
            steckl

            1. Hellihello

              mysqldump ist ein eigenes Programm.
              Unter Linux gibt es "man mysqldump" und "mysqldump --help".

              Dass heißt, es wird nicht im Serverkontext aufgerufen? Bin grad nicht an einem linuxfähigen Rechner. In welchem Verzeichnis legt denn der (My?)SQL-Server seine notwendigen Daten ab?

              Dank und Gruß,

              frankx

              --
              tryin to multitain  - Globus = Planet != Welt
              1. Hi,

                mysqldump ist ein eigenes Programm.
                Unter Linux gibt es "man mysqldump" und "mysqldump --help".

                Dass heißt, es wird nicht im Serverkontext aufgerufen?

                Was verstehst du hier unter Serverkontext?

                Bin grad nicht an einem linuxfähigen Rechner.

                man mysqldump.

                In welchem Verzeichnis legt denn der (My?)SQL-Server seine notwendigen Daten ab?

                Bei mir unter Ubuntu in "/var/lib/mysql/DATENBANKNAME".
                Aber das brauchst du nicht, wenn du einen Dump schreibst. Bei dem Befehl mysqldump kannst du angeben wohin der Dump geschrieben wird.

                Aber warum benutzt du eigentlich nicht einfach phpmyadmin?

                mfG,
                steckl

                1. Hellihello

                  Was verstehst du hier unter Serverkontext?

                  Na Server-Syntax, anfrage an den Server, wie eine query.

                  In welchem Verzeichnis legt denn der (My?)SQL-Server seine notwendigen Daten ab?

                  Bei mir unter Ubuntu in "/var/lib/mysql/DATENBANKNAME".
                  Aber das brauchst du nicht, wenn du einen Dump schreibst. Bei dem Befehl mysqldump kannst du angeben wohin der Dump geschrieben wird.

                  Aber warum benutzt du eigentlich nicht einfach phpmyadmin?

                  Jau, machich. Aber vorher ein kurzer versuchter Blick hinter die Kulissen ja auch nicht falsch, oder (;-)? Sprech ich beim nächsten mal am Linuxrechner ein Wörtchen direkt mit der DB (;-).

                  Dank und Gruß,

                  frankx

                  --
                  tryin to multitain  - Globus = Planet != Welt
                  1. Aber warum benutzt du eigentlich nicht einfach phpmyadmin?

                    Jau, machich. Aber vorher ein kurzer versuchter Blick hinter die Kulissen ja auch nicht falsch, oder (;-)? Sprech ich beim nächsten mal am Linuxrechner ein Wörtchen direkt mit der DB (;-).

                    Dabei solltest du aber bedenken, dass PHP-Scripte nach einer gewissen Zeit abbrechen, festgelegt in der php.ini
                    Bei grossen Datenbanken kommst du vermutlich mit phpMyAdmin nicht weiter.

                    1. Hellihello

                      Jau, machich. Aber vorher ein kurzer versuchter Blick hinter die Kulissen ja auch nicht falsch, oder (;-)? Sprech ich beim nächsten mal am Linuxrechner ein Wörtchen direkt mit der DB (;-).

                      Dabei solltest du aber bedenken, dass PHP-Scripte nach einer gewissen Zeit abbrechen, festgelegt in der php.ini
                      Bei grossen Datenbanken kommst du vermutlich mit phpMyAdmin nicht weiter.

                      Zumal man bei normalen Webpaketen ja nicht an die php.ini kommt, aber auch nicht in die Shell. Mit Serverzugriff und mysqldump wäre ja php umgangen, welches ja eh "nur" die mysql-queries direkt durchreicht. Was ist denn aus Deiner Sicht eine "große" Datenbank? 100.000 Einträge, 1.000.000? Ich hatte jetzt mit 5 Spalten und 40.000 Einträgen nicht das Gefühl, auch nur in der Nähe eine "großen" Datenbank zu sein.

                      Dank und Gruß,

                      frankx

                      --
                      tryin to multitain  - Globus = Planet != Welt
                      1. Hallo

                        Jau, machich. Aber vorher ein kurzer versuchter Blick hinter die Kulissen ja auch nicht falsch, oder (;-)? Sprech ich beim nächsten mal am Linuxrechner ein Wörtchen direkt mit der DB (;-).

                        Dabei solltest du aber bedenken, dass PHP-Scripte nach einer gewissen Zeit abbrechen, festgelegt in der php.ini
                        Bei grossen Datenbanken kommst du vermutlich mit phpMyAdmin nicht weiter.

                        Zumal man bei normalen Webpaketen ja nicht an die php.ini kommt, aber auch nicht in die Shell. Mit Serverzugriff und mysqldump wäre ja php umgangen, welches ja eh "nur" die mysql-queries direkt durchreicht.

                        Den Serverzugriff hast du bei "normalen Webpaketen" aber leider auch nicht. Damit fällt das leider auch weg, außer du hast diesen Zugriff (z.B. lokaler oder dedizierter Server).

                        Tschö, Auge

                        --
                        Die deutschen Interessen werden am Liechtenstein verteidigt.
                        Veranstaltungsdatenbank Vdb 0.2
                      2. Was ist denn aus Deiner Sicht eine "große" Datenbank? 100.000 Einträge, 1.000.000?

                        Ich würde sagen, ab 1 Mio Einträge. Alles andere ist recht klein ;)

                        Ich hatte jetzt mit 5 Spalten und 40.000 Einträgen nicht das Gefühl, auch nur in der Nähe eine "großen" Datenbank zu sein.

                        Nein, da hast du auch keine Laufzeitprobleme. Ich habs mal getestet, phpMyAdmin, bzip-Komprimierung und 400.000 Einträge in der Datenbank (ich glaub 6 Spalten, MyISAM) machten auf meinem alten Server (450MHz, Debian/Sarge, 768 MB RAM, 200GB IDE-Platte). Dauerte ca. 20 Sekunden bis ich den Download angeboten bekommen hab. Auf ner schnelleren Maschine würden da vermutlich um einiges mehr an Einträgen gehen.

            2. Hellihello

              Im Dumpfile ist dann u.a. der Create-Befehl, der die Datenbank und Tabelle erzeugt und viele Insert-Befehle, die die Tabellen dann mit Inhalten füllen.

              Mit phpmyadmins export kam mir eine Textarea, die enthält dann:

              -- phpMyAdmin SQL Dump
              -- version 2.6.1-pl3
              -- http://www.phpmyadmin.net

              --
              -- Host: localhost
              -- Erstellungszeit: 23. August 2008 um 23:27
              -- Server Version: 4.1.10
              -- PHP-Version: 5.2.4
              --
              -- Datenbank: Datensatztests
              --
              -- --------------------------------------------------------
              --
              -- Tabellenstruktur für Tabelle Datensatz
              --
              CREATE TABLE Datensatz (
                ID int(11) NOT NULL auto_increment,
                Name varchar(100) NOT NULL default '',
                Preis float NOT NULL default '0',
                Länge int(11) NOT NULL default '0',
                Breite int(11) NOT NULL default '0',
                Höhe int(11) NOT NULL default '0',
                Farbe int(5) NOT NULL default '0',
                PRIMARY KEY  (ID),
                KEY Farbe (Farbe)
              ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=51610 ;
              --
              -- Daten für Tabelle Datensatz
              --
              INSERT INTO Datensatz VALUES (1, 'erster Testname', 1.11, 300, 400, 500, 2);
              etc.pp.
              Die doppelten Minuszeichen wohl escape-Zeichen. Kann ich dann so komplett als query-string übernehme?
              $my_dump = file_get_contents("dumpfilepath");
              Bzw. den Inhalt (in dem Fall 50.000 Zeilen) in myAdmins SQL-Textarea eingeben?
              Dank und Gruß,
              frankx
              --
              tryin to multitain  - Globus = Planet != Welt
              1. Hallo

                Im Dumpfile ist dann u.a. der Create-Befehl, der die Datenbank und Tabelle erzeugt und viele Insert-Befehle, die die Tabellen dann mit Inhalten füllen.

                Mit phpmyadmins export kam mir eine Textarea, die enthält dann:

                -- phpMyAdmin SQL Dump

                -- version 2.6.1-pl3
                -- http://www.phpmyadmin.net

                
                >   
                > ...  
                >   
                > Die doppelten Minuszeichen wohl escape-Zeichen.  
                  
                Sei leiten halt einen Kommentar ein und hier im Forum (von einem Leerzeichen gefolgt, was auf dein Backup zutrifft) die Signatur. :-)  
                  
                
                > Kann ich dann so komplett als query-string übernehme?  
                
                »»  
                »»Bzw. den Inhalt (in dem Fall 50.000 Zeilen) in myAdmins SQL-Textarea eingeben?  
                  
                So, wie man mit phpMyAdmin ein Backup anlegen kann, kann man es auch wieder in die DB einspeisen. Das wurde hier auch schon angesprochen. Außerdem noch ein ernstgemeinter Tip: Du darfst dich mit den Programmen, die dir zur Verfügung stehen, durchaus beschäftigen.  
                  
                Tschö, Auge  
                
                -- 
                Die deutschen Interessen werden am Liechtenstein verteidigt.  
                  
                [Veranstaltungsdatenbank Vdb 0.2](http://termindbase.auge8472.de/)
                
                1. Hellihello

                  Mit phpmyadmins export kam mir eine Textarea, die enthält dann:

                  -- phpMyAdmin SQL Dump

                  -- version 2.6.1-pl3
                  -- http://www.phpmyadmin.net

                  
                  > >   
                  > > ...  
                  > >   
                  > > Die doppelten Minuszeichen wohl escape-Zeichen.  
                  >   
                  > Sei leiten halt einen Kommentar ein und hier im Forum (von einem Leerzeichen gefolgt, was auf dein Backup zutrifft) die Signatur. :-)  
                  >   
                  > > Kann ich dann so komplett als query-string übernehme?  
                  > »»  
                  > »»Bzw. den Inhalt (in dem Fall 50.000 Zeilen) in myAdmins SQL-Textarea eingeben?  
                  >   
                  > So, wie man mit phpMyAdmin ein Backup anlegen kann, kann man es auch wieder in die DB einspeisen. Das wurde hier auch schon angesprochen. Außerdem noch ein ernstgemeinter Tip: Du darfst dich mit den Programmen, die dir zur Verfügung stehen, durchaus beschäftigen.  
                    
                  Jau, stimmt schon. Habe mir gestern am computerfreien Sonntag mal Ausschnitte aus Kannengießers MySQL-Buch zur Gemüte geführt. Und hier wurde ja auch schon einiges dazu gesagt. Dass "mysqldump" ein eigenes Linux-Programm ist, dass mit "mysqladmin" auch mysql-Befehle aus einem Textfile an den Datenbankserver übermittelt werden können und dass all diese Dinge auch über die SQL-Shell interaktiv abgewickelt werden könnten. Dass der dump jetzt kein eigenes Datenspeicherformat (a la csv oder serialize) ist, sondern die Verkettung von SQL-Befehlen für den re-import hab ich jetzt auch kapiert. Mir gings dabei eben auch um die beschriebenen Grundlagen, nicht nur um die Menüführung bei phpMyAdmin, die ich zugegebenermaßen noch nicht komplett ausgelotet hab. Wobei das da ja alles recht allumfassend scheint, zumal ja auch die SQL-Befehle immer angezeigt werden.  
                    
                  Dank und Gruß,  
                    
                  [frankx](http://community.de.selfhtml.org/visitenkarten/view.php?key=82)
                  
                  -- 
                  [tryin to](http://sauer-ernst.de) [multitain](http://multitain.de)  - Globus = Planet != Welt 
                  
                  1. Hallo

                    Jau, stimmt schon. Habe mir gestern am computerfreien Sonntag mal Ausschnitte aus Kannengießers MySQL-Buch zur Gemüte geführt. Und hier wurde ja auch schon einiges dazu gesagt. Dass "mysqldump" ein eigenes Linux-Programm ist, ...

                    Es ist kein Linuxprogramm, sondern ein Befehl des MySQL-Pakets. Es steht durchaus auch unter Windows zur Verfügung. :-)

                    Dass der dump jetzt kein eigenes Datenspeicherformat (a la csv oder serialize) ist ...

                    Das ginge aber auch, zumindest unter phpMyAdmin (genauer hab' ich mich damit auch noch nicht beschäftigt).

                    Mir gings dabei eben auch um die beschriebenen Grundlagen ...

                    löblich

                    ... nicht nur um die Menüführung bei phpMyAdmin, die ich zugegebenermaßen noch nicht komplett ausgelotet hab.

                    Das kann man sich zwar auch alles anlesen, aber im alltäglichen Betrieb benutzt man phpMyAdmin doch eher selten. Es ist also keine Schande nicht alle Möglichkeiten des Programms ad hoc parat zu haben.

                    Tschö, Auge

                    --
                    Die deutschen Interessen werden am Liechtenstein verteidigt.
                    Veranstaltungsdatenbank Vdb 0.2
                    1. Hellihello Auge,

                      Jau, stimmt schon. Habe mir gestern am computerfreien Sonntag mal Ausschnitte aus Kannengießers MySQL-Buch zur Gemüte geführt. Und hier wurde ja auch schon einiges dazu gesagt. Dass "mysqldump" ein eigenes Linux-Programm ist, ...

                      Es ist kein Linuxprogramm, sondern ein Befehl des MySQL-Pakets. Es steht durchaus auch unter Windows zur Verfügung. :-)

                      Aber es ist ein eigenständiges Programm, was auch funktioniert, wenn der MySQL-Server nicht gestartet ist? Zumindest erzeugt es unter GNU/Linux oder sonstigem (Windows) einen eigenen Prozess? Oder anders: es wird in der Shell gestartet, nicht in der SQL-Shell. Und es gibt eine eigene Man-Page. Die gibts ja für SQL-Befehle, die nur in der SQL-Shell laufen, nicht...?

                      Dank und Gruß,

                      frankx

                      --
                      tryin to multitain  - Globus = Planet != Welt
              2. Moin!

                Im Dumpfile ist dann u.a. der Create-Befehl, der die Datenbank und Tabelle erzeugt und viele Insert-Befehle, die die Tabellen dann mit Inhalten füllen.

                Mit phpmyadmins export kam mir eine Textarea, die enthält dann:

                phpMyAdmin generiert dir auch Dateien direkt zum Download, auf Wunsch auch schon gezippt. Die mußt du dann auf dem Zielsystem nur noch wieder hochladen.

                - Sven Rautenberg

                --
                "Love your nation - respect the others."
        2. Moin!

          MySql speichert die Datenbanken anders ab. Wenn ich mich richtig erinnere sind das pro Tabelle 3 Dateien.

          Das stimmt für MyISAM-Tabellen, nicht jedoch für InnoDB-Tabellen. Dort sind alle Tabellendaten standardmäßig in einer einzigen Datei gespeichert, sogar datenbankübergreifend. Ggf. sind die Daten auch in mehreren Dateien gespeichert, nur im Ausnahmefall (wenn konfiguriert) schreibt die InnoDB-Engine je Tabelle eine eigene Datei so wie MyISAM - trotzdem ist auch dann immer noch eine zentrale Datei im Spiel.

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
        3. Diese direkt zu kopieren ist aber äußerst kritisch. Erstens kann es Probleme zwischen verschiedenen mySql-Versionen geben und zweitens kann es sein, dass sich noch Daten im Arbeitsspeicher befinden, die noch nicht in die Files geschrieben wurden.

          Wenn man es so macht, müssen die Versionen exakt übereinstimmen. Vorkompilierte Pakete verschiedener Distributionen können da Probleme machen, da Suse z.B. überall im Code rumspielt.
          In jedem Fall den Server vorher beenden, damit alle daten auf die Platte geschrieben werden.

          Dann funktioniert das Kopieren der Dateien recht gut.

  2. Mussich ganze Handbuch von MySQL lesen

    ungeachtet der anderen antworten, mir wäre folgende spontan in den sinn gekommen:

    den relevanten teil des handbuchs lesen hilft meistens weiter

    1. Hellihello

      Mussich ganze Handbuch von MySQL lesen

      ungeachtet der anderen antworten, mir wäre folgende spontan in den sinn gekommen:

      den relevanten teil des handbuchs lesen hilft meistens weiter

      Jap (https://forum.selfhtml.org/?t=175869&m=1156947, steckl und Sven waren dennoch bereit, mir hier ihr Wissen auszugsweise zur Verfügung zu stellen. Manchmal ists doch auch schön, wenn jemand mit einem spricht (;-).

      Dank und Gruß,

      frankx

      --
      tryin to multitain  - Globus = Planet != Welt
      1. Jap (https://forum.selfhtml.org/?t=175869&m=1156947, steckl und Sven waren dennoch bereit, mir hier ihr Wissen auszugsweise zur Verfügung zu stellen. Manchmal ists doch auch schön, wenn jemand mit einem spricht (;-).

        das ist mir klar - aber mich hat die frage nach "muss ich das GANZE handbuch lesen?" verwundert, mein hausverstand (aka "gesunder menschenverstand") sagt mir, dass das defintiv nicht erforderlich ist :D