[Solr]バックアップの置き場をS3にする
Solr には予め設定しておいたレポジトリにバックアップする機能があります。
レポジトリには以下の種類があります。
- ローカルファイルシステム
- HDFS
- GCS(Google Cloud Storage)
- Amazon S3
ここではローカルファイルシステムとS3の設定例を見てみます。
LocalFileSystemRepository
バックアップレポジトリの設定は solr.xml に書きます。
<backup> <repository name="local_repo" class="org.apache.solr.core.backup.repository.LocalFileSytemRepository"> <str name="location">solr/backup_data</str> </repository> </backup>
LocalFileSystemRepository の場合、設定項目は location だけです。
以下のようにAPIを利用してバックアップを実行した場合、Solr のインストールディレクトリを $SOLR_DIR とすると $SOLR_DIR/server/solr/backup_data/backup1 にコレクション backup_test のバックアップが作られます。
$ curl 'http://localhost:8983/solr/admin/collections?action=BACKUP&name=backup1&collection=backup_test&repository=local\ _repo'
S3BackupRepository
S3BackupRepository を使うためにはプラグインの設定が必要です。
$SOLR_DIR/server/solr/lib を作成し、dist/solr-s3-repository-8.10.0.jar と contrib/s3-repository/lib/*.jar をコピーして
solrconfig.xml に以下を追加します。
<lib dir="./lib" />
レポジトリの設定はsolr.xmlに追加します。
<backup> <repository name="s3_repo" class="org.apache.solr.s3.S3BackupRepository" default="false"> <str name="s3.bucket.name">XXXX.splout.co.jp</str> <str name="s3.region">us-west-2</str> </repository> </backup>
s3.bucket.name でバケット名を、s3.region でリージョン名を指定します。
その他に S3 のエンドポイントを指定する s3.endpoint、プロキシを設定するための s3.proxy.url, s3.proxy.useSystemSettings \
があります。
上記の設定例の場合、以下のようにAPIを利用してバックアップを実行した場合、s3://XXX.splout.co.jp/backup2 にコレクション backup_test のバックアップが作られます。
$ curl 'http://localhost:8983/solr/admin/collections?action=BACKUP&name=backup2&collection=backup_test&repository=s3_re\ po'