Wie kann ich mein Datenbank-Backup wieder einspielen?
am 05.08.2015 - 09:19 Uhr in
Hallo zusammen,
ich betreibe eine Drupal 7 Installation mit ca. 25000 Nodes. Ab und an spiele ich einen Datenbank-Dump in meine lokale Entwicklungsumgebung
ein. Das ist eine XAMPP Installation auf einem Mac mit OSX Mavericks. Mit dem Anwachsen der DB gab es immer mal wieder Probleme, beispielsweise
konnte ich plötzlich keine neuen Flags mehr anlegen, weil der Mysql Server ausstieg und mir anstelle der Flags-Konfiguration ein Fehler angezeigt wurde. Im Großen und Ganzen lief aber alles.
Jetzt geht aber gar nichts mehr auf meinem localhost. Ich habe gestern versucht ein Backup der Produktion (100 MB) per Kommandozeile in meine lokale
Entwicklungsumgebung einzuspielen. Das Einspielen über PHPmyadmin geht schon lange nicht mehr wg. Zeitüberschreitung. Aber jetzt geht auch das Einspielen per Kommandozeile nicht mehr. Der Fehler lautet: "too many files open".
Jetzt ist die grosse Frage wie ich meine localhost-DB wieder auf den aktuellen Stand bekomme. Ich habe mehrere Ideen, weiss aber
nicht welche sich wirklich umsetzen lassen. Vielleicht hat der eine oder andere ja schon mal ein ähnliches Problem gehabt und einen Tipp für mich.
Folgende Alternativen sehe ich:
1: Das verwenden einer Kopie der produktiven Datenbank auf dem Produktionsserver. Aber geht das überhaupt, dass ich für meinen
localhost eine externe Drupal-DB verwende?
2: Ich löse das "too many files" open Problem auf meinem Mac, aber wie?
3: Ich splitte den DB-Dump der Produktion in 10 Teile und spiele sie nach und nach über PHPmyAdmin in meinen Localhost ein. Aber wie splitte ich das?
Was würdet ihr machen? Bin für jeden Tipp dankbar.
Viele Grüße
Rhodes
- Anmelden oder Registrieren um Kommentare zu schreiben
PHP Einstellungen prüfen
am 05.08.2015 - 10:31 Uhr
Was würdet ihr machen? Bin für jeden Tipp dankbar.
Zunächst mal die php.ini, da insbesondere die max_execution_time, max_file_upload.... u.sw. anpassen.
Wenn im Betrieb der Site die DB der Flaschenhals ist, musst du ggf. den mysql Server und Apache selbst anpassen. Vielleicht hilft der aber auch schon die Installation von memcached. Dieser Cache hält Daten aus der DB vor, so dass die sql Querys stark minimiert werden. Die Anbindung von Drupal erfolgt recht einfach via Modul In jedem Fall bekommst du einen deutlichen Performance Schub.
PHP Einstellungen prüfen
am 05.08.2015 - 10:32 Uhr
Was würdet ihr machen? Bin für jeden Tipp dankbar.
Zunächst mal die php.ini, da insbesondere die max_execution_time, max_file_upload.... u.sw. anpassen.
Wenn im Betrieb der Site die DB der Flaschenhals ist, musst du ggf. den mysql Server und Apache selbst anpassen. Vielleicht hilft der aber auch schon die Installation von memcached. Dieser Cache hält Daten aus der DB vor, so dass die sql Querys stark minimiert werden. Die Anbindung von Drupal erfolgt recht einfach via Modul In jedem Fall bekommst du einen deutlichen Performance Schub.
Hallo, das open file limit
am 05.08.2015 - 12:45 Uhr
Hallo,
das open file limit kannst du wie hier beschrieben setzen. Du kannst es einmal im OS und dann auch nochmal in der my.cnf deines mySQL Servers setzen
http://duntuk.com/how-raise-ulimit-open-files-and-mysql-openfileslimit
HTH, sui
Am Mac und Commandline kann es nicht grundsätzlich liegen
am 05.08.2015 - 23:13 Uhr
Ich habe in letzter Zeit in einem Kundenprojekt eine wesentlich größere Datenbank lokal auf meinem Macbook Air (Mac OS 10.9) allerdings mit MAMP Pro bearbeitet. Dabei ging es um mehr als 1,2 Millionen Nodes in ca, 1,5 GB großen SQL-Dumps. Die habe ich sowohl per Commandline als auch mit Sequel Pro importieren können. PHPmyadmin ist bei größren Datenbanken eher ein Rückschritt und solche Tools wie MySQLDumper usw. sind nur Krücken, wenn man keinen Zugriff auf Commandline-Tools hat.
Der meiner Meinung nach im Moment einzigen Vorteil an PHPmyadmin ist ein Kommando zum gruppierten Verändern von Tabellen-Prefixen. Auf meine Server installiere ich das nicht mal und nutze grundsätzlich MySQLWorkbench oder eben Sequel Pro für den schnellen Blick in Tabellen über SSH-Tunnel.
Eine sinnvolle Teilung der Datenmengen geht übrigens auf Tabellen-Ebene. Die kann man auch einzeln/gruppiert exportieren und importieren. Außerdem kann man Cache-Tabellen, den Such-Index und oft auch die Watchdog auch leeren. Nur möchte man das oft nicht auf dem Produktiv-System, nur um einen handlicheren Dump zu bekommen.
Vielen Dank
am 08.08.2015 - 09:45 Uhr
Euch allen für die vielen Tipps.
Letztlich habe ich es damit geschafft:
ulimit -n 4096
sudo sysctl -w kern.maxfiles=40000
sudo sysctl -w kern.maxfilesperproc=40000