web-dev-qa-db-ja.com

SQLダンプを破棄しますが、パターンを持つ複数のテーブルを除外します

誰かがログインするたびに1000以上のテーブルが作成されるため、私は巨大なデータベースを持っています。

drush sql-dumpを使用してデータベースのダンプを作成したいのですが、ファイルが15GBを超えて1GBに圧縮されます。

Drushを使用してパターンに一致するテーブルの束をすばやく簡単に除外する方法はありますか?除外したいテーブルはすべて「result-<username>」という単語で始まります

2

Drushには、sql-dumpからテーブルを除外するためのいくつかのオプションがあります。これらはすべてワイルドカードをサポートするようになりました(これを指摘してくれた@MPDに感謝します)。たとえば、次のようにできます。

drush sql-dump --skip-tables-list='result-*'

これにより、パターンresult-*に一致するすべてのテーブル、つまりresult-で始まるすべてのテーブルがダンプから完全に除外されます。複数のパターン(または個々のテーブル名)をコンマで区切って渡すことができます。引用符は、シェルがパターンを拡張しないようにするために必要です。

テーブルの構造だけを含め、テーブルのデータは含めない場合は、代わりに--structure-tables-listを使用します。

他のオプションは--skip-tables-key--structure-tables-keyです。これらは同様に機能しますが、テーブル名またはパターンをコマンドラインで直接指定する代わりに、drushrc.phpの配列に追加して配列キーを指定します。コマンドライン。これは、 'cache_ *'など、定期的に除外する一連のテーブルがある場合に役立ちます。 drushで提供されるexample.drushrc.phpは、次の例を示します。

/**
 * List of tables whose *data* is skipped by the 'sql-dump' and 'sql-sync'
 * commands when the "--structure-tables-key=common" option is provided.
 * You may add specific tables to the existing array or add a new element.
 */
# $options['structure-tables']['common'] = array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog');
10
John Morahan