- Как обновить postgresql linux
- 18.6.1. Обновление данных с применением pg_dumpall
- 18.6.2. Обновление данных с применением pg_upgrade
- 18.6.3. Обновление данных с применением репликации
- All Guides / Upgrading PostgreSQL Version on Ubuntu Server
- Overview
- 1. Install the latest version of Postgres
- 2. Stop Postgres before we make any changes
- 3. Rename the new Postgres version’s default cluster
- 4. Upgrade the old cluster to the latest version
- 5. Make sure everything is working again
- 6. Drop the old cluster
- Обновление PostgreSQL сервера
- Как обновить postgresql linux
- 18.6.1. Обновление данных с применением pg_dumpall
- 18.6.2. Обновление данных с применением pg_upgrade
- 18.6.3. Обновление данных с применением репликации
Как обновить postgresql linux
В этом разделе рассказывается, как обновить ваш кластер базы данных с одной версии PostgreSQL на другую.
Текущие номера версий PostgreSQL состоят из номеров основной и корректирующей (дополнительной) версии. Например, в номере версии 10.1 число 10 обозначает основную версию, а 1 — дополнительную. Для выпусков PostgreSQL до версии 10.0 номера состояли из трёх чисел (например, 9.5.3). Тогда основная версия образовывалась группой их двух чисел (например, 9.5), а дополнительная задавалась третьим числом (например, 3, что означало, что это третий корректирующий выпуск основной версии 9.5).
В корректирующих выпусках никогда не меняется внутренний формат хранения и они всегда совместимы с предыдущими и последующими выпусками той же основной версии. Например, версия 10.1 совместима с версией 10.0 и версией 10.6. Подобным образом, например, версия 9.5.3 совместима с 9.5.0, 9.5.1 и 9.5.6. Для обновления версии на совместимую достаточно просто заменить исполняемые файлы при выключенном сервере и затем запустить сервер. Каталог данных при этом не затрагивается, так что обновить корректирующую версию довольно просто.
При обновлении основных версий PostgreSQL внутренний формат данных может меняться, что усложняет процедуру обновления. Традиционный способ переноса данных в новую основную версию — выгрузить данные из старой версии, а затем загрузить их в новую (это не самый быстрый вариант). Выполнить обновление быстрее позволяет pg_upgrade . Также для обновления можно использовать репликацию, как описано ниже. (Если вы используете PostgreSQL в виде готового продукта, в нём могут содержаться вспомогательные скрипты для обновления основной версии. За подробностями обратитесь к документации используемого вами продукта.)
Изменения основной версии обычно приносят какие-либо видимые пользователю несовместимости, которые могут требовать доработки приложений. Все подобные изменения описываются в замечаниях к выпуску (Приложение E); обращайте особое внимание на раздел «Migration» (Миграция). Хотя вы можете перейти с одной основной версии на другую, пропустив промежуточные версии, обязательно ознакомьтесь с замечаниями к каждому выпуску, в том числе для каждой пропускаемой версии.
Осторожные пользователи обычно тестируют свои клиентские приложения с новой версией, прежде чем переходить на неё полностью; поэтому часто имеет смысл установить рядом старую и новую версии. При тестировании обновления основной версии PostgreSQL изучите следующие области возможных изменений:
Средства и функции, предоставляемые администраторам для наблюдения и управления сервером, часто меняются и совершенствуются в каждой новой версии. SQL
В этой области чаще наблюдается появление новых возможностей команд SQL, чем изменение поведения существующих, если только об этом не говорится в замечаниях к выпуску. API библиотек
Обычно библиотеки типа libpq только расширяют свою функциональность, если об обратном так же не говорится в замечаниях к выпуску. Системные каталоги
Изменения в системных каталогах обычно влияют только на средства управления базами данных. API сервера для кода на C
Сюда относятся изменения в API серверных функций, которые написаны на языке программирования C. Такие изменения затрагивают код, обращающийся к служебным функциям глубоко внутри сервера.
18.6.1. Обновление данных с применением pg_dumpall
Один из вариантов обновления заключается в выгрузке данных из одной основной версии PostgreSQL и загрузке их в другую — для этого необходимо использовать средство логического копирования, например pg_dumpall ; копирование на уровне файловой системы не подходит. (В самом сервере есть проверки, которые не дадут использовать каталог данных от несовместимой версии PostgreSQL , так что если попытаться запустить с существующим каталогом данных неправильную версию сервера, никакого вреда не будет.)
Для создания копии рекомендуется применять программы pg_dump и pg_dumpall от новой версии PostgreSQL , чтобы воспользоваться улучшенными функциями, которые могли в них появиться. Текущие версии этих программ способны читать данные любой версии сервера, начиная с 7.0.
В следующих указаниях предполагается, что сервер установлен в каталоге /usr/local/pgsql , а данные находятся в /usr/local/pgsql/data . Вам нужно подставить свои пути.
При запуске резервного копирования убедитесь в том, что в базе данных не производятся изменения. Изменения не повлияют на целостность полученной копии, но изменённые данные, само собой, в неё не попадут. Если потребуется, измените разрешения в файле /usr/local/pgsql/data/pg_hba.conf (или подобном), чтобы подключиться к серверу могли только вы. За дополнительными сведениями об управлении доступом обратитесь к Главе 20.
Чтобы получить копию всех ваших данных, введите:
Для создания резервной копии вы можете воспользоваться программой pg_dumpall от текущей версии сервера; за подробностями обратитесь к Подразделу 25.1.2. Однако для лучшего результата стоит попробовать pg_dumpall из PostgreSQL 13.4, так как в эту версию вошли исправления ошибок и усовершенствования, по сравнению с предыдущими версиями. Хотя этот совет может показаться абсурдным, ведь новая версия ещё не установлена, ему стоит последовать, если вы планируете установить новую версию рядом со старой. В этом случае вы сможете выполнить установку как обычно, а перенести данные позже. Это также сократит время обновления.
Остановите старый сервер:
В системах, где PostgreSQL запускается при загрузке, должен быть скрипт запуска, с которым можно сделать то же самое. Например, в Red Hat Linux может сработать такой вариант:
Подробнее запуск и остановка сервера описаны в Главе 18.
При восстановлении из резервной копии удалите или переименуйте старый каталог, где был установлен сервер, если его имя не привязано к версии. Разумнее будет переименовать каталог, а не удалять его, чтобы его можно было восстановить в случае проблем. Однако учтите, что этот каталог может занимать много места на диске. Переименовать каталог можно, например так:
(Этот каталог нужно переименовывать (перемещать) как единое целое, чтобы относительные пути в нём не изменились.)
Установите новую версию PostgreSQL как описано в Разделе 16.4.
При необходимости создайте новый кластер баз данных. Помните, что следующие команды нужно выполнять под именем специального пользователя БД (вы уже действуете под этим именем, если производите обновление).
Перенесите изменения, внесённые в предыдущие версии pg_hba.conf и postgresql.conf .
Запустите сервер баз данных, так же применяя учётную запись специального пользователя БД:
Наконец, восстановите данные из резервной копии, выполнив:
(При этом будет использоваться новый psql .)
Минимизировать время отключения сервера можно, установив новый сервер в другой каталог и запустив параллельно оба сервера, старый и новый, с разными портами. Затем можно будет перенести данные примерно так:
18.6.2. Обновление данных с применением pg_upgrade
Модуль pg_upgrade позволяет обновить инсталляцию PostgreSQL с одной основной версии на другую непосредственно на месте. Такое обновление может выполняться за считанные минуты, особенно в режиме —link . Для него требуются примерно те же подготовительные действия, что и для варианта с pg_dumpall : запустить/остановить сервер, выполнить initdb . Все эти действия описаны в документации pg_upgrade .
18.6.3. Обновление данных с применением репликации
Методы логической репликации также могут применяться для создания резервного сервера с обновлённой версией PostgreSQL . Это возможно благодаря тому, что логическая репликация поддерживается между разными основными версиями PostgreSQL . Резервный сервер может располагаться как на том же компьютере, так и на другом. Как только синхронизация с главным сервером (где работает старая версия PostgreSQL ) будет завершена, можно сделать главным новый сервер, а старый экземпляр базы данных просто отключить. При таком переключении обновление возможно осуществить, прервав работу сервера всего на несколько секунд.
Этот вариант обновления можно осуществить, используя как встроенные средства логической репликации, так и внешние системы логической репликации, такие как pglogical , Slony , Londiste и Bucardo .
Источник
All Guides / Upgrading PostgreSQL Version on Ubuntu Server
Overview
We’re going to be upgrading PostgreSQL server on Ubuntu in this guide. It doesn’t matter which version you’re upgrading from or to. You can do this with Postgres 9.1, 9.2, 9.3, 9.4, 9.5, and 9.6 or whatever is the most recent version. In this example, I’m upgrading Postgres 9.3 to Postgres 9.5 but all you have to do is replace the version numbers in the commands below to match which old version you’re using and the new version you’re upgrading to.
This only takes a couple minutes if you have a small database, so let’s get started!
1. Install the latest version of Postgres
If you’re using the default version available on Ubuntu, you can just upgrade to the latest postgres by running the following:
Otherwise if you want to upgrade to the very latest Postgres version, you can follow the instructions on their website here: https://www.postgresql.org/download/linux/ubuntu/
To find the installed versions that you currently have on your machine, you can run the following:
You can also list the clusters that are on your machine by running
2. Stop Postgres before we make any changes
First thing’s first, we need to stop any services using postgres so we can safely migrate our database.
3. Rename the new Postgres version’s default cluster
When Postgres packages install, they create a default cluster for you to use. We need to rename the new postgres cluster so that when we upgrade the old cluster the names won’t conflict.
4. Upgrade the old cluster to the latest version
Just replace the version (9.3) here with the old version of Postgres that you’re currently using.
5. Make sure everything is working again
We can start Postgres back up again and this time it should be running the new postgres 9.6 cluster.
You should also see that the old cluster is down and the new version of Postgres is up:
6. Drop the old cluster
Optionally, you can drop the old 9.3 cluster once you’ve verified the new one works and you don’t need the old cluster anymore.
Источник
Обновление PostgreSQL сервера
Эти инструкции предполагают, что домашняя дерриктория pgsql расположена в /usr/local/pgsql, и данные находится в /usr/local/pgsql/data.
Если ваша конфигурация другая, замените соответствующие пути на свои. Внутренний формат хранения данных типично изменяется в каждом главном выпуске PostgreSQL. Поэтому, если Вы обновляете существующую установку, младше версии “8.3.x”, Вы должны сделать резервную копию, а затем восстановить данные. Если Вы обновляете PostgreSQL “8.3.x”, новая версия может использовать Ваши текущие файлы с данными, таким образом Вы сможете пропустить этапы резервного копирования и восстановления.
1. Делая резервную копию, удостоверьтесь, что Ваша база данных не обновляется. Это не затронет целостность резервной копии, но измененные данные не будут внесены. В случае необходимости, отредактируйте разрешения в файле/usr/local/pgsql/data/pg_hba.conf, чтобы закрыть доступ от всем кроме Вас. Чтобы создать резервную копию БД введите
Если Вам нужно сохранить OIDs используйте ключ -o. Чтобы сделать резервную копию, Вы можете использовать команду pg_dumpall от версии, которой Вы в настоящий момент установлена. Для лучших результатов, однако, следует использовать команду pg_dumpall от PostgreSQL 8.3.5, так как эта версия содержит исправления ошибок и усовершенствования по старшим версиям. Совет может показаться странным, так как Вы еще не установили новую версию, можно последовать ему, если Вы планируете установить новую версию без предварительного удаления старой версии. В этом случае Вы можете сначала заканчивать установку и потом перенести данные. Это также уменьшит время простоя.
2. Остановите старый сервер:
или (в зависимости от установки PgSQL в вашей системе)
3. Переименуйте или удалите старый домашний каталог pgsql. Можно переименовать справочник, вместо того, чтобы удалить его, в случае, если появятся проблемы при установке вы сможете вернуться к старой версии. Имейте в виду, что домашний каталог базы может занимать существенное дисковое пространство. Чтобы переименовать справочник, используйте команду:
mv /usr/local/pgsql /usr/local/pgsql.old
4. Установите новую версию PostgreSQL (http://www.postgresql.org/docs/current/static/install-procedure.html)
5. Инициализируйте вновь установленную базу данных (необходимо запускать команды от пользователя под которым будет работать сервер БД, обычно это пользователь pgsql).
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
6. Восстановите необходимые настройки pg_hba.conf и postgresql.conf.
7. Запустите сервер базы данных (опять же от пользователя под которым должен работать сервер БД):
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
8. Наконец, восстановите свои данные из резервной копии
/usr/local/pgsql/bin/psql -d postgres -f outputfile
Используйте новую версию PgSQL!
upd: перед обновлением тщательно подумайте над тем что делаете, т.к. версии не всегда совместимы, и приложения которые ранее работали с вашим сервером могут перестать работать.
upd2: в случае если вы столкнулись с тем, Что ваши приложения несовместимы с обновленной версией, установите обратно предыдущую версию и замените в ней каталог /usr/local/pgsql/data на ранее сохраненный (если вы его не удалили, а переименовали в п.3).
Источник
Как обновить postgresql linux
В этом разделе рассказывается, как обновить ваш кластер базы данных с одной версии PostgreSQL на другую.
Текущие номера версий PostgreSQL состоят из номеров основной и корректирующей (дополнительной) версии. Например, в номере версии 10.1 число 10 обозначает основную версию, а 1 — дополнительную. Для выпусков PostgreSQL до версии 10.0 номера состояли из трёх чисел (например, 9.5.3). Тогда основная версия образовывалась группой их двух чисел (например, 9.5), а дополнительная задавалась третьим числом (например, 3, что означало, что это третий корректирующий выпуск основной версии 9.5).
В корректирующих выпусках никогда не меняется внутренний формат хранения и они всегда совместимы с предыдущими и последующими выпусками той же основной версии. Например, версия 10.1 совместима с версией 10.0 и версией 10.6. Подобным образом, например, версия 9.5.3 совместима с 9.5.0, 9.5.1 и 9.5.6. Для обновления версии на совместимую достаточно просто заменить исполняемые файлы при выключенном сервере и затем запустить сервер. Каталог данных при этом не затрагивается, так что обновить корректирующую версию довольно просто.
При обновлении основных версий PostgreSQL внутренний формат данных может меняться, что усложняет процедуру обновления. Традиционный способ переноса данных в новую основную версию — выгрузить данные из старой версии, а затем загрузить их в новую (это не самый быстрый вариант). Выполнить обновление быстрее позволяет pg_upgrade . Также для обновления можно использовать репликацию, как описано ниже.
Изменения основной версии обычно приносят какие-либо видимые пользователю несовместимости, которые могут требовать доработки приложений. Все подобные изменения описываются в замечаниях к выпуску (Приложение E); обращайте особое внимание на раздел «Migration» (Миграция). Хотя вы можете перейти с одной основной версии на другую, пропустив промежуточные версии, обязательно ознакомьтесь с замечаниями к каждому выпуску, в том числе для каждой пропускаемой версии.
Осторожные пользователи обычно тестируют свои клиентские приложения с новой версией, прежде чем переходить на неё полностью; поэтому часто имеет смысл установить рядом старую и новую версии. При тестировании обновления основной версии PostgreSQL изучите следующие области возможных изменений:
Средства и функции, предоставляемые администраторам для наблюдения и управления сервером, часто меняются и совершенствуются в каждой новой версии. SQL
В этой области чаще наблюдается появление новых возможностей команд SQL, чем изменение поведения существующих, если только об этом не говорится в замечаниях к выпуску. API библиотек
Обычно библиотеки типа libpq только расширяют свою функциональность, если об обратном так же не говорится в замечаниях к выпуску. Системные каталоги
Изменения в системных каталогах обычно влияют только на средства управления базами данных. API сервера для кода на C
Сюда относятся изменения в API серверных функций, которые написаны на языке программирования C. Такие изменения затрагивают код, обращающийся к служебным функциям глубоко внутри сервера.
18.6.1. Обновление данных с применением pg_dumpall
Один из вариантов обновления заключается в выгрузке данных из одной основной версии PostgreSQL и загрузке их в другую — для этого необходимо использовать средство логического копирования, например pg_dumpall ; копирование на уровне файловой системы не подходит. (В самом сервере есть проверки, которые не дадут использовать каталог данных от несовместимой версии PostgreSQL , так что если попытаться запустить с существующим каталогом данных неправильную версию сервера, никакого вреда не будет.)
Для создания копии рекомендуется применять программы pg_dump и pg_dumpall от новой версии PostgreSQL , чтобы воспользоваться улучшенными функциями, которые могли в них появиться. Текущие версии этих программ способны читать данные любой версии сервера, начиная с 7.0.
В следующих указаниях предполагается, что сервер установлен в каталоге /usr/local/pgsql , а данные находятся в /usr/local/pgsql/data . Вам нужно подставить свои пути.
При запуске резервного копирования убедитесь в том, что в базе данных не производятся изменения. Изменения не повлияют на целостность полученной копии, но изменённые данные, само собой, в неё не попадут. Если потребуется, измените разрешения в файле /usr/local/pgsql/data/pg_hba.conf (или подобном), чтобы подключиться к серверу могли только вы. За дополнительными сведениями об управлении доступом обратитесь к Главе 20.
Чтобы получить копию всех ваших данных, введите:
Для создания резервной копии вы можете воспользоваться программой pg_dumpall от текущей версии сервера; за подробностями обратитесь к Подразделу 25.1.2. Однако для лучшего результата стоит попробовать pg_dumpall из PostgreSQL 11.13, так как в эту версию вошли исправления ошибок и усовершенствования, по сравнению с предыдущими версиями. Хотя этот совет может показаться абсурдным, ведь новая версия ещё не установлена, ему стоит последовать, если вы планируете установить новую версию рядом со старой. В этом случае вы сможете выполнить установку как обычно, а перенести данные позже. Это также сократит время обновления.
Остановите старый сервер:
В системах, где PostgreSQL запускается при загрузке, должен быть скрипт запуска, с которым можно сделать то же самое. Например, в Red Hat Linux может сработать такой вариант:
Подробнее запуск и остановка сервера описаны в Главе 18.
При восстановлении из резервной копии удалите или переименуйте старый каталог, где был установлен сервер, если его имя не привязано к версии. Разумнее будет переименовать каталог, а не удалять его, чтобы его можно было восстановить в случае проблем. Однако учтите, что этот каталог может занимать много места на диске. Переименовать каталог можно, например так:
(Этот каталог нужно переименовывать (перемещать) как единое целое, чтобы относительные пути в нём не изменились.)
Установите новую версию PostgreSQL как описано в Разделе 16.4.
При необходимости создайте новый кластер баз данных. Помните, что следующие команды нужно выполнять под именем специального пользователя БД (вы уже действуете под этим именем, если производите обновление).
Перенесите изменения, внесённые в предыдущие версии pg_hba.conf и postgresql.conf .
Запустите сервер баз данных, так же применяя учётную запись специального пользователя БД:
Наконец, восстановите данные из резервной копии, выполнив:
(При этом будет использоваться новый psql .)
Минимизировать время отключения сервера можно, установив новый сервер в другой каталог и запустив параллельно оба сервера, старый и новый, с разными портами. Затем можно будет перенести данные примерно так:
18.6.2. Обновление данных с применением pg_upgrade
Модуль pg_upgrade позволяет обновить инсталляцию PostgreSQL с одной основной версии на другую непосредственно на месте. Такое обновление может выполняться за считанные минуты, особенно в режиме —link . Для него требуются примерно те же подготовительные действия, что и для варианта с pg_dumpall : запустить/остановить сервер, выполнить initdb . Все эти действия описаны в документации pg_upgrade .
18.6.3. Обновление данных с применением репликации
Методы логической репликации также могут применяться для создания резервного сервера с обновлённой версией PostgreSQL . Это возможно благодаря тому, что логическая репликация поддерживается между разными основными версиями PostgreSQL . Резервный сервер может располагаться как на том же компьютере, так и на другом. Как только синхронизация с главным сервером (где работает старая версия PostgreSQL ) будет завершена, можно сделать главным новый сервер, а старый экземпляр базы данных просто отключить. При таком переключении обновление возможно осуществить, прервав работу сервера всего на несколько секунд.
Этот вариант обновления можно осуществить, используя как встроенные средства логической репликации, так и внешние системы логической репликации, такие как pglogical , Slony , Londiste и Bucardo .
Источник