Solr 8.11.1 でのバックアップ場所

トピック作成者:ks-solruserml-bot (2024/07/06 13:11 投稿)
12
CloseClose

(The bot translated the original post https://lists.apache.org/thread/rv9y6l624rlmnhjdwm17ozp34vnldlyn into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

バックアップをネットワークファイルシステムに保存して復旧をサポートする必要がありますが、インデックスをネットワークファイルシステム上に置くことは望んでいないため、/var/solr/dataをマウントすることはオプションではありません。レプリケーションハンドラで場所を設定しようとしましたが、うまくいきませんでした。以下の設定を試しました。

<requestHandler name="/replication" class="solr.ReplicationHandler">
  <lst name="leader">
    <str name="replicateAfter">optimize</str>
    <str name="backupAfter">optimize</str>
  </lst>
  <int name="maxNumberOfBackups">2</int>
  <str name="commitReserveDuration">00:00:20</str>
  <lst name="default">
    <str name="location">/var/i8s/backup/solr/${i8s.environment}/${solr.core.name}</str>
  </lst>
</requestHandler>
<requestHandler name="/replication" class="solr.ReplicationHandler">
  <lst name="leader">
    <str name="replicateAfter">optimize</str>
    <str name="backupAfter">optimize</str>
    <str name="location">/var/i8s/backup/solr/${i8s.environment}/${solr.core.name}</str>
  </lst>
  <int name="maxNumberOfBackups">2</int>
  <str name="commitReserveDuration">00:00:20</str>
</requestHandler>
<requestHandler name="/replication" class="solr.ReplicationHandler">
  <lst name="leader">
    <str name="replicateAfter">optimize</str>
    <str name="backupAfter">optimize</str>
  </lst>
  <int name="maxNumberOfBackups">2</int>
  <str name="commitReserveDuration">00:00:20</str>
  <str name="location">/var/i8s/backup/solr/${i8s.environment}/${solr.core.name}</str>
</requestHandler>

最適化後のバックアップは実行されますが、設定した場所ではなくデフォルトの場所に保存されています。たとえば:
2022-08-04 17:19:52.053 INFO (Thread-14) [ ] o.a.s.h.SnapShooter
Creating backup snapshot at file:///var/solr/data/contentPage/data/

パスのセキュリティ問題ではないことを確認しました。すべてのパスが許可されていることを検証しました:
2022-08-05 12:29:03.873 INFO (main) [ ] o.a.s.c.CoreContainer Allowing
use of paths: [_ALL_]

バックアップを希望する場所に保存するにはどうすればよいですか?

返信投稿者:ks-solruserml-bot (2024/07/06 13:11 投稿)

https://solr.apache.org/guide/8_11/index-replication.html#http-api-commands-for-the-replicationhandler

このページに関連情報があるようです:

|location|: バックアップの場所。値は使用するリポジトリに依存します。ファイルシステムリポジトリの場合、場所はデフォルトでコアのdataDirになります。指定されている場合、それはSOLR_HOME、SOLR_DATA_HOME、またはsolr.xmlで指定されたallowPaths内にある必要があります。

「location」をsolrconfig.xmlに入れられるかどうかは確かではありません...リファレンスガイドではURLパラメータとしてリストされていますが、設定パラメータとしてはリストされていません。これを確認していません。

URLパラメータが必要かどうかを確認したら:セキュリティ上の理由から、SolrはAPIコールでトリガーされるデータを書き込む場所を制限します。SOLR_HOMEまたはSOLR_DATA_HOMEの外に書き込む場合は、solr.xmlでパスを許可する必要があります。

https://solr.apache.org/guide/8_11/format-of-solr-xml.html#the-solr-element

ありがとうございます、
Shawn

返信投稿者:ks-solruserml-bot (2024/07/06 13:11 投稿)

パスのセキュリティ問題ではないことを確認しました。すべてのパスが許可されていることを検証しました:
2022-08-05 12:29:03.873 INFO (main) [ ] o.a.s.c.CoreContainer Allowing
use of paths: [_ALL_]

メールのこの部分を見落としていました。既に他の返信を送った後に気付きました。見落としについてお詫び申し上げます。

問題は、おそらくlocationがsolrconfig.xmlで設定されるのではなく、URLパラメータである必要があるということだと思います。コードを見る限り、この結論を支持しています。

ありがとうございます。
Shawn

返信投稿者:ks-solruserml-bot (2024/07/06 13:11 投稿)

まさにそれが私が恐れていたことです。自動バックアップの保存場所を設定できないのは、かなり大きな見落としのように思えます。ソフトリンクをたくさん作る以外に解決策をご存知の方はいらっしゃいますか?

返信投稿者:ks-solruserml-bot (2024/07/06 13:12 投稿)

cronジョブを作成して、データフォルダにタイムスタンプを付けてcp -rfを実行するshファイルを実行することはできませんか?インデックスは必要なときにドロップインします。

返信投稿者:ks-solruserml-bot (2024/07/06 13:12 投稿)

実際のところ、ソフトリンクも機能しないですね。なぜなら、スナップショットはdataのサブディレクトリになく、それぞれ異なる名前を持っているからです。

EC2でのcronは少し面倒ですが、はい、それが現在利用可能な最良の解決策のように思えますね。

返信投稿者:ks-solruserml-bot (2024/07/06 13:12 投稿)

私が考えたシンボリックリンクのアイデア(まだ言及していないけれども)は、スクリプトまたは手動で http://server:port/solr/CORE/replication を呼び出す場合にはかなりうまく機能するでしょうが、トリガーされたバックアップには適していません。その間に、スケジュールされたスクリプトに切り替えて、URLで場所と名前のパラメータを指定することができるようにしてください。その後、自分がしたいことを何でもできるようになり、自分でコンパイルする必要もなく、新しいバージョンを待つ必要もありません。

ちなみに、インデックスが非常に小さいのでなければ、頻繁に最適化する必要はありません。最適化が頻繁でないか、最適化が非常に迅速に完了する場合は、その点は無視してください。

Apache Jira の SOLR プロジェクトで改良の提案を開いてください。場所を設定可能にするべきであるとあなたがおっしゃるとおりで、URLで提供できるようにすることも含め、レプリケーションハンドラのすべてのパラメータを注意深く見直す必要があると思います。

時間があるときに、ハンドラの改善を検討します。Jira の問題を作成すると、その作業を追跡しやすくなり、またチェンジログにあなたの名前も記載されます。

ありがとうございます。
Shawn

返信投稿者:ks-solruserml-bot (2024/07/06 13:12 投稿)

もし金属があるなら、cronでec2に対してrsyncを行うことがうまくいくかもしれません。実際、大容量のハードドライブを搭載し、Linuxが稼働し、スリープしない安価なノートパソコンでもそれが可能です。エンタープライズ向けではありませんが、動作するでしょう。

返信投稿者:ks-solruserml-bot (2024/07/06 13:12 投稿)

迅速な返信ありがとうございます。私は https://issues.apache.org/jira/browse/SOLR-16326 を開いて、スケジュールされたバックアップのスクリプト作成に進みます。

返信投稿者:ks-solruserml-bot (2024/07/06 13:13 投稿)

他のハンドラの設定を見てみましたが、おそらくタイポがありますね…

<lst name="default">
  <str name="location">/var/i8s/backup/solr/${i8s.environment}/${solr.core.name}</str>
</lst>

ここではなく、

<lst name="defaults">
  <str name="location">/var/i8s/backup/solr/${i8s.environment}/${solr.core.name}</str>
</lst>

であるべきでしたね。

返信投稿者:ks-solruserml-bot (2024/07/06 13:13 投稿)

はい、デフォルトとして設定しようとしたときに確かにタイプミスをしましたね。その修正を反映するために、私の問題を更新します。

返信投稿者:ks-solruserml-bot (2024/07/06 13:13 投稿)

タイポを修正することでうまく動作するかどうかを見るのは興味深いことですね。時にはコードが解読しにくく、期待通りにデフォルトが適用される可能性もあります。

ありがとうございます。
Shawn

返信投稿者:ks-solruserml-bot (2024/07/06 13:13 投稿)

もしそれがデフォルトが適用されない場合、それはまさにバグだと思います。

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?