主要版本升级是指您从 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 客户端工具。 这包括
psql
和pg_dump
。 - 阅读您要升级到的 TimescaleDB 版本的 发行说明。
- 执行数据库备份。 虽然 Timescale 升级是就地执行的,但升级是一项侵入性操作。 始终确保您手头有备份,并在发生灾难时备份是可读的。
查看自托管数据库实例中运行的 PostgreSQL 和 TimescaleDB 版本
设置您的连接字符串
此变量保存要升级的数据库的连接信息
export SOURCE="postgres://<user>:<password>@<source host>:<source port>/<db_name>"检索您正在运行的 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)检索您正在运行的 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,您需要
- 将 TimescaleDB 升级到 2.10
- 将 PostgreSQL 升级到 15
- 将 TimescaleDB 升级到 2.17.2。
在升级 TimescaleDB 之前,您可能需要 升级到最新的 PostgreSQL 版本。
版本号 | PostgreSQL 17 | PostgreSQL 16 | PostgreSQL 15 | PostgreSQL 14 | PostgreSQL 13 | PostgreSQL 12 | PostgreSQL 11 | PostgreSQL 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
设置将自动关闭,并显示通知。
设置您的连接字符串
此变量保存要升级的数据库的连接信息
export SOURCE="postgres://<user>:<password>@<source host>:<source port>/<db_name>"连接到您的 PostgreSQL 部署
psql -d $SOURCE将您的策略统计信息设置保存到
.csv
文件COPY (SELECT * FROM timescaledb_information.policy_stats)TO policy_stats.csv csv header将您的连续聚合设置保存到
.csv
文件COPY (SELECT * FROM timescaledb_information.continuous_aggregate_stats)TO continuous_aggregate_stats.csv csv header将您的删除块策略保存到
.csv
文件COPY (SELECT * FROM timescaledb_information.drop_chunks_policies)TO drop_chunk_policies.csv csv header将您的重新排序策略保存到
.csv
文件COPY (SELECT * FROM timescaledb_information.reorder_policies)TO reorder_policies.csv csv header退出 psql 会话
\q;
您不能同时升级 TimescaleDB 和 PostgreSQL。 您需要按照以下步骤分别升级每个产品
升级 TimescaleDB
psql -X -d $SOURCE -c "ALTER EXTENSION timescaledb UPDATE TO '<version number>';"如果您的迁移路径指示需要,请升级 PostgreSQL
按照 升级 PostgreSQL 中的步骤操作。 在 PostgreSQL 升级之前和之后,安装在 PostgreSQL 部署中的 TimescaleDB 版本必须相同。
如果您的迁移路径指示需要,请再次升级 TimescaleDB
psql -X -d $SOURCE -c "ALTER EXTENSION timescaledb UPDATE TO '<version number>';"检查您是否已升级到正确版本的 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 容器升级 部分。
验证连续聚合策略作业
SELECT * FROM timescaledb_information.jobsWHERE application_name LIKE 'Refresh Continuous%';Postgres 返回类似如下内容
-[ RECORD 1 ]-----+--------------------------------------------------job_id | 1001application_name | Refresh Continuous Aggregate Policy [1001]schedule_interval | 01:00:00max_runtime | 00:00:00max_retries | -1retry_period | 01:00:00proc_schema | _timescaledb_internalproc_name | policy_refresh_continuous_aggregateowner | postgresscheduled | tconfig | {"start_offset": "20 days", "end_offset": "10days", "mat_hypertable_id": 2}next_start | 2020-10-02 12:38:07.014042-04hypertable_schema | _timescaledb_internalhypertable_name | _materialized_hypertable_2验证您在升级之前导出的每种策略类型的信息。
对于连续聚合,请注意
config
信息,以验证所有设置是否已正确转换。验证所有作业都已按预期计划和运行
SELECT * FROM timescaledb_information.job_statsWHERE job_id = 1001;Postgres 返回类似如下内容
-[ RECORD 1 ]----------+------------------------------hypertable_schema | _timescaledb_internalhypertable_name | _materialized_hypertable_2job_id | 1001last_run_started_at | 2020-10-02 09:38:06.871953-04last_successful_finish | 2020-10-02 09:38:06.932675-04last_run_status | Successjob_status | Scheduledlast_run_duration | 00:00:00.060722next_scheduled_run | 2020-10-02 10:38:06.932675-04total_runs | 1total_successes | 1total_failures | 0
您正在运行一个全新的 TimescaleDB 版本。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。