Как получить импорт очень большой базы данных Drupal?


7

Я использую Vagrant и OracleVM для запуска Drupal 7. Сайт запущен и я пытаюсь импортировать свою базу данных. До сих пор я запустил drush ccи очистил кэш-память, а затем я сделал

drush sql-cli < mydb.sql

Команда drush занимает очень много времени, и я не уверен, что она вообще что-то делает. Файл базы данных находится под гигабайтом.

Что я могу сделать, чтобы заставить это работать, или есть лучший метод?

Ответы:


6

Я не уверен, сколько накладных расходов накладывает на большой импорт SQL, я использовал его только для небольших импортов и запросов. Вы можете попробовать клиент mysql в качестве альтернативы, которая бы убрала издержки на развертывание.

Если вы можете установить средство просмотра каналов на своей виртуальной машине, вы можете наблюдать за ходом выполнения команды, выполняющей импорт.

pv mydb.sql | drush sql-cli

Или без накладных расходов

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

Спасибо! Я установил PV, и он отслеживает его прогресс. Я был не прав, исходный дБ был сжат 1 ГБ, а без сжатия - около 6. Вероятно, почему так долго!
Джеймс Айвс

5

Модуль « Резервное копирование и миграция » имеет функцию исключения выбранных таблиц, например:

  • все таблицы cache_ *
  • ctools_views_cache
  • ctools_object_cache
  • наводнение
  • история
  • очередь
  • семафор
  • сторожевая собака
  • search_index (обычно сохраняет большой размер базы данных!)

Проблема, касающаяся таблиц / данных по умолчанию, которые необходимо исключить , также включает в себя интересный список таблиц, которые не нужно переносить (выберите то, что вам подходит), т.е. (цитата из него):

При создании профиля резервного копирования модуль по умолчанию устанавливает следующие таблицы, чтобы исключить их данные в соответствии с проблемой # 209647: Совет по исключению :

  • кэш
  • cache_filter
  • cache_calendar_ical
  • cache_menu
  • cache_page
  • cache_views
  • сессий
  • search_dataset
  • search_index
  • search_keywords_log
  • search_total
  • сторожевая собака
  • accesslog
  • devel_queries
  • devel_times

5

Меньшие базы данных будут импортировать быстрее, а значит drush cc allи значительно drush watchdog delete allускорить процесс, если их удалить.

Кроме того, чтобы расширить ответ Шона Конна, вы можете использовать просмотрщик каналов без дополнительных затрат Drush и по-прежнему использовать Drush для поиска учетных данных базы данных, если вы используете drush sql-connectвместо drush sql-cli. Просто используйте $()для выполнения строки mysql, которая drush sql-connectвыводит:

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

5

Лучше обрезать большую базу данных по дампу, используя drush sql-dumpдамп файла SQL. Это дает вам преимущество, указывая дополнительные параметры для пропуска определенных таблиц при выгрузке (например, кеширование или перенос таблиц).

Это можно указать в командной строке (см . :)drush help sql-dump или настроить в файле drushrc, как показано ниже example.drushrc.php:

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

или для каждого хоста, например, если вы используете sql-syncили sql-dumpмежду пультами:

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

Затем вы можете загрузить эти настройки на ваш хост через:

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

Тогда вы можете попробовать что-то вроде:

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

Чтобы следить за прогрессом, вы можете добавить трубу просмотра ( pv) между (как ... | pv | ...).

Смотрите также:


0

Вы, кажется, решили проблему, но вот одна для меня:

drush sql-dump> mydb.sql

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.