そういえばやってなかったな…と思って行いましたが,失敗しました.
公式の構成が当時と変わっていたので,昔構築してそのままの場合であれば,再構築したほうがいいと思います.
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
動く場合があるかもしれないですが,私の環境の場合中途半端に動作しなくなりました.
わからない上にストレージの余裕がないため,再構築で対処しました.
参考程度に.