Как обновить postgresql ubuntu

Обновлено: 17.05.2024

Odoo v12 поддерживает PostgreSQL 9.5 и выше. Так что, если вы используете сервер Odoo в одной из более старых версий и хотите обновить PostgreSQL, этот блог поможет вам.

Когда вам нужно обновить версию PostgreSQL в Ubuntu, это довольно просто. Это работает для обновления любой версии Postgres 9.1, 9.2, 9.3, 9.4, 9.5 и 9.6.

В этом руководстве мы собираемся обновить сервер PostgreSQL на Ubuntu. Неважно, с какой версии вы обновляетесь или до какой. Вы можете сделать это с помощью Postgres 9.1, 9.2, 9.3, 9.4, 9.5 и 9.6 или любой другой версии, которая является самой последней. В этом примере я обновляю Postgres 9.3 до Postgres 9.5, но все, что вам нужно сделать, это заменить номера версий в приведенных ниже командах, чтобы они соответствовали старой версии, которую вы используете, и новой версии, до которой вы обновляетесь.

Это займет всего пару минут, если у вас небольшая база данных, поэтому приступим!

<р>1. Установите последнюю версию Postgres

Если вы используете версию по умолчанию, доступную в Ubuntu, вы можете просто обновиться до последней версии postgres, выполнив следующее:

sudo apt-получить обновление

Чтобы найти версии, установленные на вашем компьютере, вы можете запустить следующее:

$ dpkg --get-selections | grep postgres

установить postgresql -9.3

установить postgresql -9.6

postgresql -client-9.3 установить

postgresql -client-9.6 установить

postgresql -client-общая установка

postgresql - обычная установка

postgresql — установить вклад

postgresql - contrib -9.3 установить

postgresql - contrib -9.6 установить

Вы также можете получить список кластеров, которые находятся на вашем компьютере, запустив

Ver Cluster Port Status Owner Каталог данных Файл журнала

9.3 main 5433 down postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log

9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

<р>2. Остановите Postgres, прежде чем мы внесем какие-либо изменения

Во-первых, нам нужно остановить все службы, использующие postgres, чтобы мы могли безопасно перенести нашу базу данных.

остановка службы sudo postgresql

<р>3. Переименуйте кластер по умолчанию новой версии Postgres

При установке пакетов Postgres создается кластер по умолчанию, который вы можете использовать. Нам нужно переименовать новый кластер postgres, чтобы при обновлении старого кластера имена не конфликтовали.

sudo pg_renamecluster 9.6 main main_pristine

<р>4. Обновите старый кластер до последней версии

Просто замените версию (9.3) на старую версию Postgres, которую вы сейчас используете.

sudo pg_upgradecluster 9.3 основной

<р>5. Убедитесь, что все снова работает

Мы можем снова запустить Postgres, и на этот раз он должен работать с новым кластером postgres 9.6.

запуск службы sudo postgresql

Вы также должны увидеть, что старый кластер не работает, а новая версия Postgres работает:

Ver Cluster Port Status Owner Каталог данных Файл журнала

9.3 main 5433 down postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log

9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log

Вы можете продолжать работать как со старым, так и с новым кластером postgres, работая на сервере Odoo с другим портом базы данных.

Моя база данных превышает 600 ГБ, а мой текущий объем составляет всего 1 ТБ, что, вероятно, ограничивает мои возможности.

Правка. Мне помогло это руководство. Единственное дополнение, которое мне нужно было сделать, это загрузить libicu55 вручную и установить его, и мне пришлось предоставить разрешение postgres 1777 для моей папки /tmp/. Я также сохранял папку с данными на другой диск, поэтому мне пришлось использовать команду:


"будет ли логическая репликация работать с Postgresql 10 на сервере Ubuntu по отношению к машине Windows 10 с Postgresql 10" - да.

После того, как вы установили двоичные файлы Postgres 10, вы можете перенести текущий каталог данных в Postgres 10 с помощью pg_upgrade . Если вы используете параметр --link, во время обновления требуется минимальное дополнительное пространство.

postgresql-10: Зависит: libicu55 (>= 55.1-1~), но он не может быть установлен, это ошибка, которую я получил, используя кодовое имя yakkety. Безопасно ли использовать кодовое имя 16.04 в файле .list?

2 ответа 2

Пошаговое руководство

