理由もなく、非常に大きなデータベースを持つクライアントサイトを継承しました。適度な量のコンテンツがあり、有効なモジュールはほとんどありません。ただし、データベースが大きすぎて簡単に移動できないため、クリーンアップしたいと考えています。
標準のキャッシュテーブルであるsyslogとaccesslogをクリアしました。
標準のDrupalサイトで安全に切り捨てることができる他のテーブルはありますか?
backup&migrate module を使用します。これには 不要なデータをスキップするための適切なデフォルト が付属しています。デフォルトでは、キャッシュ、ウォッチドッグ、その他のテーブルなしでDBバックアップを生成します。
これで問題が解決しない場合は、phpMyAdminを見て、どのテーブルに多くのエントリがあるかを教えてください。
以下は、Drupal 7のテーブルのリストです。これらをクリアして(データベースサイズを小さくするため)、安全に除外して移行を行うことができます( に関する質問のように)ローカルにエクスポートされたデータベースのサイズを減らしてサーバーのインポート制限を回避するには? ):
通常、search_index
やwatchdog
などのテーブルは多くのデータベース領域を使用するため、これらの2つのテーブルを削除するだけで、すでに大きな違いを生み出すことができます。
残りのテーブルのサイズを確認し、サイズが最も大きいテーブルを特定します。
通常、クリーンアップ手順が設定されていないセッションテーブルを見つけることがあります。このようなテーブルは、おそらく除外することもできます。
「 ローカルにエクスポートされたデータベースのサイズを小さくしてサーバーのインポート制限を回避する方法? 」で説明されているように、課題をさらに減らすには、 バックアップと移行 モジュールも。以下はそのプロジェクトページからの引用です(ここに太字のマークアップが追加されています)。
Drupal MySQLデータベース、コード、ファイルをバックアップまたは復元するか、環境間でサイトを移行します。バックアップと移行は、gzip、bzip、Zip圧縮と自動スケジュールバックアップをサポートしています。
バックアップと移行を使用すると、データベーステーブルの一部またはすべてをファイルダウンロードにダンプしたり、サーバーまたはオフサイトのファイルに保存したり、アップロードまたは以前に保存したデータベースダンプから復元したりできます。 バックアップするデータとキャッシュするテーブルとデータをデフォルトで選択できます。
さらに、ローカル環境(WinやMacなど)がホストされているWebサイトのサーバーが実行しているOS(Linuxなど)と異なる場合、OS間のこれらの違いは潜在的な追加の課題を意味します。私は、さまざまなOS間でバックアップおよび移行モジュールを使用した経験がありましたが、通常のMySqlエクスポート/インポートが以前に失敗した状況では、問題は発生しませんでした(問題なく動作しました)。
私の経験では、「cache_ *」テーブルをすべてパージします。
このSQLを実行して、上位のテーブルの増加を監視します。
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'yourdbnamehere'
ORDER BY table_rows DESC
ウォッチドッグとセッションもクリアできます。すべてのユーザーがログアウトされることに注意してください。
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したか、それともばかげた質問ですか?
OptimizeDB モジュールを使用して、キャッシュテーブルをクリーンアップします。 データベース管理 も役立ちます。
データベースのバックアップを取ることを忘れないでください。
example.drushrc.php
これらをリストします:
$options['structure-tables']['common'] = array('cache', 'cache_*', 'history', 'search_*', 'sessions', 'watchdog');
$options['skip-tables']['common'] = array('migration_*');
異なる環境間でデータベースを移動する場合(特に 大きなデータベースで作業している場合 )の場合は、それらをクリアしても安全です。ただし、何をクリアするのかを理解する必要があります。
これに関するスーパーエキスパートではなく、私の経験を共有しています...バックアップと移行モジュールを使用せず、手動でそれらのテーブルの一部をエクスポートする場合、空/切り捨てはwatchdog
、cache
、cache_menu
、cache_block
、cache_content
、cache_form
キャッシュされたもののクリアを大量に含んでいる可能性があるので、害はないと思いますが、これは私の経験であり、このために問題やデータの損失は発生していません。
クリアできる追加のテーブル:
かなりの領域を占める可能性のあるその他のこと:-コンテンツの古いバージョン(単純な切り捨てではクリーンアップできません)。 -locales_sourceおよびlocales_target。使用されなくなった言語や、使用されなくなったモジュールの文字列翻訳がある場合。これらのテーブルは決してクリーンアップされないようです。