
現在、大きな問題が発生しています。VPS ディスクがいっぱいで、mysql データベースが予想外に大きくなり、すでに限界に達しているため、ホスティングからさらにスペースを購入できません。
ストレージ容量不足のため、mysql サービスを開始できなくなりました。
サービスをオフにした状態でデータベースに対してクエリを実行する方法はありますか? ただし、サードパーティのツールが必要になると思いますが、サーバーのスペースではそれができません。間違っていなければ、データベースから古いデータを削除しても、データベースは縮小されません。
データベース ファイル全体をコンピューターにダウンロードして再構築することすらできません。ファイルが非常に大きいため、収まるドライブがないからです。
今、私にはどんな選択肢がありますか? 次に何ができるかについて、何かアイデアをお持ちの方はいらっしゃいますか?
答え1
MySQL は root として実行されないため、おそらくまだ「予約済み」の空き領域が残っています。その空き領域を再利用することができますtune2fs -m 0 /dev/whatever
。
お使いの OS が何であるかはわかりませんが、おそらく他の場所で空き容量を確保できるはずです。Ubuntu をお使いの場合は、 を試してください。などapt clean
からログ ファイルを削除します。/var/log/*
まだ何かをインストールできる場合は、インストールして実行しncdu
、ncdu -x /
削除する内容の概要を簡単に把握できるようにします。
また、私がよく使うトリックは、数百 MB のダミー ファイルをどこかに置いて、このような状況に陥った場合に削除できるようにすることです。もちろん、監視も行います。
スペースが確保できたら、OPTIMIZE TABLE
問題のあるテーブルで を実行する必要があります。ただし、これにより再作成が発生するため、そのための追加のスペースが必要になります。また、 で実行する必要がありますがinnodb_file_per_table
、これは現在デフォルトです。