Сделайте резервную копию. Убедитесь, что ваша база данных не обновляется.

Затем запустите sudo apt-get install postgresql-10 . Более новая версия будет установлена ​​параллельно с предыдущей версией.

Уже есть основной кластер для 10 (поскольку он создается по умолчанию при установке пакета). Это сделано для того, чтобы свежая установка работала из коробки без необходимости предварительно создавать кластер, но, конечно, коллизия при попытке обновить 9.6/main, когда также существует 10/main. Рекомендуемая процедура — удалить кластер 10 с помощью pg_dropcluster, а затем выполнить обновление с помощью pg_upgradecluster.

Остановить кластер 10 и отбросить его:

Остановите запись всех процессов и служб в базу данных. Остановить базу данных:

Обновите кластер версии 9.6:

Снова запустите PostgreSQL

Запустите pg_lsclusters . Теперь ваш кластер 9.6 должен быть отключен, а кластер 10 должен быть подключен к сети по адресу 5432 :

Во-первых, убедитесь, что все работает нормально. После этого удалите кластер 9.6:

Некоторые заметки о pg_upgradecluster

Если у вас действительно большой кластер, вы можете использовать pg_upgradecluster с параметром --link, чтобы обновление выполнялось на месте. Однако это опасно — в случае сбоя можно потерять кластер. Просто не используйте эту опцию, если в этом нет необходимости, так как -m upgrade уже работает достаточно быстро.

Обновить

Это руководство отлично подходит для обновления с 9.6 до 11 и с 10 до 11, а также с 10 до 13.

Руководство по обновлению PostgreSQL с версии 12 до 13 в Ubuntu после обновления с версии 20.10 до 21.04 (Hirsute Hippo).

После обновления Ubuntu с версии 20.10 до 21.04:

Эта статья предназначена для тех, кто, как и я, использует Ubuntu и PostgreSQL для локальной разработки на своем компьютере и после последнего обновления до Ubuntu 21.04 у них установлены две версии PostgreSQL.

Во время обновления Ubuntu до версии 21.04 вы получаете это сообщение «Настройка postgresql-common»:

Устарела основная версия 12

PostgreSQL версии 12 устарела, но пакеты сервера или клиента все еще установлены.

Пожалуйста, установите последние пакеты ( postgresql-13 и postgresql-client-13 ) и обновите существующие кластеры с помощью pg_upgradecluster (см. man-страницу).

Обратите внимание, что установка postgresql-13 автоматически создаст кластер по умолчанию 13/main .

Если вы хотите обновить кластер 12/main, вам необходимо удалить уже существующий кластер 13 ( pg_dropcluster --stop 13 main , подробности см. в man-странице).

Старые пакеты сервера и клиента больше не поддерживаются.

После обновления существующих кластеров пакеты postgresql-12 и postgresql-client-12 должны быть удалены.

См. /usr/share/doc/ postgresql-common/README.Debian.gz для подробностей.

Используйте dpkg -l | grep postgresql для проверки установленных версий postgres:

Запустите pg_lsclusters , ваши основные кластеры 12 и 13 должны быть подключены к сети.

Уже есть кластер «основной» для 13 (поскольку он создается по умолчанию при установке пакета). Это сделано для того, чтобы новая установка работала из коробки без необходимости сначала создавать кластер, но, конечно, она конфликтует, когда вы пытаетесь обновить 12/main, когда 13/main также существует. Рекомендуемая процедура — удалить кластер 13 с помощью pg_dropcluster, а затем выполнить обновление с помощью pg_upgradecluster.

Остановить кластер 13 и отбросить его.

Обновите кластер 12 до последней версии.

Теперь ваш кластер 12 должен быть отключен, и вы можете проверить работу pg_lsclusters

Убедитесь, что обновленный кластер работает, затем удалите кластер 12.

После проверки всех ваших данных вы можете удалить свои старые пакеты.

На программу не распространяется гарантия, насколько это разрешено применимым законодательством. Если иное не указано в письменной форме, владельцы авторских прав и/или другие стороны предоставляют программу «как есть» без каких-либо гарантий, явных или подразумеваемых, включая, помимо прочего, подразумеваемые гарантии товарного состояния и пригодности для конкретной цели. . Весь риск в отношении качества и производительности программы лежит на вас. Если программа окажется неисправной, вы берете на себя расходы на все необходимое обслуживание, ремонт или исправление.

