
У нас есть сервер PostgreSQL, который мы только что обновили с 9.3 до 9.5. На всех наших машинах установлен клиентский пакет 9.3, и в результате он pg_dump
больше не работает, так как несовместим с предыдущими версиями.
Очевидно, нам нужно обновить клиентское программное обеспечение — мой вопрос: на какую версию нам следует обновиться? Сначала я думал, что нам следует перейти на 9.6, которая является последним релизом в серии 9.*, чтобы не делать этого в будущем, если мы снова обновим сервер. Но если так, то почему бы не перейти на 10 или 11? Есть ли какие-либо недостатки в таком смешивании основных версий? Считаются ли клиенты 10 и 11 стабильными?
решение1
Я бы посоветовал обновить клиент, чтобы он оставался совместимым с той же версией, что и ваш сервер (например, pg_dump v9.5.x работает с серверами postgres 9.5.x). Вы можете использовать версию 10 для pg_dump на версии 9.5.x, но тогда вам придется быть готовым иметь дело с любыми ошибками, которые могут возникнуть из-за ежедневной работы.
На первый взгляд, даже несмотря на то, что изменения, произошедшие с командой pg_dump, представляли собой новые аргументы команды (показаны ниже), я сомневаюсь, что тестирование было столь же строгим для различных вариантов резервного копирования с использованием клиентов на будущих версиях по сравнению со старыми версиями сервера postgresql.
- 9.6 представил
--strict-names argument
- 10 представил
--no-blobs
--no-publications
--no-subscriptions
--no-sync
аргументы
Поскольку резервное копирование не всегда должно выполняться локально на самом сервере, вы всегда можете использовать разные машины для этой цели (чтобы удаленно запускать резервное копирование).
В зависимости от операционной системы и менеджера пакетов, более новая версия pg_dump, вероятно, уже находится на сервере, как в /usr/lib/postgresql/ваша_версия_сервера/bin/, вы всегда можете создать символическую ссылку на новую версию следующим образом (предполагается, что это система Debian):
sudo ln -s --force /usr/lib/postgresql/9.5/bin/pg_dump /usr/bin/pg_dump