Antworten auf Ihre häufigsten Fragen

Wie importiere und exportiere ich große Datenbanken?
pdf print

Normalerweise können Sie Ihre Datenbanken bequem über phpMyAdmin oder eigene Skripte verwalten. Bei großen Datenmengen schlägt das allerdings fehl, da die maximale Ausführungszeit eines PHP-Skriptes serverseitig begrenzt ist (das Export-Script wird abgebrochen) und der Upload von Datenbank-Dumps über 256 MB nicht möglich ist. Hier finden Sie Methoden, wie Sie Ihre Daten dennoch importieren können:

Mit MySQLDumper

Mit dem Programm "MySQLDumper" (www.mysqldumper.de) ist es möglich, über eine Weboberfläche Sicherungen Ihrer Datenbanken zu erzeugen. Diese Anwendung ist allerdings nicht vorinstalliert und muss zunächst in Ihren Webspace kopiert und einige Rechte gesetzt werden. Dies ist in der mitgelieferten Anleitung beschrieben.

Deutlich einfacher können Sie es sich machen, wenn Sie das Skript über unsere Webanwendungssammlung installieren: Webanwendungen: die Inklusiv-Skripte Ihres Produkts.

Per PHP-Skript (manuell)

Bitte importieren Sie nur Daten mit diesen Skripten, die ebenso erstellt wurden. Haben Sie den Dump z.B. mit phpMyAdmin erzeugt, kann es zu Problemen kommen.

Erstellen Sie je nach Bedarf eine Textdatei mit dem angegebenen Namen und Inhalt. Beachten Sie dabei folgende Hinweise:

  • Das Unterverzeichnis in das der Dump gespeichert werden soll muss dem wp1234567-Benutzer gehören.
    • Datenbankserver durch den Namen Ihres DB-Servers, also normalerweise "localhost".
    • Username durch den Namen Ihres MySQL-Benutzers ("dbu"+Paketnummer, z.B. "dbu1234567").
    • Passwort durch dessen von Ihnen gewähltes Passwort.
    • Datenbankname durch den Namen Ihrer Datenbank (z.B. "db1234567-meinedb").
    • Pfad zu Ihrem Produkt durch den im KIS unter "Produktverwaltung - Ihr Produktbereich - Konfigurieren - Allgemeines - Allgemeine Informationen - Pfad" angegebenen Pfad zu Ihrem Webspace, wo die Daten abgelegt werden sollen/sind (z.B. /is/htdocs/wp1234567_ABCDEFGHI, oder wenn Sie einen besonderen Pfad für Ihre Domains festgelegt haben auch z.B. /is/htdocs/wp1234567_ABCDEFGHI/www/nur-ein-beispiel/).
  • Ersetzen Sie jeweils die markierten Teile und:
    • Achten Sie darauf, dass der "system"-Befehl in einer Zeile steht. "system([...]" bis "[...]$fp);"
    • Laden Sie die Datei per FTP hoch und rufen Sie sie per Webbrowser auf.
    • Die Skripte sind so ausgelegt, dass sie die Datenbank "von Null aus" wieder herstellen können. Ein Versuch, eine alte Datenbank in eine bestehende zu importieren schlägt fehl, weil die Tabellen, die angelegt werden sollen schon existieren. Wenn Sie sicher sind, dass Ihr Daten durch die Mischung zweier Zustände konsistent bleiben, können Sie die entsprechenden CREATE TABLE...-Blöcke mit einem Texteditior entfernen und dann den Import durchführen.
    • Das Verzeichnis "dump" sollten Sie im Hauptverzeichnis Ihres Webspaces anlegen.

Export von Datenbanken (Dump)

export.php

<?php
$db_host = 'Datenbankserver';
$db_user = 'Username';
$db_pass = 'Passwort';
$db_name = 'Datenbankname';
$wp_path = 'Pfad zu Ihrem Produkt';

system('/usr/bin/mysqldump -u' .$db_user. ' -p' .escapeshellarg($db_pass). ' -h' .$db_host. ' ' .$db_name. ' >' .$wp_path. 'dump/dump.sql', $fp);
if (($fp==0) && (false !== chmod($wp_path . 'dump/dump.sql', 0666))) {
    echo "Daten exportiert";
} else {
    echo "Es ist ein Fehler aufgetreten";
}
?>

Export von Datenbanken (Dump) als gzip-Archiv

export-zip.php

Sollte Ihr Dump etwas... größer sein, empfiehlt es sich wahrscheinlich, diesen direkt packen zu lassen - das passende Script sieht so aus:

<?php
$db_host = 'Datenbankserver';
$db_user = 'Username';
$db_pass = 'Passwort';
$db_name = 'Datenbankname';
$wp_path = 'Pfad zu Ihrem Produkt';

system('/usr/bin/mysqldump -u' .$db_user. ' -p' .escapeshellarg($db_pass). ' -h' .$db_host. ' ' .$db_name. ' | /bin/gzip >' .$wp_path. 'dump/dump.sql.gz', $fp);
if (($fp==0) && (false !== chmod($wp_path. 'dump/dump.sql.gz', 0666))) {
    echo "Daten exportiert";
} else {
    echo "Es ist ein Fehler aufgetreten";
}
?>

Danach finden Sie in Ihrem Webspace unter "dump" die Datei, die Sie sich herunterladen können.

Import von Datenbanken

import.php

Laden Sie die zu importierende Datei als dump.sql mittels FTP auf Ihren Webspace hoch und nutzen Sie dieses Skript:

<?php
$db_host = 'Datenbankserver';
$db_user = 'Username';
$db_pass = 'Passwort';
$db_name = 'Datenbankname';
$wp_path = 'Pfad zu Ihrem Produkt';

system('/usr/bin/mysql -u' .$db_user. ' -p' .escapeshellarg($db_pass). ' -h' .$db_host. ' ' .$db_name. ' <' .$wp_path. 'dump/dump.sql', $fp);
if ($fp==0) {
    echo "Daten importiert";
} else {
    echo "Es ist ein Fehler aufgetreten";
}
?>

Import von Datenbanken im gzip-Format

import-zip.php

<?php
$db_host = 'Datenbankserver';
$db_user = 'Username';
$db_pass = 'Passwort';
$db_name = 'Datenbankname';
$wp_path = 'Pfad zu Ihrem Produkt';

system('/bin/gunzip -c ' .$wp_path. 'dump/dump.sql.gz | /usr/bin/mysql -u' .$db_user. ' -p' .escapeshellarg($db_pass). ' -h' .$db_host. ' ' .$db_name. ', $fp);
if ($fp==0) {
    echo "Daten importiert";
} else {
    echo "Es ist ein Fehler aufgetreten";
}
?>

1044 - Access denied for user user@localhost

Kommt es beim Import zu dieser oder einer ähnlichen Fehlermeldung, kann es sein dass in Ihrem Dumpfile der Befehl CREATE DATABASE enthalten ist. Da Sie nur im KIS, jedoch nicht über Ihren Datenbankbenutzer Datenbanken anlegen können, wird der Import bei dem Befehl CREATE DATABASE mit einem Fehler abgebrochen. Um das Problem zu beheben, öffnen Sie mit einem Editor Ihr Dumpfile und entfernen Sie die Zeile mit dem Befehl CREATE DATABASE. Der Import sollte dann funktionieren.


otto.friedrich@hosteurope.de xanthippe.ypsilante@hosteurope.de hercules.ikarus@hosteurope.de