[失敗]Meilisearchの更新(Systemd版)

そういえばやってなかったな…と思って行いましたが,失敗しました.

公式の構成が当時と変わっていたので,昔構築してそのままの場合であれば,再構築したほうがいいと思います.
Debianでやってるなら普通にdpkgで入れられるのでそれに頼ったほうが楽になるかもしれません.


以下の記事の構成をベースに更新していきます.

構成

NW

内部: 172.16.5.0/24
外部: 10.0.1.9

リバースプロキシ

OS: Ubuntu 22.04 LTS
HTTPServ: apache2
IP: 172.16.5.2

Misskeyサーバ

OS: Ubuntu 22.04 LTS
HTTPServ: Nginx
FQDN: mi.example.net
Misskey: 2023.11.1
configの場所: /home/mk/misskey/.config/
IP: 172.16.5.3

Postgresql

OS: Ubuntu 22.04 LTS
IP:172.16.5.4

Meilisearch

OS: Ubuntu 22.04 LTS
IP: 172.16.5.5
MeiliSearch: v1.5.0
MASTER_KEY: YOUR_MASTER_KEY_VALUE

https://www.meilisearch.com/docs/learn/update_and_migration/updating

そこそこ新しいやつだとスクリプト更新できるそうです.
今回はスクリプトを使用できるものだったので,試してみました.

https://github.com/meilisearch/meilisearch-migration

更新前に実施

バージョン確認

curl -X GET ‘http://172.16.5.5:7700/version’ -H “Authorization: Bearer YOUR_MASTER_KEY_VALUE”

レスポンスのpkgVersionが0.22以上であれば更新スクリプトが使用可能です.

{“commitSha”:”unknown”,”commitDate”:”unknown”,”pkgVersion”:”1.5.0″}

ダンプの作成(任意)

スクリプトで自動でやってくれるのでやらなくても良いが,スクリプトが不安定なので念の為やっておいた方が良いです.

curl -X POST ‘http://172.16.5.5:7700/dumps’ -H “Authorization: Bearer YOUR_MASTER_KEY_VALUE”

一応ここを参考にダンプ作成するとよいです.

https://www.meilisearch.com/docs/learn/advanced/dumps#creating-a-dump-in-a-self-hosted-instance

↓返り値↓

{“taskUid”:17516232,”indexUid”:null,”status”:”enqueued”,”type”:”dumpCreation”,”enqueuedAt”:”2024-09-24T13:15:04.151487832Z”}

まあまあ時間かかります.

taskUidをパラメータに付与することで,進捗状態を確認できます.

curl -X GET ‘http://172.16.5.5/tasks/17516232’ -H “Authorization: Bearer YOUR_MASTER_KEY_VALUE”

完了したらダンプファイルがあるか確認

ll /var/lib/meilisearch/dumps/

マスターキーを環境変数へ

MeiliSearch更新

自動更新が推奨されているので,自動更新します

https://github.com/meilisearch/meilisearch-migration

自動更新スクリプトをダウンロード

curl https://raw.githubusercontent.com/meilisearch/meilisearch-migration/main/scripts/update_meilisearch_version.sh --output migration.sh --location

localhostや127.0.0.1でMeiliSearchをListenしていない場合,エラーで実行できなくなるため,スクリプトを修正します
ここでは例示として172.16.5.5を使用しています.

sed -i 's/localhost/172.16.5.5/g' migration.sh

また,dumpsのファイルを自身で定義している場合,変更する必要があります.
ここで扱う環境では/var/lib/meilisearch/dumps/に作成されているため,ここに配置するよう変更します.
(これハードコードしないでよ…)

sed -i 's|/var/opt/meilisearch/dumps/|/var/lib/meilisearch/dumps/|g' migration.sh

また,バイナリの設置先が異なる場合がある.
今のバイナリの位置を確認して,スクリプトを修正する

sed -i 's|cp meilisearch /usr/bin/meilisearch|cp meilisearch /usr/local/bin/meilisearch|g' migration.sh

更新しますわよ~
更新時にコケてほとんど手作業になってしまったので,この辺も残しておきたい

$ MEILISEARCH_MASTER_KEY=YOUR_MASTER_KEY_VALUE bash migration.sh v1.10.2
success: Starting version update of Meilisearch.
success: Requested Meilisearch version: v1.10.2.
success: Current running Meilisearch version: 1.5.0.
info: Creation of a dump in case new version does not have compatibility with the current Meilisearch.
info: Creating dump with task uid: 17517835.
pending: Meilisearch is still creating the dump with task uid: 17517835.
pending: Meilisearch is still creating the dump with task uid: 17517835.
......
20240925-130941394
success: Meilisearch finished creating the dump: 20240925-130941394.
info: Downloading Meilisearch version v1.10.2.
success: Successfully downloaded Meilisearch version v1.10.2.
info: Stopping Meilisearch Service to update the version.
info: Keep a temporary copy of previous Meilisearch.
info: Keep a temporary copy of previous data.ms.
info: Delete current Meilisearch's data.ms
info: Update Meilisearch version.
info: Run local v1.10.2 binary importing the dump and creating the new data.ms.
info: Check if local v1.10.2 started correctly.
success: Meilisearch started successfully and is importing the dump.
---ここからシェルスクリプトからの推測---
success: Kill local Meilisearch process.
info: Meilisearch v1.10.2 is starting.
---ここで止まる場合がある---
success: Meilisearch v1.10.2 service started succesfully.

Migration complete. Meilisearch is now in version v1.10.2
Meilisearch service up and running in version v1.10.2

備考: ScopeをGlobalにしている場合,結構処理に時間がかかります.
ディスク空き容量にも気をつけるとよいです

rootで実行した場合,途中で停止する.
data.msの権限が誤っているので修正する

chown -R meilisearch:meilisearch /var/lib/meilisearch/data.ms

動く場合があるかもしれないですが,私の環境の場合中途半端に動作しなくなりました.

わからない上にストレージの余裕がないため,再構築で対処しました.

参考程度に.

Related Posts:

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です