Wie funktioniert der Import einer sehr großen Drupal-Datenbank?

7

Ich verwende Vagrant und OracleVM, um Drupal 7 auszuführen. Ich habe die Site eingerichtet und versuche, meine Datenbank zu importieren. Bisher bin ich gelaufen drush ccund habe den Drush-Cache geleert, und dann habe ich es getan

drush sql-cli < mydb.sql

Der Drush-Befehl dauert sehr lange und ich bin mir nicht sicher, ob er überhaupt etwas bewirkt. Die Datenbankdatei ist knapp ein Gigabyte groß.

Was kann ich tun, um dies zum Laufen zu bringen, oder gibt es eine bessere Methode?

James Ives
quelle

Antworten:

6

Ich bin mir nicht sicher, wie viel Overhead-Drush zusätzlich zu großen SQL-Importen anfällt. Ich habe es nur für kleinere Importe und Abfragen verwendet. Sie können den MySQL-Client als Alternative ausprobieren, um den Drush-Overhead zu beseitigen.

Wenn Sie den Pipe Viewer auf Ihrer VM installieren können, können Sie den Fortschritt des Befehls anzeigen, der den Import verbraucht.

pv mydb.sql | drush sql-cli

Oder ohne den Drush Overhead

pv mydb.sql | mysql -u <DB_USER> -p<DB_PASS> <YOUR_DB>
Shawn Conn
quelle
Vielen Dank! Ich habe PV installiert und es verfolgt den Fortschritt. Ich habe mich geirrt, die anfängliche Datenbank war 1 GB komprimiert, unkomprimiert ist es ungefähr 6. Wahrscheinlich, warum es so lange dauert!
James Ives
5

Das Modul Sichern und Migrieren verfügt über eine Funktion zum Ausschließen ausgewählter Tabellen, z.

  • alle cache_ * -Tabellen
  • ctools_views_cache
  • ctools_object_cache
  • Flut
  • Geschichte
  • Warteschlange
  • Semaphor
  • Wachhund
  • search_index (spart normalerweise viel Datenbankgröße!)

Das Problem mit auszuschließenden Standardtabellen / -daten enthält auch eine interessante Liste von Tabellen, die nicht migriert werden sollen (wählen Sie aus, was für Sie passt), dh (Zitat daraus):

Beim Erstellen eines Sicherungsprofils legt das Modul standardmäßig die folgenden Tabellen so fest, dass ihre Daten gemäß Problem Nr. 209647 ausgeschlossen werden: Hinweis ausschließen :

  • Zwischenspeicher
  • cache_filter
  • cache_calendar_ical
  • cache_menu
  • cache_page
  • cache_views
  • Sitzungen
  • search_dataset
  • Suchindex
  • search_keywords_log
  • search_total
  • Wachhund
  • Zugangsprotokoll
  • devel_queries
  • devel_times
Pierre.Vriens
quelle
5

Kleinere Datenbanken werden schneller importiert drush cc allund drush watchdog delete allbeschleunigen die Arbeit erheblich, wenn das Löschen dieser Datenbanken eine Option ist.

Um die Antwort von Shawn Conn zu erweitern, können Sie den Pipe Viewer ohne den Drush-Overhead verwenden und trotzdem Drush verwenden, um die Datenbankanmeldeinformationen für Sie nachzuschlagen, wenn Sie drush sql-connectstattdessen verwenden drush sql-cli. Verwenden Sie einfach $(), um die MySQL-Zeile auszuführen, die ausgedruckt drush sql-connectwird:

pv mydb.sql | $(drush sql-connect)
greg_1_anderson
quelle
5

Es ist besser, die große Datenbank beim Speichern zu kürzen, indem Sie drush sql-dumpdie SQL-Datei sichern. Dies gibt Ihnen den Vorteil, die zusätzlichen Optionen anzugeben, mit denen die spezifischen Tabellen beim Dumping übersprungen werden können (z. B. Cache- oder Migrationstabellen).

Dies kann entweder in der Befehlszeile angegeben werden (siehe :)drush help sql-dump oder in Ihrer drushrc- Datei wie folgt konfiguriert werden example.drushrc.php:

$options['structure-tables']['common'] = array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog');
$options['skip-tables']['common'] = array('migration_*');

oder pro Hostbasis, wenn Sie Fernbedienungen verwenden sql-syncoder sql-dumpzwischen diesen:

$aliases['global'] = array(
  // These options will only be set if the alias is used with the specified command.
  'command-specific' => array(
    'sql-sync' => array(
      'structure-tables-key' => 'common',
      'skip-tables-key' => 'common',
      'structure-tables' => array(
        // You can add more tables which contain data to be ignored by the database dump
        'common' => array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog'),
      ),
      'skip-tables' => array(
        'common' =>array('migration_*'),
      ),
    ),
    'sql-dump' => array(
      'ordered-dump' => FALSE,
      'structure-tables-key' => 'common',
      'skip-tables-key' => 'common',
    ),
  ), // end: command-specific
);

Anschließend können Sie diese Einstellungen über Folgendes in Ihren Host laden:

$aliases['stage'] = array(
  // ...
) + $aliases['global'];

Dann können Sie etwas ausprobieren wie:

drush @source sql-dump | drush @self sql-cli

Um den Fortschritt zu überwachen, können Sie pvdazwischen Pipe Viewer ( ) hinzufügen (wie ... | pv | ...).

Siehe auch:

Kenorb
quelle
0

Sie scheinen das Problem gelöst zu haben, aber hier kommt eines für mich:

drush sql-dump> mydb.sql

Kartagis
quelle