以下のように、Sphinx インデックスを自動的に再インデックスする 4 つの CRON ジョブを設定しました。
*/5 * * * /usr/bin/pgrep indexer || time /usr/local/sphinx/bin/indexer --rotate --config /usr/local/sphinx/etc/sphinx.conf ripples_delta
*/5 * * * /usr/bin/pgrep indexer || time /usr/local/sphinx/bin/indexer --rotate --config /usr/local/sphinx/etc/sphinx.conf users_delta
30 23 * * * /usr/bin/pgrep indexer || time /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --merge users users_delta --merge-dst-range deleted 0 0 --rotate
0 0 * * * /usr/bin/pgrep indexer || time /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --merge ripples ripples_delta --merge-dst-range deleted 0 0 --rotate
上記はpgrepを示しています。これは、インデクサーがすでに実行されているかどうかを確認するためにすべてのインスタンスで使用されていることを願っています. ここでの私の意図は、リソースを大量に消費する可能性のあるオーバーラップを防ぐことです。
最初の 2 つの Cron ジョブは 5 分ごとに実行され、2 つのメイン インデックスのデルタ インデックスを更新します。
2 番目の 2 つは 1 日に 1 回実行され (1 つは午後 11 時 30 分、もう 1 つは午前 12 時)、デルタ インデックスを対応する主要インデックスにマージします。
私の理解では、これらのインデックス マージに続いて、以前にマージされたデータをすべて削除し、翌日のインデックス作成に備えて基本的にそれらをクリーンアップするために、デルタでインデックスを再実行する必要があるということです。
マージの完了時にこれが自動的に行われるようにするにはどうすればよいですか? もちろん、あと 2 つの cron ジョブを追加することもできますが、関連するマージが完了した直後に実行する必要があります。
前もって感謝します。