如果您最初使用 Docker 安装了 TimescaleDB,则可以从 Docker 容器内进行升级。这允许您升级到最新的 TimescaleDB 版本,同时保留您的数据。
timescale/timescaledb-ha*
镜像具有运行先前版本所需的文件。补丁版本仅包含错误修复,因此始终应该是安全的。非补丁版本可能极少数情况下需要一些额外的步骤。这些步骤在您要升级到的 TimescaleDB 版本的发行说明中提到。
在升级 Docker 镜像后,您需要为所有使用 TimescaleDB 的数据库运行 ALTER EXTENSION
。
在 Timescale 上免费试用
Timescale 是一项完全托管的服务,具有自动备份和恢复、具有复制功能的高可用性、无缝扩展和调整大小以及更多功能。您可以免费试用 Timescale 三十天。
此页面中的示例使用名为 timescaledb
的 Docker 实例。如果您为 Docker 实例指定了不同的名称,请在发出命令时替换它。
当您启动升级后的 Docker 容器时,您需要能够将新的 Docker 镜像指向包含先前版本数据的位置。为此,您需要确定当前挂载点的位置。当前挂载点因您的容器使用的是卷挂载还是绑定挂载而异。
通过运行此命令确定您的 Docker 容器使用的挂载类型,该命令将返回
volume
或bind
docker inspect timescaledb --format='{{range .Mounts }}{{.Type}}{{end}}'使用此命令获取当前名称或挂载路径,并记录下来以便在执行升级时使用。确保您复制了基于您的挂载点类型的正确命令。
要在 Docker 中升级 TimescaleDB,您需要下载升级后的镜像,停止旧容器,并启动指向现有数据的新容器。
拉取最新的 TimescaleDB 镜像。此命令拉取在 PostgreSQL 17 上运行的 TimescaleDB 2.17.x 的镜像。如果您使用的是另一个 PostgreSQL 版本,请在 TimescaleDB HA Docker Hub 仓库中查找相关的标签。
docker pull timescale/timescaledb-ha:pg17停止旧容器并将其删除
docker stop timescaledbdocker rm timescaledb启动一个使用升级后的 Docker 镜像的新容器,指向现有的挂载点。确保您复制了基于您的挂载点类型的正确命令。
对于卷挂载
使用带有
-X
标志的psql
连接到升级后的实例docker exec -it timescaledb psql -U postgres -X在 psql 提示符下,使用
ALTER
命令升级扩展ALTER EXTENSION timescaledb UPDATE;更新 TimescaleDB Toolkit 扩展。Toolkit 与 TimescaleDB 的 HA Docker 镜像一起打包,并包含额外的超函数,以帮助您进行查询和数据分析
CREATE EXTENSION IF NOT EXISTS timescaledb_toolkit;ALTER EXTENSION timescaledb_toolkit UPDATE;
注意
如果您有多个数据库,则需要分别更新每个数据库。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。