¿Cómo conseguir que funcione una importación de una base de datos Drupal muy grande?

7

Estoy usando Vagrant y OracleVM para ejecutar Drupal 7. Tengo el sitio en funcionamiento y estoy tratando de importar mi base de datos. Hasta ahora he corrido drush ccy borrado el caché drush, y luego lo hice

drush sql-cli < mydb.sql

El comando drush está tardando mucho tiempo y no estoy seguro de si está haciendo algo. El archivo de la base de datos está justo debajo de un gigabyte.

¿Qué puedo hacer para que esto funcione o hay un método mejor?

James Ives
fuente

Respuestas:

6

No estoy seguro de cuánto gasta la sobrecarga de las importaciones SQL grandes, solo lo he usado para importaciones y consultas más pequeñas. Puede probar el cliente mysql como una alternativa que eliminaría la sobrecarga drush.

Si puede instalar Pipe Viewer en su VM, puede ver el progreso del comando que consume la importación.

pv mydb.sql | drush sql-cli

O sin la borrachera de arriba

pv mydb.sql | mysql -u <DB_USER> -p<DB_PASS> <YOUR_DB>
Shawn Conn
fuente
¡Gracias! Instalé PV y está siguiendo su progreso. Me equivoqué, el db inicial estaba comprimido 1GB, sin comprimir, es alrededor de 6. ¡Probablemente por qué está tomando tanto tiempo!
James Ives
5

El módulo Copia de seguridad y migración tiene una función para excluir tablas seleccionadas, como:

  • todas las tablas cache_ *
  • ctools_views_cache
  • ctools_object_cache
  • inundar
  • historia
  • cola
  • semáforo
  • perro guardián
  • search_index (¡generalmente ahorra mucho tamaño de base de datos!)

El problema sobre las tablas / datos predeterminados para excluir , también incluye una lista interesante de tablas que no se migrarán (elija lo que más le convenga), es decir (cite de ella):

Al crear un perfil de copia de seguridad, el módulo establece de forma predeterminada las siguientes tablas para que se excluyan sus datos de acuerdo con el problema # 209647: Excluir consejos :

  • cache
  • cache_filter
  • cache_calendar_ical
  • cache_menu
  • cache_page
  • vistas_caché
  • sesiones
  • search_dataset
  • search_index
  • search_keywords_log
  • búsqueda_total
  • perro guardián
  • registro de acceso
  • devel_queries
  • devel_times
Pierre.Vriens
fuente
5

Bases de datos más pequeñas importar más rápidamente, así drush cc ally drush watchdog delete allacelerará las cosas considerablemente, si se los deja caer es una opción.

Además, para ampliar la respuesta de Shawn Conn, puede usar el visor de tuberías sin la sobrecarga de Drush, y aún usar Drush para buscar las credenciales de la base de datos si lo usa en drush sql-connectlugar de drush sql-cli. Solo use $()para ejecutar la línea mysql que se drush sql-connectimprime:

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

Es mejor recortar la gran base de datos en el volcado utilizando drush sql-dumppara volcar el archivo SQL. Esto le brinda la ventaja de especificar las opciones adicionales para omitir las tablas específicas al volcar (como caché o migrar tablas).

Esto se puede especificar en la línea de comando (ver :)drush help sql-dump o configurarlo en su archivo drushrc como se muestra en example.drushrc.php:

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

o por host, como si está utilizando sql-synco 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
);

Luego puede cargar esta configuración en su host a través de:

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

Entonces puedes probar algo como:

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

Para monitorear el progreso, puede agregar el visor de tuberías ( pv) entre (me gusta ... | pv | ...).

Ver también:

kenorb
fuente
0

Parece que resolvió el problema, pero aquí viene uno para mí:

drush sql-dump> mydb.sql

Kartagis
fuente