web-dev-qa-db-ja.com

どのテーブルをクリアしても安全ですか?

理由もなく、非常に大きなデータベースを持つクライアントサイトを継承しました。適度な量のコンテンツがあり、有効なモジュールはほとんどありません。ただし、データベースが大きすぎて簡単に移動できないため、クリーンアップしたいと考えています。

標準のキャッシュテーブルであるsyslogとaccesslogをクリアしました。

標準のDrupalサイトで安全に切り捨てることができる他のテーブルはありますか?

40
Nigel Waters

backup&migrate module を使用します。これには 不要なデータをスキップするための適切なデフォルト が付属しています。デフォルトでは、キャッシュ、ウォッチドッグ、その他のテーブルなしでDBバックアップを生成します。

これで問題が解決しない場合は、phpMyAdminを見て、どのテーブルに多くのエントリがあるかを教えてください。

20
BetaRide

除外できるDrupal 7テーブル

以下は、Drupal 7のテーブルのリストです。これらをクリアして(データベースサイズを小さくするため)、安全に除外して移行を行うことができます( に関する質問のように)ローカルにエクスポートされたデータベースのサイズを減らしてサーバーのインポート制限を回避するには? ):

  • アクセスログ
  • バッチ
  • 次のようなすべてのキャッシュ関連テーブル:
    • キャッシュ*
    • cache_block
    • cache_content
    • cache_filter *
    • cache_form
    • cache_calendar_ical
    • cache_menu *
    • cache_page *
    • cache_views
    • * _cache、features_cacheやviews_data_object_export_cacheなど
  • ctools_views_cache
  • ctools_object_cache
  • devel_queries
  • devel_times
  • flood
  • 歴史
  • キュー
  • 次のようなさまざまなsearch_ *テーブル:
    • search_dataset
    • search_index
    • search_keywords_log
    • search_total
  • セマフォ
  • セッション
  • 番犬
  • webform_submitted_data

通常、search_indexwatchdogなどのテーブルは多くのデータベース領域を使用するため、これらの2つのテーブルを削除するだけで、すでに大きな違いを生み出すことができます。

除外される可能性のある他のテーブル

残りのテーブルのサイズを確認し、サイズが最も大きいテーブルを特定します。

通常、クリーンアップ手順が設定されていないセッションテーブルを見つけることがあります。このようなテーブルは、おそらく除外することもできます。

モジュールのバックアップと移行

ローカルにエクスポートされたデータベースのサイズを小さくしてサーバーのインポート制限を回避する方法? 」で説明されているように、課題をさらに減らすには、 バックアップと移行 モジュールも。以下はそのプロジェクトページからの引用です(ここに太字のマークアップが追加されています)。

Drupal MySQLデータベース、コード、ファイルをバックアップまたは復元するか、環境間でサイトを移行します。バックアップと移行は、gzip、bzip、Zip圧縮と自動スケジュールバックアップをサポートしています。

バックアップと移行を使用すると、データベーステーブルの一部またはすべてをファイルダウンロードにダンプしたり、サーバーまたはオフサイトのファイルに保存したり、アップロードまたは以前に保存したデータベースダンプから復元したりできます。 バックアップするデータとキャッシュするテーブルとデータをデフォルトで選択できます

さらに、ローカル環境(WinやMacなど)がホストされているWebサイトのサーバーが実行しているOS(Linuxなど)と異なる場合、OS間のこれらの違いは潜在的な追加の課題を意味します。私は、さまざまなOS間でバックアップおよび移行モジュールを使用した経験がありましたが、通常のMySqlエクスポート/インポートが以前に失敗した状況では、問題は発生しませんでした(問題なく動作しました)。

23
Pierre.Vriens

私の経験では、「cache_ *」テーブルをすべてパージします。

  • プラス "ウォッチドッグ"過去を気にしない場合Drupalログ
  • さらに、ログインしているユーザーを気にしない場合は「accesslog」
  • 加えて、インデックス付きノードの内容を気にしない場合は「検索」
18
thePanz

このSQLを実行して、上位のテーブルの増加を監視します。

SELECT * 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA =  'yourdbnamehere'
ORDER BY table_rows DESC 
8
uwe

ウォッチドッグとセッションもクリアできます。すべてのユーザーがログアウトされることに注意してください。

7
Attiks

MySQLを使用すると、データベース全体または一部をエクスポートするmysqldumpプログラムを使って楽しいことができます。たとえば、これは構造をエクスポートするだけです:

mysqldump -u root -pBatteryHorseStapleObviously -h some_Host --no-data dbname > ~/dbname.sql

次に、「テーブルを無視」オプションを使用して、データをさらにエクスポートできます。

mysqldump -u root -pBatteryHorseStapleObviously -h some_Host --ignore-table=dbname.huge_table --ignore-table=dbname.massive_table --ignore-table=dbname.useless_table some_Host >> ~/dbname.sql

これにより、いくつかの大規模なテーブルを無視して、データを以前のファイルの最後に配置します。

その後、大規模なテーブルが必要な場合は、上記のアプローチを使用してそれらを別のファイルにエクスポートできます。その後、それらをチャンクでインポートできます(ただし、f kチェックをオフにする必要がある場合があります)。

アップロード前にファイルをgzipしたか、それともばかげた質問ですか?

5
Henry's Cat

OptimizeDB モジュールを使用して、キャッシュテーブルをクリーンアップします。 データベース管理 も役立ちます。

データベースのバックアップを取ることを忘れないでください。

4
M a m a D

example.drushrc.php これらをリストします:

$options['structure-tables']['common'] = array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog');
$options['skip-tables']['common'] = array('migration_*');

異なる環境間でデータベースを移動する場合(特に 大きなデータベースで作業している場合 )の場合は、それらをクリアしても安全です。ただし、何をクリアするのかを理解する必要があります。

2
kenorb

これに関するスーパーエキスパートではなく、私の経験を共有しています...バックアップと移行モジュールを使用せず、手動でそれらのテーブルの一部をエクスポートする場合、空/切り捨てはwatchdogcachecache_menucache_blockcache_contentcache_formキャッシュされたもののクリアを大量に含んでいる可能性があるので、害はないと思いますが、これは私の経験であり、このために問題やデータの損失は発生していません。

2
optimusprime619

いくつかのアイデア:

  • まったく異なるアプローチは、保持したいデータの views を使用してRSSフィードを作成することです。次に、新しいDrupalインストールを作成し、このデータを Feed API でインポートします。
  • そしてもう1つのアプローチ:学生を雇って、新しいインストールに手動でデータを転送させます。
  • またはこれ:非常に巨大なテーブルと、その理由(ご存知の場合)について詳しく教えてください。
2
BetaRide

クリアできる追加のテーブル:

  • バッチ
  • webform_submitted_data

かなりの領域を占める可能性のあるその他のこと:-コンテンツの古いバージョン(単純な切り捨てではクリーンアップできません)。 -locales_sourceおよびlocales_target。使用されなくなった言語や、使用されなくなったモジュールの文字列翻訳がある場合。これらのテーブルは決してクリーンアップされないようです。

1
fietserwin