サーバーのディスクがいっぱいで、Mysql サービスを開始できません。データベースを縮小するにはどうすればよいですか?

サーバーのディスクがいっぱいで、Mysql サービスを開始できません。データベースを縮小するにはどうすればよいですか?

現在、大きな問題が発生しています。VPS ディスクがいっぱいで、mysql データベースが予想外に大きくなり、すでに限界に達しているため、ホスティングからさらにスペースを購入できません。

ストレージ容量不足のため、mysql サービスを開始できなくなりました。

サービスをオフにした状態でデータベースに対してクエリを実行する方法はありますか? ただし、サードパーティのツールが必要になると思いますが、サーバーのスペースではそれができません。間違っていなければ、データベースから古いデータを削除しても、データベースは縮小されません。

データベース ファイル全体をコンピューターにダウンロードして再構築することすらできません。ファイルが非常に大きいため、収まるドライブがないからです。

今、私にはどんな選択肢がありますか? 次に何ができるかについて、何かアイデアをお持ちの方はいらっしゃいますか?

答え1

MySQL は root として実行されないため、おそらくまだ「予約済み」の空き領域が残っています。その空き領域を再利用することができますtune2fs -m 0 /dev/whatever

お使いの OS が何であるかはわかりませんが、おそらく他の場所で空き容量を確保できるはずです。Ubuntu をお使いの場合は、 を試してください。などapt cleanからログ ファイルを削除します。/var/log/*

まだ何かをインストールできる場合は、インストールして実行しncduncdu -x /削除する内容の概要を簡単に把握できるようにします。

また、私がよく使うトリックは、数百 MB のダミー ファイルをどこかに置いて、このような状況に陥った場合に削除できるようにすることです。もちろん、監視も行います。

スペースが確保できたら、OPTIMIZE TABLE問題のあるテーブルで を実行する必要があります。ただし、これにより再作成が発生するため、そのための追加のスペースが必要になります。また、 で実行する必要がありますがinnodb_file_per_table、これは現在デフォルトです。

関連情報