Чтобы установить новую версию, особенно версию 10, я сначала добавлю репозиторий PosgreSQL Apt в мою установку Ubuntu следующим образом.

Поэтому я сначала добавлю репозиторий и ключ подписи, запущу команду apt update и, чтобы установить конкретную версию 10, запущу

$ sudo apt-get -y установить postgresql-10

После этого мы хотим проверить, какие версии сейчас работают в нашей системе, поэтому вы можете запустить одну из следующих команд.

Далее мы хотим проверить, какие кластеры находятся в сети в данный момент, поэтому выполните следующую команду.

Я ничего не хочу слышать о том, почему я вошел в систему как пользователь root 🙂


< /p>

Обновить до новой версии

Теперь нам нужно остановить PostgreSQL, чтобы перейти на новую версию кластера.

$ sudo systemctl остановить postgresql

Мы также хотим проверить, отключены ли оба кластера

Поскольку установка новой версии по умолчанию создает для нас кластер с тем же именем main, что и у старой версии, нам нужно переименовать новый кластер PostgreSQL, чтобы не столкнуться с конфликтом имен между двумя версиями.< /p>

$ sudo pg_renamecluster 10 main main_ver10

Теперь мы можем обновить мою старую версию 9.5 до новой версии 10 следующим образом.

$ sudo pg_upgradecluster 9.5 основной

В зависимости от размера и количества баз данных, запущенных на сервере, процесс обновления может занять несколько минут, так что возьмите кофе ☕ и расслабьтесь.


< /p>

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

$ sudo systemctl start postgresql

Здесь вы видите три кластера, первый из которых — старый кластер, который не работает. Второй интересующий нас, это обновленный кластер с 9.5 до 10. И последний - это вновь созданный по умолчанию и переименованный кластер из установки нового сервера PostgreSQL версии 10.

Поэтому следующим шагом будет удаление первого и последнего кластера.

В моем случае у меня есть работающие базы данных для Atlassians Confluence и Jira Systems, поэтому я могу дополнительно проверить в серверной части, к какому кластеру подключены системы.

В Confluence я могу проверить это в разделе «Общая конфигурация» — «Администрирование» — «Информация о системе»

Что касается номера порта 5432, это, как уже упоминалось, второй кластер в нашем списке.

В Jira это можно проверить в разделе «Система» — «Информация о системе»


Поэтому я могу остановиться и удалить первый и последний кластер следующим образом.

$ sudo pg_dropcluster 9.5 main –stop
$ sudo pg_dropcluster 10 main_ver10 –stop


< /p>

Jira и Confluence все еще работают, поэтому мы закончили 🙂

PostgreSQL 13 был выпущен на прошлой неделе. Я в восторге от этого, поскольку более зрелые функции разделения и логической репликации позволяют использовать некоторые долгожданные архитектуры развертывания. Я прогнал 13 через свой обычный 144 тестовый быстрый спин, чтобы посмотреть, все ли работает так, как ожидалось. В основном это скучно, но я был рад видеть, что с простой тестовой нагрузкой 128 клиентов / 4X RAM Postgres 13 передает 1,6 ГБ / с запросов трафика произвольного чтения на мой твердотельный накопитель PCI-e 4.0 NVM-e. Он не отстает от целого тома RAID старых SATA SSD! (проверил)

rising-1354-iostat-readMB

Аппаратное обеспечение стандартное для энтузиастов: AMD Ryzen 9 3950X с 32 ядрами, работающими с клиентами на самом сервере, обеспечивающим скорость чтения 140 000 в секунду. Материнская плата Asus Pro WS X570-ACE. SSD — это внутренний бренд Microcenter, «Performance 2TB», использующий популярный контроллер Phison PCIe 4.0, который обеспечивает скорость последовательного чтения 5 ГБ/с. (проверил)

Обновление до PG13 в Ubuntu/Debian

Я использую множество систем Ubuntu или Debian Linux в основном потому, что мне нравятся их скрипты-оболочки для управления несколькими версиями PostgreSQL. Это странный вариант использования, а не то, о чем я ожидаю, что люди будут беспокоиться. Вы можете запустить Postgres в любом дистрибутиве Linux, если готовы приложить усилия для его защиты.

PostgreSQL предоставляет простое руководство по обновлению до новых версий. Это действительно было всего 4 строки в моей системе Ubuntu 20.04:

