- Подготовка к установке: что нужно знать
- Обновление PostgreSQL 14.1 до PostgreSQL 14.3 на сервере Ubuntu
Обновление версии PostgreSQL – это важный этап в жизненном цикле базы данных, и разные сценарии подходят для разных ситуаций.
В PostgreSQL существует несколько методов обновления, каждый из которых имеет свои особенности и преимущества.
- установка пакетов с новой версией PostgreSQL,
- использование pg_dumpall,
- использование pg_upgrade,
- обновление через логическую репликацию.
Выбор конкретного метода зависит от текущей ситуации, требований ко времени простоя базы данных и версии PostgreSQL. Важно учитывать особенности каждого метода и применять их в соответствии с контекстом вашей системы.
Подготовка к установке: что нужно знать
Прежде чем приступить к обновлению PostgreSQL, необходимо учесть различия между версиями этой системы управления базами данных.
Номера версий в PostgreSQL представлены двумя цифрами, например, 10.1, где первая цифра обозначает основную версию (10), а вторая – номер корректирующего релиза (1).
Важно! До версии PostgreSQL 10 номера имели три цифры, как, например, 9.6.3, где 9.6 – номер основного выпуска, а 3 – номер дополнительной версии.
Эта структурная разница в номерах версий играет важную роль при выборе метода обновления. В случае корректирующих релизов, где изменения минимальны и не затрагивают формат данных, можно провести обновление с небольшими затратами ресурсов. Для этого достаточно выключить сервер, заменить исполняемые файлы и перезапустить сервер.
В случае основных версий PostgreSQL формат данных может измениться, что усложняет процесс обновления. В таких ситуациях простого изменения номера версии недостаточно. Приходится либо переносить данные, либо использовать инструменты, такие как pg_upgrade, либо воспользоваться логической репликацией.
Таким образом, перед началом процесса обновления важно внимательно изучить особенности вашей конкретной версии PostgreSQL и выбрать подходящий метод.
Обновление PostgreSQL 14.1 до PostgreSQL 14.3 на сервере Ubuntu
Важно! Не забудьте создать резервную копию данных перед началом процесса обновления для обеспечения безопасности и возможности восстановления в случае непредвиденных ситуаций.
Способ 1. Установка пакетов с новой версией PostgreSQL
Этот метод чаще всего используется для минорных обновлений и предполагает установку пакетов с новой версией PostgreSQL. Однако перед выполнением этого шага рекомендуется изучить release notes, чтобы удостовериться, что обновление не приведет к конфликтам или проблемам совместимости.
Обновление PostgreSQL на Ubuntu – процесс, который можно выполнить всего лишь с помощью нескольких команд. Но он требует внимательности и определенной последовательности шагов.
По умолчанию PostgreSQL входит в репозиторий Ubuntu, а значит, это облегчит вам и установку, и обновление БД.
Для перехода на последнюю версию PostgreSQL выполните следующие шаги:
- Обновите текущие пакеты с использованием команды:
sudo apt-get upgrad
Важно! Debian и Ubuntu предоставляют только одну версию PostgreSQL для каждого выпуска операционной системы. Если вам нужна другая версия, рекомендуется воспользоваться пакетами от PGDG (PostgreSQL Global Development Group).
- Добавьте репозиторий PGDG для установки других версий PostgreSQL:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
- Импортируйте ключ подписи:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add –
- Переименуйте новый кластер PostgreSQL, чтобы избежать конфликтов имен при обновлении:
sudo pg_renamecluster 14.3 main main_pristine
- Обновите старый кластер
sudo pg_upgradecluster 14.1 main
- Запустите сервис PostgreSQL:
sudo service postgresql start
- Проверьте список кластеров и удостоверьтесь, что новый кластер работает:
pg_lsclusters
- Наконец, удалите старый кластер:
sudo pg_dropcluster 14.1 main
Важно! Замените номера версий в командах на актуальные значения, например, вместо «14.1» и «14.3» пропишите актуальные номера версий PostgreSQL.
Способ 2. Обновление через pg_dumpall
Для обновления можно воспользоваться стандартной программой «pg_dumpall», которая создает резервные копии всех баз данных. Этот метод обеспечивает надежное восстановление, но может привести к длительному простою базы данных в процессе обновления.
Обновление осуществляется путем выгрузки данных из текущей основной версии и последующей загрузки их в новую версию. Прежде чем начать процесс выгрузки данных, необходимо убедиться, что в настоящий момент времени в базе данных не происходят никакие изменения. Так вы сможете быть уверены, что ничего не упустили при создании конечного дампа.
- Для создания дампа данных и сохранения его в файл пропишите команду:
pg_dumpall > output_file
- Далее остановите сервер:
pg_ctl stop
- Измените имя старого каталога, чтобы предотвратить возможные конфликты имен:
mv /usr/local/pgsql /usr/local/pgsql.old
Хотя удаление старого каталога возможно, более предпочтительным будет его переименование. Это оставит возможность его восстановления.
Замените «/usr/local/pgsql
» на путь к вашему каталогу.
- Установить новую версию PostgreSQL из исходного кода.
- Создайте новый кластер
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
- Перенесите все изменения в файлы «pg_hba.conf» и «postgresql.conf».
- Запустите сервер базы данных:
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
- Восстановите данные из резервной копии:
/usr/local/pgsql/bin/psql -d postgres -f output_file
- Один из существенных недостатков этого метода – продолжительное выключение сервера. Для сокращения времени простоя можно установить новый сервер в другой каталог и запустить старый и новый серверы на разных портах, используя команду:
pg_dumpall -p 1111 | psql -d postgres -p 2222
Где 1111 и 2222 – номера портов, на которых запущены серверы.
Способ 3. Обновление с помощью программы pg_upgrade
Важно! Этот метод требует от вас особого внимания. Необходимо следить за журналами и выполнить дополнительные шаги после завершения основного процесса.
Для обновления PostgreSQL без необходимости в выгрузке и загрузке данных рекомендуется воспользоваться программой pg_upgrade. Она предоставляет более быстрый и удобный метод обновления.
Эта программа пересоздает системные таблицы, учитывая изменения в последних версиях PostgreSQL, сохраняя при этом старые файлы данных. Кроме того, pg_upgrade проводит проверку совместимости между кластерами, что обеспечивает более плавный процесс обновления.
Программа pg_upgrade особенно полезна, например, при обновлении с PostgreSQL 8.4.X до текущей версии СУБД.
- Переместите старый кластер.
Если каталог не был привязан к старому релизу PostgreSQL (например, /usr/local/pgsql), его необходимо переименовать, чтобы избежать конфликта при обновлении.
Команда для переименования при выключенном сервере выглядит следующим образом:
mv /usr/local/pgsql /usr/local/pgsql.old
- Настройте «configure» так, чтобы флаги были совместимы с конфигурацией старого кластера.
- Установите новые исполняемые файлы, введя:
make prefix=/usr/local/pgsql.new install
- Используйте «initdb» для создания нового кластера. Перед этим обязательно удостоверьтесь, что флаги совместимы с флагами старого кластера.
- Установите общие объектные файлы расширения. Если доступны обновления, pg_upgrade автоматически создаст скрипт для их установки.
- Переместите файлы полнотекстового поиска.
- Настройте аутентификацию «peer» в «pg_hba.conf», так как pg_upgrade будет несколько раз подключаться к старому и новому хостам. Убедитесь в том, что старый и новый серверы остановлены.
- Убедитесь в том, что старый и новый серверы остановлены:
pg_ctl -D /opt/PostgreSQL/8.4 stop
pg_ctl -D /opt/PostgreSQL/14 stop
- Запустите pg_upgrade от имени нового сервера. Но сначала выполните его проверку с помощью команды:
pg_upgrade –check
Так вы получите перечень корректировок, которые могут потребоваться после обновления.
- Запустите сервер.
Использование pg_upgrade обеспечивает эффективное обновление PostgreSQL с минимальным временем простоя и без необходимости выгрузки и загрузки данных.
Способ 4. Обновление на основе логической репликации
Для снижения времени простоя базы данных можно использовать логическую репликацию, которая стала доступной начиная с версии PostgreSQL 10.0. Этот метод основан на модели публикаций и подписок, где создается снимок базы данных, подлежащий публикации, и передается подписчику.
Логическая репликация использует репликационные идентификаторы, часто выступающие в роли первичных ключей в базе данных.
Основное преимущество логической репликации заключается в минимальном времени простоя, что делает этот метод привлекательным для сценариев, где сокращение времени простоя базы данных является критичным. Резервный сервер может быть размещен на том же хосте или на другом, и после синхронизации становятся доступными различные опции управления, такие как смена основного сервера.
В документации PostgreSQL выделяется сценарий репликации между различными версиями PostgreSQL. Такие факторы, как минимальное время простоя и гибкость управления, делают логическую репликацию мощным инструментом в арсенале администраторов баз данных PostgreSQL.
Заключение
Таким образом, эффективное обновление версии PostgreSQL представляет собой ключевую задачу для поддержания стабильной и безопасной работы баз данных. В нашем руководстве мы рассмотрели различные методы апдейта PostgreSQL, включая использование pg_dumpall, программу pg_upgrade, а также логическую репликацию.
Каждый из этих методов имеет свои преимущества и особенности, позволяя администраторам выбрать оптимальный способ обновления в зависимости от конкретных требований и условий их системы. Благодаря этим разнообразным методам, апдейт PostgreSQL становится гибким и индивидуально настраиваемым процессом, обеспечивая минимальный downtime и безопасное внедрение новых возможностей в СУБД.