在云 sql (GCP) 上维护后 pg_repack 版本不匹配

问题描述

我在 GCP 上有一个 cloud-sql postgres11 实例,并使用 pg_repack cron 来清理我的数据库。我注意到自从上次维护(3 月 21 日 7 日)以来,我无法执行重新打包。 当尝试手动运行重新打包时,我遇到了以下错误消息:

错误:pg_repack 失败,错误:程序“pg_repack 1.4.4”与数据库库“pg_repack 1.4.6”不匹配

做了以下检查:

  • 加载的 pg_repack 版本是什么:
                                       List of installed extensions
        Name        | Version |   Schema   |                         Description
--------------------+---------+------------+--------------------------------------------------------------
 pg_repack          | 1.4.4   | public     | Reorganize tables in PostgreSQL databases with minimal locks
 pg_stat_statements | 1.6     | public     | track execution statistics of all SQL statements executed
 plpgsql            | 1.0     | pg_catalog | PL/pgSQL procedural language
(3 rows)
  • pg_repack 的可用版本是什么:
   name    | version | installed | superuser | relocatable | schema | requires |                           comment
-----------+---------+-----------+-----------+-------------+--------+----------+--------------------------------------------------------------
 pg_repack | 1.4.4   | t         | t         | f           |        |          | Reorganize tables in PostgreSQL databases with minimal locks
(1 row)

我将 pg_repack 升级到 1.4.6 版,但没有帮助,我也尝试删除并创建扩展,或者重新启动 sql 实例,但没有成功。 :-(

我想知道是否有人提出过这个问题。如果是,有什么解决办法吗?

解决方法

我在 Debian 10 上使用了一个非常卡顿的解决方法。基本上我构建了一个 1.4.6 的副本,版本检查被注释掉,并成功地使用 -k 标志运行它:

sudo apt install build-essential postgresql-server-dev-13 libssl-dev zlib1g-dev libreadline-dev
git clone https://github.com/yunyu/pg_repack.git # My fork with the version checks commented out
cd pg_repack
make && sudo make install
./bin/pg_repack <flags>

它似乎有效,我没有遇到任何问题。显然,在可以访问 Postgres 实例的 VM 上运行它,因为您甚至需要 shell 访问权限才能执行 pg_repack。

,

升级扩展:

ALTER EXTENSION pg_repack UPDATE;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...