Skip to content

KB Flooris Ploi - Meilisearch update

Ploi installeert Meilisearch door middel van een script en niet door middel van een package manager. Dit is (zover ik weet) omdat Meilisearch niet beschikbaar is als APT repository.

Meilisearch zelf geeft ook een script om Meilisearch mee te installeren.

Het nadeel hiervan is wel dat deze dus niet meegaan met de normale systeem updates. Het bijwerken is een handmatige actie.

Geschreven voor versie 1.49.0

Deze knowledge base was geschreven voor Meilisearch versie 1.49.0.

Verwacht het niet, maar mogelijk dat nieuwere versies het iets anders doen.

Zie de Meilisearch Docs voor de meest recente instructies indien het niet werkt.

Update stappen

Stap 1 - Dump maken

We gaan eerst een dump maken voordat we iets anders doen, dit is omdat in-place updates nog experimenteel zijn. Hierdoor hebben we een goed veiligheidsnet die we kunnen gebruiken om vanuit een dump te herstellen als de in-place fout gaat of als we een rollback moeten doen.

curl -X POST 'http://localhost:7700/dumps' -H "Authorization: Bearer YOUR_MASTER_KEY"

Dit commando zal het dump process starten als een nieuwe taak. Noteer de taskUid. We hebben deze nodig om de status te pullen.

curl -s 'http://localhost:7700/tasks/<TASK_UID>' -H "Authorization: Bearer YOUR_MASTER_KEY"

Voer dit commando periodiek uit om te zien of de taak al klaar is. Zodra hij klaar is, zou de dump moeten staan in /var/backups/meilisearch/dumps.

Aangepast dump path

De dump path is standaard niet /var/backups/meilisearch/dumps.

De dump path is aangepast met de --dump-dir /var/backups/meilisearch/dumps startup parameter.

Stap 2 - De Meilisearch service stoppen

We kunnen nu de service stoppen. Dit kan met het volgende commando.

sudo systemctl stop meilisearch.service

Hierna willen we checken welke start-up parameters Meilisearch/Ploi heeft ingesteld, we gaan deze nodig hebben tijdens de upgrade. Noteer deze dus even ergens anders.

systemctl cat meilisearch.service

Lek niet de master key

Let op dat standaard Ploi de master key meegeeft als start-up parameter. Dit betekent dat de master key ook in je notitie zal zitten, let dus op dat je deze niet per ongeluk lekt als je hem ergens wegschrijft!

Ik raad aan om een text editor te gebruiken, het daar te dumpen en niet op te slaan.

Zelf vindt ik Kate hiervoor fijn als scratchpad. (MacOS: brew install --cask kate)

Stap 3 - Meilisearch bijwerken

Nu staan we klaar om Meilisearch bij te werken.

curl -L https://install.meilisearch.com | sh
sudo mv ./meilisearch /usr/bin/meilisearch
sudo chmod +x /usr/bin/meilisearch

De binary is nu bijgewerkt, nu moeten we alleen nog de database bijwerken.

Dit kunnen we doen met de --experimental-dumpless-upgrade flag. Voeg dit toe aan de eerder genoteerde start-up parameters.

Vervang de --master-key parameter

Commando's die je uitvoert in je terminal worden weggeschreven naar de history.

Als je de master key meegeeft als start-up parameter en daarna uitvoert, zal deze key lekken naar je Bash history!

Het is sterk aangeraden om dus de --master-key parameter te vervangen met iets anders tijdelijk. Even je toetsenbord een "massage" geven is al prima als tijdelijke key, het gaat er meer om dat we niet de echte master key lekken.

De echte master key zal uiteindelijk weer geset worden door de systemd service, dus maak je er geen zorgen om!

/usr/bin/meilisearch --experimental-dumpless-upgrade --master-key "<RAM-HIER-EVEN-JE-TOETSENBORD-ALS-KEY>" # De rest van je start-up parameters ...

Als het goed is zou hij nu de database versie moeten bijwerken door middel van een UpgradeDatabase task.

Je kan de task ID achterhalen door een GET uit te voeren naar /tasks?types=UpgradeDatabase. Daarna kan je weer de status pullen.

curl -s 'http://localhost:7700/tasks/<TASK_UID>' -H "Authorization: Bearer YOUR_MASTER_KEY"

Zodra die job klaar is en ook gemarkeerd is als success, zou de migratie klaar moeten zijn! Indien de job faalt, dan zal je moeten upgraden door middel van de dump te herstellen.

Stap 4 - Meilisearch service starten

Meilisearch zou nu bijgewerkt moeten zijn, je kan het Meilisearch process die je nog hebt draaien in de terminal stoppen met ctrl + C.

Om nu de Meilisearch service weer normaal te laten draaien in de achtergrond, kan je het volgende command gebruiken:

sudo systemctl start meilisearch.service