Redis コマンド BGREWRITEAOF によりディスクから一時ファイルを削除する

Redis コマンド BGREWRITEAOF によりディスクから一時ファイルを削除する

コンテキストの説明

私のLinuxディストリビューションにはredis-server 6.0.5が含まれています。 Redisは永続性を使用するように設定されておりAOF(ファイルの追加のみ)、RDB永続性は無効になっています。

起動時に、スクリプトはredis-serverにBGREWRITEAOFコマンドの実行を要求します。この要求は、ファイルが書き込まれるのと同じデータRedisパスに<pid>ファイルを生成するプロセス(PID =を使用)を開始します。temp-rewriteaof-<pid>.aofappendonly.aof

これはコマンドの正常な動作ですBGREWRITEAOF。このコマンドの有用性は、次のように書かれた内容で証明されています。この投稿

問題は何ですか

BGREWRITEAOF問題は完了せず、システムがシャットダウンしたときに発生します。この場合、ファイルは再temp-rewriteaof-<pid>.aof起動後も保持され、ディスク容量を占有します。

システムはいつでもシャットダウンできるため、ディスクがいっぱいになる危険がありました。この問題を解決する唯一の方法は、データRedisフォルダからすべてのファイルを削除する
スクリプトを作成するようです。temp-rewriteaof-*.aof

質問

より良い解決策を知っている人はいますか? Redisにきれいこの問題を解決するためのプログラム/コマンドは何ですか?

答え1

Redis-serverには、実行中のサーバーのディスク容量を管理する複雑な方法はありません。説明したように、独自のRDBスナップショットファイルとAOFファイルを管理します。ただし、コンピュータの停止によって中断された以前のプロセスによって生成されたファイルを管理することは、Redisが実行する作業ではありません。

BGREWRITEAOFRedisサーバーにコマンドを送信するために作成する起動スクリプトにルーチンを追加することをお勧めします。このルーチンは、サーバーが最後に停止したときに残った古い一時 AOF ファイルをすべて消去します。このルーチンを実行するのに最適な場所です。スクリプトはすでにAOFファイル管理に関連しており、起動時間は、クリーンアップを介して次の数時間/日の作業(およびディスク容量を消費する)のためにコンピュータを準備するのに適した時間です。古いファイルを更新します。

関連情報