主要版本升级是指您从 TimescaleDB X.<minor version> 更新到 Y.<minor version>。 次要版本升级是指您从 TimescaleDB <major version>.x 更新到 TimescaleDB <major version>.y。 您可以在同一 PostgreSQL 实例中的不同数据库上运行不同版本的 TimescaleDB。 此过程使用 PostgreSQL 的 ALTER EXTENSION 函数在不同数据库上独立升级 TimescaleDB。

当您执行主要版本升级时,新的策略将根据您当前的配置自动配置。 为了在升级后验证您的策略,在此升级过程中,您需要在升级前导出您的策略设置。

在 Timescale 上免费试用

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

免费试用

本页向您展示如何执行主要版本升级。 对于次要版本升级,请参阅 将 TimescaleDB 升级到次要版本

  • 在您的迁移机器上安装 PostgreSQL 客户端工具。 这包括 psqlpg_dump
  • 阅读您要升级到的 TimescaleDB 版本的 发行说明
  • 执行数据库备份。 虽然 Timescale 升级是就地执行的,但升级是一项侵入性操作。 始终确保您手头有备份,并在发生灾难时备份是可读的。

查看自托管数据库实例中运行的 PostgreSQL 和 TimescaleDB 版本

  1. 设置您的连接字符串

    此变量保存要升级的数据库的连接信息

    export SOURCE="postgres://<user>:<password>@<source host>:<source port>/<db_name>"
  2. 检索您正在运行的 PostgreSQL 版本

    psql -X -d $SOURCE -c "SELECT version();"

    PostgreSQL 返回类似如下内容

    -----------------------------------------------------------------------------------------------------------------------------------------
    PostgreSQL 17.2 (Ubuntu 17.2-1.pgdg22.04+1) on aarch64-unknown-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
    (1 row)
  3. 检索您正在运行的 TimescaleDB 版本

    psql -X -d $SOURCE -c "\dx timescaledb;"

    PostgreSQL 返回类似如下内容

    Name | Version | Schema | Description
    -------------+---------+------------+---------------------------------------------------------------------
    timescaledb | 2.17.2 | public | Enables scalable inserts and complex queries for time-series data
    (1 row)

最佳实践是始终使用最新版本的 TimescaleDB。 订阅我们在 GitHub 上的发布或使用 Timescale Cloud,始终轻松获取最新更新。

对照您当前运行的 TimescaleDB 和 PostgreSQL 版本以及您要更新到的版本,检查以下支持矩阵,然后选择您的升级路径。

例如,要从 PostgreSQL 12 上的 TimescaleDB 1.7 升级到 PostgreSQL 15 上的 TimescaleDB 2.17.2,您需要

  1. 将 TimescaleDB 升级到 2.10
  2. 将 PostgreSQL 升级到 15
  3. 将 TimescaleDB 升级到 2.17.2。

在升级 TimescaleDB 之前,您可能需要 升级到最新的 PostgreSQL 版本

版本号PostgreSQL 17PostgreSQL 16PostgreSQL 15PostgreSQL 14PostgreSQL 13PostgreSQL 12PostgreSQL 11PostgreSQL 10
TimescaleDB
2.17.x
TimescaleDB
2.16.x
TimescaleDB
2.15.x
TimescaleDB
2.14.x
TimescaleDB
2.13.x
TimescaleDB
2.12.x
TimescaleDB
2.10.x
TimescaleDB
2.5 - 2.9
TimescaleDB
2.4
TimescaleDB
2.1 - 2.3
TimescaleDB
2.0
TimescaleDB
1.7

我们建议不要将 TimescaleDB 与 PostgreSQL 17.1、16.5、15.9、14.14、13.17、12.21 一起使用。
这些次要版本 引入了破坏性的二进制接口更改,一旦被识别出来,该更改在随后的 PostgreSQL 次要版本 17.2、16.6、15.10、14.15、13.18 和 12.22 中被撤销。 当您从源代码构建时,最佳实践是使用 PostgreSQL 17.2、16.6 等更高版本进行构建。 Timescale Cloud 以及 Linux、Windows、MacOS、Docker 和 Kubernetes 的平台软件包的用户不受影响。

当您从 TimescaleDB 1 升级到 TimescaleDB 2 时,脚本会自动配置更新后的功能,以使其在新版本中按预期工作。 但是,并非所有内容都与以前完全相同。

