несоответствие версии pg_repack после обслуживания в облачном sql (GCP)

# #postgresql #google-cloud-platform #google-cloud-sql #maintenance #pg-repack

Вопрос:

У меня есть экземпляр cloud-sql postgres11 в GCP, и я использую pg_repack cron для очистки своей базы данных. Я заметил, что с момента последнего технического обслуживания (7 марта 21 года) я не могу выполнить переупаковку. При попытке вручную запустить репак я столкнулся с этим сообщением об ошибке:

ОШИБКА: ошибка 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, но безуспешно.: — (

Интересно, затронул ли кто-нибудь этот вопрос? Если да, то есть ли какое-либо решение?

Ответ №1:

Я заставил это работать над 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 amp;amp; sudo make install
./bin/pg_repack <flags>
 

Казалось, это сработало, и я не столкнулся ни с какими проблемами. Очевидно, запустите это на виртуальной машине, которая может получить доступ к экземпляру Postgres, так как вам нужен доступ к оболочке даже для выполнения pg_repack.

Комментарии:

1. CloudSQL полностью управляется Google, вы не можете получить доступ к операционной системе для этого.

2. @MarioGranados Вы запускаете это на виртуальной машине, которая может подключаться к экземпляру Postgres. Очевидно, что вам где-то нужна оболочка, чтобы запустить pg_repack или даже получить доступ к базе данных с помощью psql в первую очередь…

Ответ №2:

Обновите расширение:

 ALTER EXTENSION pg_repack UPDATE;
 

Комментарии:

1. не воткнул. Я могу «обновить» только до 1.4.4 dibi=> ALTER extension pg_repack update TO "1.4.6"; ERROR: Extension "pg_repack" and version "1.4.6" not supported by Cloud SQL.

2. Затем программное обеспечение было установлено неправильно.

3. Это открытая проблема на GCP: issuetracker.google.com/issues/180193979