Timescale Cloud:性能、扩展、企业级
自托管产品
MST
主要升级是指将 TimescaleDB 从 X.<次要版本>
更新到 Y.<次要版本>
。次要升级是指将 TimescaleDB 从 <主要版本>.x
更新到 <主要版本>.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 版本。
TimescaleDB 版本 | PostgreSQL 17 | PostgreSQL 16 | PostgreSQL 15 | PostgreSQL 14 | PostgreSQL 13 | PostgreSQL 12 | PostgreSQL 11 | PostgreSQL 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
设置将自动关闭,并显示一条通知。
设置连接字符串
此变量保存了要升级的数据库的连接信息
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 升级前后,TimescaleDB 在你的 PostgreSQL 部署中安装的版本必须相同。
如果你的迁移路径要求,请再次升级 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 版本。
关键词