在开始此主要版本升级之前,请检查数据库日志中是否存在与 TimescaleDB 1 中可能发生的失败的保留策略相关的错误。 您可以完全删除失败的策略,或者更新它们以使其与您现有的连续聚合兼容。

如果在执行升级时存在不兼容的保留策略,则 ignore_invalidation_older_than 设置将自动关闭,并显示通知。

  1. 设置您的连接字符串

    此变量保存要升级的数据库的连接信息

    export SOURCE="postgres://<user>:<password>@<source host>:<source port>/<db_name>"
  2. 连接到您的 PostgreSQL 部署

    psql -d $SOURCE
  3. 将您的策略统计信息设置保存到 .csv 文件

    COPY (SELECT * FROM timescaledb_information.policy_stats)
    TO policy_stats.csv csv header
  4. 将您的连续聚合设置保存到 .csv 文件

    COPY (SELECT * FROM timescaledb_information.continuous_aggregate_stats)
    TO continuous_aggregate_stats.csv csv header
  5. 将您的删除块策略保存到 .csv 文件

    COPY (SELECT * FROM timescaledb_information.drop_chunks_policies)
    TO drop_chunk_policies.csv csv header
  6. 将您的重新排序策略保存到 .csv 文件

    COPY (SELECT * FROM timescaledb_information.reorder_policies)
    TO reorder_policies.csv csv header
  7. 退出 psql 会话

    \q;

您不能同时升级 TimescaleDB 和 PostgreSQL。 您需要按照以下步骤分别升级每个产品

  1. 升级 TimescaleDB

    psql -X -d $SOURCE -c "ALTER EXTENSION timescaledb UPDATE TO '<version number>';"
  2. 如果您的迁移路径指示需要,请升级 PostgreSQL

    按照 升级 PostgreSQL 中的步骤操作。 在 PostgreSQL 升级之前和之后,安装在 PostgreSQL 部署中的 TimescaleDB 版本必须相同。

  3. 如果您的迁移路径指示需要,请再次升级 TimescaleDB

    psql -X -d $SOURCE -c "ALTER EXTENSION timescaledb UPDATE TO '<version number>';"
  4. 检查您是否已升级到正确版本的 TimescaleDB

    psql -X -d $SOURCE -c "\dx timescaledb;"

    PostgreSQL 返回类似如下内容

    Name | Version | Schema | Description
    -------------+---------+--------+---------------------------------------------------------------------------------------
    timescaledb | 2.17.2 | public | Enables scalable inserts and complex queries for time-series data (Community Edition)
注意

要在 Docker 容器中升级 TimescaleDB,请参阅 Docker 容器升级 部分。

  1. 验证连续聚合策略作业

    SELECT * FROM timescaledb_information.jobs
    WHERE application_name LIKE 'Refresh Continuous%';

    Postgres 返回类似如下内容

    -[ RECORD 1 ]-----+--------------------------------------------------
    job_id | 1001
    application_name | Refresh Continuous Aggregate Policy [1001]
    schedule_interval | 01:00:00
    max_runtime | 00:00:00
    max_retries | -1
    retry_period | 01:00:00
    proc_schema | _timescaledb_internal
    proc_name | policy_refresh_continuous_aggregate
    owner | postgres
    scheduled | t
    config | {"start_offset": "20 days", "end_offset": "10
    days", "mat_hypertable_id": 2}
    next_start | 2020-10-02 12:38:07.014042-04
    hypertable_schema | _timescaledb_internal
    hypertable_name | _materialized_hypertable_2
  2. 验证您在升级之前导出的每种策略类型的信息。

    对于连续聚合,请注意 config 信息,以验证所有设置是否已正确转换。

  3. 验证所有作业都已按预期计划和运行

    SELECT * FROM timescaledb_information.job_stats
    WHERE job_id = 1001;

    Postgres 返回类似如下内容

    -[ RECORD 1 ]----------+------------------------------
    hypertable_schema | _timescaledb_internal
    hypertable_name | _materialized_hypertable_2
    job_id | 1001
    last_run_started_at | 2020-10-02 09:38:06.871953-04
    last_successful_finish | 2020-10-02 09:38:06.932675-04
    last_run_status | Success
    job_status | Scheduled
    last_run_duration | 00:00:00.060722
    next_scheduled_run | 2020-10-02 10:38:06.932675-04
    total_runs | 1
    total_successes | 1
    total_failures | 0

您正在运行一个全新的 TimescaleDB 版本。

关键词

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