Come far funzionare un'importazione di un database Drupal molto grande?


7

Sto usando Vagrant e OracleVM per eseguire Drupal 7. Ho il sito attivo e sto cercando di importare il mio database. Finora ho eseguito drush cce svuotato la cache di Drush, e poi l'ho fatto

drush sql-cli < mydb.sql

Il comando drush sta impiegando molto tempo e non sono sicuro che stia facendo qualcosa. Il file del database è appena sotto un gigabyte.

Cosa posso fare per farlo funzionare o esiste un metodo migliore?

Risposte:


6

Non sono sicuro di quanto drush overhead aggiunge alle grandi importazioni SQL, l'ho usato solo per importazioni e query più piccole. Puoi provare il client mysql come alternativa per rimuovere il sovraccarico del drush.

Se è possibile installare il visualizzatore di pipe sulla VM, è possibile visualizzare l'avanzamento del comando che utilizza l'importazione.

pv mydb.sql | drush sql-cli

O senza il sovraccarico di droga

pv mydb.sql | mysql -u <DB_USER> -p<DB_PASS> <YOUR_DB>

Grazie! Ho installato PV e sta monitorando i suoi progressi. Ho sbagliato, il db iniziale era compresso da 1 GB, non compresso è circa 6. Probabilmente perché sta impiegando così tanto tempo!
James Ives,

5

Il modulo Backup e migrazione ha una funzione per escludere le tabelle selezionate, come:

  • tutte le tabelle cache_ *
  • ctools_views_cache
  • ctools_object_cache
  • alluvione
  • storia
  • coda
  • semaforo
  • cane da guardia
  • search_index (di solito salva molte dimensioni del database!)

Il problema relativo alle tabelle / ai dati predefiniti da escludere include anche un interessante elenco di tabelle da non migrare (scegli ciò che fa per te), ovvero (citazione da esso):

Quando si crea un profilo di backup, per impostazione predefinita il modulo imposta le seguenti tabelle in modo che i loro dati vengano esclusi in base al problema n. 209647: Escludere i consigli :

  • nascondiglio
  • cache_filter
  • cache_calendar_ical
  • cache_menu
  • cache_page
  • cache_views
  • sessioni
  • search_dataset
  • search_index
  • search_keywords_log
  • search_total
  • cane da guardia
  • AccessLog
  • devel_queries
  • devel_times

5

Database più piccoli potranno importare più rapidamente, in modo drush cc alle drush watchdog delete allsarà accelerare le cose considerevolmente, se far cadere questi è un'opzione.

Inoltre, per espandere la risposta di Shawn Conn, puoi utilizzare il visualizzatore di pipe senza il sovraccarico Drush e comunque utilizzare Drush per cercare le credenziali del database per te se lo usi drush sql-connectinvece di drush sql-cli. Basta usare $()per eseguire la riga mysql che drush sql-connectstampa:

pv mydb.sql | $(drush sql-connect)

5

È meglio tagliare il grande database sul dump usando drush sql-dumpper scaricare il file SQL. Ciò offre il vantaggio di specificare le opzioni aggiuntive per saltare le tabelle specifiche durante il dumping (come cache o migrare le tabelle).

Questo può essere specificato nella riga di comando (vedi :)drush help sql-dump o configurarlo nel tuo file drushrc come mostrato in example.drushrc.phpsimile:

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

o per base host come se si utilizzi sql-synco sql-dumptra telecomandi:

$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
);

Quindi puoi caricare queste impostazioni nel tuo host tramite:

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

Quindi puoi provare qualcosa del tipo:

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

Per monitorare l'avanzamento, puoi aggiungere pipe viewer ( pv) tra (like ... | pv | ...).

Guarda anche:


0

Sembra che tu abbia risolto il problema, ma eccone uno per me:

drush sql-dump> mydb.sql

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.