Como obter uma importação de um banco de dados Drupal muito grande funcionando?

7

Estou usando o Vagrant e o OracleVM para executar o Drupal 7. Instalei o site e estou tentando importar meu banco de dados. Até agora, eu corri drush cce limpei o cache de drush, e então fiz

drush sql-cli < mydb.sql

O comando drush está demorando muito tempo e não tenho certeza se está fazendo alguma coisa. O arquivo do banco de dados tem pouco menos de um gigabyte.

O que posso fazer para que isso funcione ou existe um método melhor?

James Ives
fonte

Respostas:

6

Não tenho certeza de quanto drush de sobrecarga coloca em cima de grandes importações de SQL; usei-o apenas para importações e consultas menores. Você pode tentar o cliente mysql como uma alternativa que removeria a sobrecarga do drush.

Se você pode instalar o visualizador de tubos na sua VM, poderá visualizar o progresso do comando que consome a importação.

pv mydb.sql | drush sql-cli

Ou sem a sobrecarga do drush

pv mydb.sql | mysql -u <DB_USER> -p<DB_PASS> <YOUR_DB>
Shawn Conn
fonte
Obrigado! Eu instalei o PV e ele está acompanhando seu progresso. Eu estava errado, o db inicial era 1 GB compactado, descompactado, é por volta de 6. Provavelmente por que está demorando tanto!
James Ives
5

O módulo Backup e Migrar possui um recurso para excluir tabelas selecionadas, como:

  • todas as tabelas cache_ *
  • ctools_views_cache
  • ctools_object_cache
  • inundar
  • história
  • fila
  • semáforo
  • cão de guarda
  • search_index (geralmente economiza muito tamanho do banco de dados!)

A questão sobre tabelas / dados padrão a serem excluídos também inclui uma lista interessante de tabelas a não serem migradas (escolha o que melhor se adequa a você), ou seja, cite:

Ao criar um perfil de backup, o módulo, por padrão, define as seguintes tabelas para excluir seus dados de acordo com o problema # 209647: Aviso de exclusão :

  • cache
  • cache_filter
  • cache_calendar_ical
  • cache_menu
  • cache_page
  • cache_views
  • sessões
  • search_dataset
  • search_index
  • search_keywords_log
  • total da pesquisa
  • cão de guarda
  • accesslog
  • devel_queries
  • devel_times
Pierre.Vriens
fonte
5

Bancos de dados menores vai importar mais rapidamente, por isso drush cc alle drush watchdog delete allvai acelerar as coisas consideravelmente, se deixar cair estes é uma opção.

Além disso, para expandir a resposta de Shawn Conn, você pode usar o visualizador de tubos sem a sobrecarga do Drush e ainda usar o Drush para procurar as credenciais do banco de dados, se você usar em drush sql-connectvez de drush sql-cli. Apenas use $()para executar a linha mysql que é drush sql-connectimpressa:

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

É melhor aparar o grande banco de dados no dump usando o drush sql-dumpdump do arquivo SQL. Isso oferece a vantagem de especificar as opções adicionais para ignorar as tabelas específicas durante o dumping (como armazenar em cache ou migrar tabelas).

Isso pode ser especificado na linha de comando (consulte :)drush help sql-dump ou configurá-lo no seu arquivo drushrc, como mostrado em example.drushrc.php:

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

ou por host, como se você estivesse usando sql-syncou sql-dumpentre controles remotos:

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

Em seguida, você pode carregar essas configurações no seu host via:

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

Então você pode tentar algo como:

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

Para monitorar o progresso, você pode adicionar um visualizador de canal ( pv) entre (como ... | pv | ...).

Veja também:

kenorb
fonte
0

Você parece ter resolvido o problema, mas aqui vem um para mim:

drush sql-dump> mydb.sql

Kartagis
fonte