# #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