# 升级 Typesense

在更新 Typesense 版本之前,请确保您已阅读从当前版本到目标版本之间的所有发布说明 (opens new window)

虽然我们努力尽量减少版本间的破坏性变更,但有时仍可能存在影响搜索行为的默认值变更或行为变化。因此我们建议在更新生产环境前,先在测试环境中进行版本升级测试。

我们还建议准备一组测试搜索词和预期结果,用于验证版本间的行为变化。

# Typesense Cloud

如果您在 Typesense Cloud 上运行 Typesense:

  1. 登录后点击顶部导航栏的 "Clusters" 链接
  2. 点击您的 Typesense Cloud 集群仪表板链接
  3. 在左侧面板点击 "Cluster Configuration" 部分
  4. 点击页面顶部的 "Modify" 按钮
  5. 在下一个界面中,您可以选择升级时间窗口,并指定要修改的配置参数
  6. 点击页面底部的 "Schedule Change"

升级完成后,您将在账户页面设置的集群警报邮箱收到通知邮件。

Typesense Cloud 支持以下配置变更:

  • 升级 Typesense Server 版本
  • 降级 Typesense Server 版本(当版本支持时)
  • 升级或降级内存容量
  • 升级或降级 CPU 核心数
  • 启用或禁用高性能磁盘
  • 启用或禁用 GPU 加速
  • 启用高可用性

对于其他类型的配置变更,您需要重新创建一个具有所需配置的新集群并在其中重建索引。

# Typesense Cloud 上的零停机升级

对于启用了高可用性(High Availability)和/或搜索交付网络(Search Delivery Network)的集群:升级将逐个节点进行。因此集群中的其他节点会继续处理流量,您应该会看到一个零停机时间的升级。 了解更多高可用性适用场景 (opens new window)的相关信息。

重要提示

当您拥有启用高可用性的集群时,在触发配置变更前,请确保您已按照此文档所述配置客户端库,包含集群仪表板中显示的所有主机名。

对于单节点非高可用性集群:升级过程中会有约5-60分钟的停机时间,具体取决于数据集大小。建议您启用集群的高可用性功能以避免此类停机。请注意,集群一旦启用高可用性后将无法关闭该功能。

# Typesense 自托管版本

更新Typesense的过程非常简单 - 安装新版本的Typesense并重启服务即可。您不需要重新索引任何文档。 Typesense会自动使用磁盘上的原始数据,并根据需要在新版本上重建内存索引。

如果您使用Docker镜像,只需停止正在运行的容器,然后用新版本执行docker run命令。请确保传递给docker run的参数与之前相同。

如果您通过预编译二进制文件或包管理器安装Typesense,只需下载新版本的Typesense,替换二进制文件,或使用包管理器升级DEB/RPM包并重启进程即可。

# 自托管环境下的零停机升级

如果您在多节点高可用配置中部署了Typesense,可以通过滚动升级实现零停机升级。

操作时,请确保每次只更新一个节点,等待刚更新的节点/health端点返回状态码200后,再继续更新下一个节点。

# 升级顺序

升级过程中,需要确保集群领导者(leader)节点始终使用旧版Typesense。 换句话说,您需要先升级所有跟随者(follower)节点,最后升级领导者节点。 可以通过/debug端点响应中的state字段值来判断节点角色。

State 角色
1 LEADER
4 FOLLOWER
  1. 在领导者节点触发快照创建进行数据备份
  2. 任选一个跟随者节点,停止Typesense服务,通过tar包/DEB/RPM安装器/Docker替换二进制文件(下方提供各安装方式的代码片段)
  3. 重新启动Typesense服务,等待节点以跟随者身份重新加入集群并完成数据同步(/health应返回健康状态)
  4. 对其余_跟随者_节点重复步骤2-3,此时保持领导者节点不受影响
  5. 所有跟随者升级到目标版本后,停止领导者节点的Typesense服务
  6. 其他节点将自动选举出新领导者并继续工作
  7. 在原领导者节点替换二进制文件后重新启动Typesense服务
  8. 该节点将以跟随者身份重新加入集群,升级完成

(注:保持所有代码块/命令/链接/锚点不变,仅翻译说明性文本)

# 通过 Docker 更新

# 更新 RPM 包

# 更新 DEB 包

# 更新 Linux 二进制文件

# 更新 Mac 二进制文件

# 通过 Homebrew 在 macOS 上更新