Timescale Cloud:性能、扩展、企业级

自托管产品

MST

主要升级是指将 TimescaleDB 从 X.<次要版本> 更新到 Y.<次要版本>。次要升级是指将 TimescaleDB 从 <主要版本>.x 更新到 <主要版本>.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 版本

TimescaleDB 版本PostgreSQL 17PostgreSQL 16PostgreSQL 15PostgreSQL 14PostgreSQL 13PostgreSQL 12PostgreSQL 11PostgreSQL 10
2.20.x
2.19.x
2.18.x
2.17.x
2.16.x
2.15.x
2.14.x
2.13.x
2.12.x
2.10.x
2.5 - 2.9
2.4
2.1 - 2.3
2.0
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 升级前后,TimescaleDB 在你的 PostgreSQL 部署中安装的版本必须相同。

  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 上编辑此页面