drush sql-sync @dev @stagingでスキップするテーブルを選択するにはどうすればよいですか?


7

私の前の質問に続いて、 @ devと@stagingの間でユーザーを複製しないようにDrush sql-syncを設定するにはどうすればよいですか? 自動的に同期してはならない80を超えるテーブル(コンテンツ、ロールと権限、ユーザー、一時、キャッシュ)を手動で事前選択しました。私はこの解決策に完全に満足していません。どうして?私のフィルターの決定は、経験、直感、およびベストプラクティスメソッドを使用したい場合の推測に基づいているためです。

どのテーブルをスキップするかを適切に選択する方法drush sql-sync @dev @tstとはdrush sql-sync @production @staging

私のセットアップ:

git.drupal.org ==>ローカルdrupal gitリポジトリ==> @dev-> @tst-> @staging-> @production(設定、静的コンテンツ、ロール、権限)

@staging <-@production(コンテンツ、テストする本番シナリオ)

BenjaminMelançonらによるDrupal 7の決定的なガイドなどによると、

に表示されるテーブルのリストは次のとおりですexample.drushrc.php

$options['structure-tables'] = array(  'common' => array('cache',
  'cache_filter', 'cache_menu', 'cache_page', 'history', 'sessions',
  'watchdog'),
);

このリストにいくつかのテーブルを追加する必要がある場合があります。まずcache、名前にを含むテーブルのリストを検討することをお勧めしますdrush sql-query 'show tables;' | grep cache

などのテーブルをこのリストから削除しimagecache_action、残りを構造テーブルリストに追加します。

sql-syncスキップしたテーブルでを実行した後、ターゲットサイトのキャッシュをクリアして、正しく機能することを確認する必要があります。

考慮すべき他のテーブルは何ですか?どうして?


パッチは、「より良い構造、テーブルの取り扱いとスキップ・テーブルのオプション(cache_ *サポートを含むを!)」と呼ばれる(作業中)がありdrupal.org/node/698264は *特にcache_で大いに役立つとfield_ *テーブルへのでしょうDrushデータ配布フィルターの変更を制限します。
Refineo

回答:


6

Drush sql-syncは、プレフィックスを使用する共有データベースをサポートしていません。使用drush sqlq 'show tables;'可能なテーブルのリストを取得するために使用するラッパースクリプトを記述し、それらをプレフィックスで手動でフィルター処理してから、それらを--tables-listオプションを介してsql-syncに戻す場合、運が良いかもしれません。


5

Drupal 7では、これらのテーブルについて検討する必要があります。

'cache', 'cache_field', 'cache_form', 'cache_filter', 'cache_menu', 'cache_page', 'history', 'sessions', 'watchdog'

Drupal 8では、これらは次のとおりです。

'cache', 'cache_bootstrap', 'cache_config', 'cache_container', 'cache_data', 'cache_default', 'cache_discovery', 'cache_filter', 'cache_menu', 'cache_page', 'history', 'search_index', 'sessions', 'watchdog'

これには、移行モジュールに関連する特定のテーブルや、いくつかの一時データを格納する可能性のあるその他のカスタムテーブルは含まれません。

これらのテーブルをダンプしてスキップするdrushコマンドの例(データのない構造体のみを作成):

drush sql-dump --structure-tables-list=cache,cache_filter,cache_menu,cache_page,history,sessions,watchdog --result-file=dump.sql

ヒント:--ordered-dump人間の出力を向上させるために追加しますが、インポートが少し遅くなります。

通常structure-table、ローカル操作($options['structure-tables'])にはオプションの追加で十分ですが、の場合sql-sync、これはコマンド固有のセクションの特定のエイリアスに追加する必要があると思います。たとえば、

$aliases['foo'] = 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_filter', 'cache_menu', 'cache_page', 'history', 'search_index', 'sessions', 'watchdog'),
      ),
      'skip-tables' => array(
        'common' => array('field_deleted_revision_63'),
      ),
    ),
    'sql-dump' => array(
      'ordered-dump' => TRUE,
      'structure-tables-key' => 'common',
      'skip-tables-key' => 'common',
    ),
  ), // end: command-specific
  // Applied only if the alias is used as the source.
  'source-command-specific' => array(
  ),
  // Applied only if the alias is used as the target.
  'target-command-specific' => array(
  ),
);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.