誰かがログインするたびに1000以上のテーブルが作成されるため、私は巨大なデータベースを持っています。
drush sql-dump
を使用してデータベースのダンプを作成したいのですが、ファイルが15GBを超えて1GBに圧縮されます。
Drushを使用してパターンに一致するテーブルの束をすばやく簡単に除外する方法はありますか?除外したいテーブルはすべて「result-<username>
」という単語で始まります
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');