如何导入非常大的Drupal数据库的工作?


7

我正在使用Vagrant和OracleVM运行Drupal7。已经启动了站点并正在运行,并且试图导入数据库。到目前为止,我已经运行drush cc并清除了缓存缓存,然后我做了

drush sql-cli < mydb.sql

drush命令花费了很长时间,我不确定它是否在做任何事情。数据库文件不到1 GB。

我该怎么做才能使它正常工作,或者有更好的方法吗?

Answers:


6

我不确定大型SQL导入会带来多少开销,我仅将其用于较小的导入和查询。您可以尝试使用mysql客户端作为替代方法,以消除繁琐的开销。

如果可以在VM上安装管道查看器,则可以查看使用导入的命令的进度。

pv mydb.sql | drush sql-cli

还是没有高峰的开销

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

谢谢!我安装了PV,它正在跟踪其进度。我错了,最初的db是1GB压缩的,未压缩的是大约6。可能是为什么要花这么长时间!
James Ives

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
  • 看门狗
  • 访问日志
  • devel_queries
  • devel_times

5

较小的数据库将进口更多的很快,所以drush cc alldrush watchdog delete all将大大加快速度,如果下探这些是一个选项。

另外,要扩展Shawn Conn的答案,您可以使用没有Drush开销的管道查看器,并且如果使用drush sql-connect代替,您仍然可以使用Drush为您查找数据库凭据drush sql-cli。只需用于$()执行drush sql-connect打印出的mysql行:

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-syncsql-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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.