如果您最初使用 Docker 安装了 TimescaleDB,则可以从 Docker 容器内进行升级。这允许您升级到最新的 TimescaleDB 版本,同时保留您的数据。

timescale/timescaledb-ha* 镜像具有运行先前版本所需的文件。补丁版本仅包含错误修复,因此始终应该是安全的。非补丁版本可能极少数情况下需要一些额外的步骤。这些步骤在您要升级到的 TimescaleDB 版本的发行说明中提到。

在升级 Docker 镜像后,您需要为所有使用 TimescaleDB 的数据库运行 ALTER EXTENSION

在 Timescale 上免费试用

Timescale 是一项完全托管的服务,具有自动备份和恢复、具有复制功能的高可用性、无缝扩展和调整大小以及更多功能。您可以免费试用 Timescale 三十天。

免费试用

此页面中的示例使用名为 timescaledb 的 Docker 实例。如果您为 Docker 实例指定了不同的名称,请在发出命令时替换它。

当您启动升级后的 Docker 容器时,您需要能够将新的 Docker 镜像指向包含先前版本数据的位置。为此,您需要确定当前挂载点的位置。当前挂载点因您的容器使用的是卷挂载还是绑定挂载而异。

  1. 通过运行此命令确定您的 Docker 容器使用的挂载类型,该命令将返回 volumebind

    docker inspect timescaledb --format='{{range .Mounts }}{{.Type}}{{end}}'
  2. 使用此命令获取当前名称或挂载路径,并记录下来以便在执行升级时使用。确保您复制了基于您的挂载点类型的正确命令。

要在 Docker 中升级 TimescaleDB,您需要下载升级后的镜像,停止旧容器,并启动指向现有数据的新容器。

  1. 拉取最新的 TimescaleDB 镜像。此命令拉取在 PostgreSQL 17 上运行的 TimescaleDB 2.17.x 的镜像。如果您使用的是另一个 PostgreSQL 版本,请在 TimescaleDB HA Docker Hub 仓库中查找相关的标签。

    docker pull timescale/timescaledb-ha:pg17
  2. 停止旧容器并将其删除

    docker stop timescaledb
    docker rm timescaledb
  3. 启动一个使用升级后的 Docker 镜像的新容器,指向现有的挂载点。确保您复制了基于您的挂载点类型的正确命令。

    对于卷挂载

  4. 使用带有 -X 标志的 psql 连接到升级后的实例

    docker exec -it timescaledb psql -U postgres -X
  5. 在 psql 提示符下,使用 ALTER 命令升级扩展

    ALTER EXTENSION timescaledb UPDATE;
  6. 更新 TimescaleDB Toolkit 扩展。Toolkit 与 TimescaleDB 的 HA Docker 镜像一起打包,并包含额外的超函数,以帮助您进行查询和数据分析

    CREATE EXTENSION IF NOT EXISTS timescaledb_toolkit;
    ALTER EXTENSION timescaledb_toolkit UPDATE;
注意

如果您有多个数据库,则需要分别更新每个数据库。

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页