How-to

Backing up Meilisearch: dumps vs snapshots, explained

by the AdminDex team 7 min read

Meilisearch ships two backup mechanisms: dumps (portable, version-flexible, slower) and snapshots (fast, binary, version-locked). Dumps are for migrations and disaster recovery across servers. Snapshots are for fast hot backups inside the same instance.

The 30-second answer

  • Use a dump when migrating between servers, upgrading Meilisearch versions, or sharing data between environments.
  • Use a snapshot when you want a fast hot backup of the current state (point-in-time recovery), restoring to the same version on the same machine.
  • Run a snapshot daily and a dump weekly. Both are cheap.

Side-by-side comparison

PropertyDumpSnapshot
SpeedSlow on large databases (re-serializes every document)Fast (binary copy of the on-disk state)
PortabilityRestorable to any Meilisearch version ≥ the producing oneSame Meilisearch version only
File sizeSmaller (compressed JSON-ish)Larger (full disk image)
Use caseMigration, version upgrades, sharingHot backup, disaster recovery
Output directorydumps/ (configurable via --dump-dir)snapshots/ (configurable via --snapshot-dir)
Trigger endpointPOST /dumpsPOST /snapshots
ReturnsAsync task envelopeAsync task envelope

Creating a dump

curl -X POST 'https://your-meilisearch/dumps' \
  -H 'Authorization: Bearer YOUR_ADMIN_KEY'

Returns immediately with a task envelope:

{
  "taskUid": 42,
  "indexUid": null,
  "status": "enqueued",
  "type": "dumpCreation",
  "enqueuedAt": "2026-04-11T12:00:00Z"
}

The dump file lands in the configured dumps directory (default ./data.ms/dumps/) with a name like 20260411-120000.dump. Watch the task via GET /tasks/{taskUid} until status flips to succeeded.

Restoring a dump

Restoring isn't an HTTP call — it's a Meilisearch startup flag:

meilisearch --import-dump ./dumps/20260411-120000.dump

The destination Meilisearch must be empty or you must use --ignore-dump-if-db-exists. The restore takes about as long as the original dump. Your indexes, documents, settings, and API keys are all reconstructed.

Creating a snapshot

curl -X POST 'https://your-meilisearch/snapshots' \
  -H 'Authorization: Bearer YOUR_ADMIN_KEY'

Same task-envelope shape as dumps. The snapshot file lands in the snapshots directory as {timestamp}.snapshot.

Restoring a snapshot

Same shape:

meilisearch --import-snapshot ./snapshots/20260411-120000.snapshot

Snapshots are version-locked — the restore must be on the exact same Meilisearch version that produced them. Trying to restore a 1.10 snapshot on a 1.11 server will fail.

Auto-generating snapshots on a schedule

Meilisearch can generate snapshots automatically without any external scheduler. Pass a flag at startup:

meilisearch \
  --schedule-snapshot 86400 \
  --snapshot-dir /var/lib/meilisearch/snapshots

This snapshots once per day (86400 seconds). Older snapshots are NOT auto-deleted — you need a cron job or filesystem rotation policy to keep disk usage in check.

What's actually inside a dump?

A dump file is a tarball containing JSON for each index, the index settings, the API keys, and metadata about the Meilisearch version that produced it. You can inspect it:

tar -tvf ./dumps/20260411-120000.dump
# instances.json
# indexes/movies/documents.jsonl
# indexes/movies/settings.json
# keys.jsonl
# metadata.json

What's inside a snapshot?

A binary copy of Meilisearch's on-disk LMDB database. You can't inspect it without loading it into Meilisearch — that's why it's faster (no serialization) but version-locked (the on-disk format isn't stable across versions).

Backup strategy by team size

Solo developer / small team

  • Snapshot daily (auto-scheduled via --schedule-snapshot 86400)
  • Dump weekly (manually triggered or via cron)
  • Copy both off-server to S3 / Backblaze / wherever you keep other backups
  • Keep the last 7 days of snapshots and the last 4 weeks of dumps

Production at scale

  • Snapshot every 4–6 hours
  • Dump nightly
  • Off-site replication via your existing backup pipeline (rsync, S3 sync, etc.)
  • Test restoration monthly — a backup you've never restored is not a backup

FAQ

Can I take a snapshot while users are searching?

Yes. Snapshots are non-blocking — Meilisearch creates a consistent point-in-time copy without pausing search traffic. Same for dumps, though dumps take longer.

Can I restore a dump from Meilisearch 1.6 onto Meilisearch 1.13?

Yes — dumps are forward-compatible. Restoring an older dump on a newer version is the supported upgrade path. Restoring a newer dump on an older version is NOT supported.

Where do dumps and snapshots get stored if I don't configure a directory?

Inside the Meilisearch data directory: ./data.ms/dumps/ and ./data.ms/snapshots/. If you're running in Docker with a mounted volume, both directories live inside the volume.

Can AdminDex trigger backups?

Yes — AdminDex's instance dashboard has a "Create dump" and "Create snapshot" button that triggers the same async task and shows the result in the live task viewer. No need to remember the curl invocation.

Stop running Meilisearch from a terminal.

AdminDex gives you a visual dashboard for every Meilisearch instance you own — settings, API keys, tasks, and search analytics.

Connect your first instance

Related reading