ログをクリーンアップしたり、最大のファイルを見つけてスペースを減らすにはどうすればよいですか?この重要な瞬間に1.7Tを使用しなかったことも理解できません。
Mysqld は 99% 使用されて実行されていません。
# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 20G 19G 279M 99% /
/dev/root 20G 19G 279M 99% /
devtmpfs 32G 268K 32G 1% /dev
/dev/md3 1.8T 196M 1.7T 1% /home
tmpfs 32G 0 32G 0% /dev/shm
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named
/dev/root 20G 19G 279M 99% /var/named/chroot/var/named
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.conf
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.rfc1912.zones
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/rndc.key
/dev/root 20G 19G 279M 99% /var/named/chroot/usr/lib64/bind
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.iscdlv.key
/dev/root 20G 19G 279M 99% /var/named/chroot/etc/named.root.key
答え1
.NETファイルにはMySQLデータストレージ/var/lib
スペースがなくなりました/var
。 MySQLを起動できません。実は本当に簡単です。見てきれいに/var/log
してみてください。次のようなことをお勧めします(gz
のすべてのファイルを削除/var/log
)。
$ find /var/log -iname "*.gz" -delete
もちろん、まず削除された項目を確認したい場合があります。
$ find /var/log -iname "*.gz"
1.7TBが割り当てられます/home
。しかしそうでは/var
ありません/home
。したがって/home
、使用されません。それも非常に簡単です。
/var
システムをセットアップするときは、より大きなパーティションに分割する必要があります。現在私が見つけることができる最善の解決策は、MySQLデータディレクトリをより大きなパーティション(/home
)に移動することです。
$ mv /var/lib/mysql /home
$ ln -s /home/mysql /var/lib/mysql
リンクを使用したくない場合は、ストレージを使用するようにMySQLを再設定し、次の変更を行う必要があります/home
。/etc/mysql/my.cnf
datadir = /var/lib/mysql
これに関して:
datadir = /home/mysql
MySQLには空き容量があるので、問題なく起動します。このような重要なデータベースをホストしている場合は、パーティション化スキームをもう一度考えてください。
すべてが順調に進んでいる場合は、アプリケーションがログにあまりにも多くの内容を書き込んではいけないため、ログの内容を調べることもできます。どこかでうまく機能するために何か問題があるかもしれません。
答え2
以下は、最大のファイルを見つけるのに便利なコマンドです。
du -ak /var | sort -nr | less
使用法:
du -ak
-a
パーティション内のすべての()ファイルのディスク使用量を要約し、/var
サイズをキロバイト(-k
)単位で印刷します。
sort -nr
ファイルのリストを連結し、逆順( -r
)数字( -n
)順に並べ替えます。
less
最大の違反者が一番上に表示され、リスト内で前後に移動できるように、出力にページが付けられます。
答え3
私はこれがデータベースファイル自体ではなく、mysqlバイナリログで問題になる可能性があることを指摘したいと思います。多くの場合、Binlogはデフォルトで/var/log/mysqlディレクトリにあり、データベースファイルよりも数倍多くのディスク容量を消費する傾向があります。これは、バイナリログがデータベースデータの変更を追跡するためにすべてのSQLデータ変更クエリ(UPDATE、INSERTなど)を保存するためです。 Binlogはshell rmコマンドを介して直接削除しないでください。実行中のデータベースエンジンからmysqlコマンドを介してのみ削除する必要があります。これを行うには、mysqlサーバーを起動する必要があります。 /var/lib/mysqlディレクトリを/homeパーティションに移動する場合は、/パーティションからmysqlサーバーを起動するのに十分なスペースを確保する必要があると思います。したがって、プログラムは次のようになります。
- @John WH Smithの説明に従って、mysqlデータを/ homeパーティションに移動します。
- @John WH Smithの説明に従ってdatadir変数を変更し、mysqlサーバーを実行します。
- PMA、mysql、または他のクライアントを介してrootとしてmysqlサーバーに接続します。
- RESET MASTERまたはPURGE BINARY LOGS TOコマンドを使用してバイナリログを削除します(詳細はmysqlのドキュメントを参照)。
- mysqlサーバーを停止します。 mysql設定ファイルを編集します。 "log_bin"変数の値を覚えておいてください。これには、バイナリログファイルのパスと名前が含まれます。
- すべてのbinlogファイル(binlogインデックスを含む)を/ home / mysql /ディレクトリに移動します。
- 'log_bin'変数の値を 'log_bin = /home/mysql/mysql-bin.log'に変更してmysqlデータベースを起動します。