web-dev-qa-db-ja.com

非常に大きなDrupalデータベースが機能するようにインポートする方法は?

私はVagrantとOracleVMを使用してDrupal 7.を実行しています。サイトを稼働させて、データベースをインポートしようとしています。これまでにdrush ccとDrushキャッシュをクリアしてから、

drush sql-cli < mydb.sql

Drushコマンドには非常に長い時間がかかり、それが何かを実行しているかどうかはわかりません。データベースファイルはギガバイト未満です。

これを機能させるために私は何ができますか、またはより良い方法はありますか?

7
James Ives

大規模なSQLインポートに加えてオーバーヘッドドラッシュがどの程度の影響を与えるかはわかりません。これは、小さなインポートとクエリにのみ使用しました。ドラッシュのオーバーヘッドを取り除く代替手段として、mysqlクライアントを試すことができます。

パイプビューア をVMにインストールできる場合は、インポートを使用するコマンドの進行状況を表示できます。

pv mydb.sql | drush sql-cli

またはドラッシュオーバーヘッドなしで

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

データベースが小さいほどインポートが速くなるため、これらを削除することがオプションの場合、_drush cc all_および_drush watchdog delete all_を使用すると処理速度が大幅に向上します。

また、Shawn Connの答えを拡張するには、Drushオーバーヘッドなしでパイプビューアを使用し、_drush sql-connect_ではなく_drush sql-cli_を使用する場合は、Drushを使用してデータベース資格情報を検索できます。 $()を使用して、_drush sql-connect_が出力するmysql行を実行します。

_pv mydb.sql | $(drush sql-connect)
_
5
greg_1_anderson

SQLファイルをダンプするには、drush sql-dumpを使用して、ダンプ時に大きなデータベースをトリミングすることをお勧めします。これにより、ダンプ時に特定のテーブルをスキップする追加オプション(キャッシュテーブルや移行テーブルなど)を指定できるという利点があります。

これはコマンドラインで指定するか(drush help sql-dumpを参照)、 example.drushrc.php のようにdrushrcファイルで構成します。

$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 | ...のように)間に追加します。

以下も参照してください。

5
kenorb

バックアップと移行 モジュールには、次のような選択したテーブルを除外する機能があります。

  • すべてのcache_ *テーブル
  • ctools_views_cache
  • ctools_object_cache
  • flood
  • 歴史
  • キュー
  • セマフォ
  • 番犬
  • 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
Pierre.Vriens

あなたは問題を解決したようですが、ここに私のためのものがあります:

drush sql-dump> mydb.sql

0
Kartagis