У меня уже были PG10 (стандартная из Ubuntu 18.04) и PG12 (из Ubuntu 20.04), и из-за этого беспорядка мне нравится инструмент pg_lsclusters, предоставленный Debian: Один быстрый хак здесь. если вы когда-нибудь задавались вопросом, где при этом назначаются номера портов, это не в одном файле конфигурации. Оболочка собирает эту информацию, читая файлы postgresql.conf. Это выглядит так:

Настройка кластера

После установки базы данных вам, вероятно, потребуется импортировать любые стандартные изменения конфигурации, подходящие для вашей среды. Как минимум, как пользователь postgres, вы должны отредактировать /etc/postgresql/13/main/pg_hba.conf, чтобы использовать любую систему паролей/секретов, которая вам подходит. Моя — всего лишь скромная домашняя лаборатория, так что все на доверии. Не суди меня! Я делаю тесты, другие люди здесь занимаются безопасностью. Есть два заклинания, чтобы перезапустить базу данных или просто перезагрузить простое изменение конфигурации в этой системе:

После многих несчастных случаев на протяжении многих лет я всегда проверяю, соответствует ли моя конфигурация на каждом порту моим ожиданиям, например: Еще один небольшой совет: если вы хотите немного протестировать другую версию на консоли, вы можете легко изменить порт по умолчанию, который все инструменты командной строки Postgres используют с переменной среды PGPORT:

Сравнение

Первые тесты, которые я запускаю для каждого выпуска Postgres, — это простые тесты, целью которых является обнаружение неожиданного снижения базовой производительности в коде. Первый использует множество простых операторов SELECT, обращающихся к базе данных, используя сетку различных размеров базы данных и клиентских нагрузок. В этом году Crunchy дал мне длительный перерыв, чтобы, наконец, автоматизировать весь этот беспорядок с помощью моего инструментария pgbench-tools. Позвольте мне сначала опровергнуть это, сказав, что разница в несколько процентов между версиями является нормальным явлением, которое может быть чем угодно, от изменений компилятора до реальной оптимизации, которая наказывает тривиальные рабочие нагрузки тестов. В основном я ищу большие скачки или движущиеся кривые масштабирования. Пока что PG13 очень близок к 12, с небольшой регрессией в этом тесте только выше 32 клиентов:

client-scaling-13v12

Этот небольшой разрыв, превышающий 32 клиента, составляет 3 %, и всего показывает более 350 000 операций в секунду, что является контрольным показателем для этого класса настроек, а не реальным.

Это действительно не так, как в этом тесте, поэтому мне лично любопытно, но я никоим образом не считаю, что это настоящий регресс. Так много раз я видел это раньше, и редко виновата основная база данных. Вот лишь несколько возможностей:

Сама программа pgbench, как известно, очень разборчива в планировании Linux. Я видел такие пробелы, которые были на 100% ошибкой клиента pgbench и борьбы Linux, начиная с 2008 года.

Сначала я только что добавил репозиторий PostgreSQL в эту систему Ubuntu, выпуску уже несколько дней, и эта новая версия дает мне немного другие параметры конфигурации, а также кучу вещей для настройки. Проблемы первых пользователей часто бывают странными.

Я провел 13 тестов после серии из 12. Насколько я знаю, в этом месяце мой SSD работает на 2% медленнее, потому что у меня сгорела резервная флэш-память или что-то в этом роде. Аппаратное обеспечение последнего поколения требовательно; просто течение времени означает, что я не совсем сравниваю яблоки с яблоками. Я могу принять головную боль от повторного запуска 12 тестов, а затем снова 13, что требуется только для проверки того, что тесты становятся медленнее с течением времени.

Для меня это снова в сорняках, но я не предлагаю вам ждать этого. PostgreSQL 13 в Ubuntu отлично работает. Я проверил!

Чтобы перейти к высокой ноте, как насчет того графика чтения с диска? Попробуйте сделать это в облаке! Это была база данных объемом 256 ГБ, которая была заменена на 64 ГБ ОЗУ, и задержка для чтения отдельных дисков также все время составляла менее 20 мс. Неплохо для домашнего лабораторного сервера с, по общему признанию, безопасностью ниже номинала. Это тот же 1-минутный тест, с которого я начал:

Читайте также: