起因

将服务的一些搜索功能从Elasticsearch迁移到Meilisearch之后,已经过去好久了,抽时间将版本做了一下升级。

发现Meilisearch升级过程基本就是个灾难……本来为了方便就是通过官方的docker方式安装的meilisearch,本来想的是直接docker pull新版本就可以了

结果pull完 docker compose up时候提示

error=Your database version (1.11.3) is incompatible with your current engine version (1.13.3).
To migrate data between Meilisearch versions, please follow our guide on https://www.meilisearch.com/docs/learn/update_and_migration/updating.

需要去看官方的升级文档

最终步骤

  1. curl -X POST 'http://127.0.0.1:7700/dumps' -H 'Authorization: Bearer MASTER密钥' 创建一个dump任务,拿到任务id
  2. curl -X GET 'http://127.0.0.1:7700/tasks/任务id' -H 'Authorization: Bearer MASTER密钥' 根据前一步的任务ID查询dump任务状态,显示完成之后去dumps目录找到导出的文件
  3. 修改原docker-compose.yaml,增加环境变量MEILI_IMPORT_DUMP: /meili_data/dumps/备份文件
  4. 删除原数据目录的data.ms目录(建议提前备份)
  5. 重新启动docker compose

注意事项

对于大规模数据,dump和恢复过程可能会耗时较长,建议在业务低峰期进行升级操作。

不过值得注意的是,官方在版本>=1.12之后提供了一个实验性的特性,支持直接原地升级,无需执行dump和导入操作。期待下一版本能够实现更便捷的在线升级体验。