39. Оновлення програмного забезпечення¶
Оскільки PostGIS знаходиться всередині PostgreSQL, кожна інсталяція PostGIS фактично складається з двох версій програмного забезпечення: версії PostgreSQL та версії PostGIS. Як загальне правило, кожна версія PostGIS теоретично може працювати в декількох версіях PostgreSQL і навпаки.
На практиці точна версія буде залежати від розробника, який створив ваш дистрибутив PostgreSQL. Більшість пакетів для Linux містять кілька версій PostGIS для кожної версії PostgreSQL, що дозволяє оновлювати компоненти окремо або одночасно, залежно від ваших уподобань.
Оновлення можна розглядати з точки зору модернізації кожного компонента.
39.1. Оновлення PostgreSQL¶
Існує два типи сценаріїв оновлення PostgreSQL:
«Незначне оновлення» — це підвищення версії програмного забезпечення на рівень «патча». Наприклад, з 8.4.3 до 8.4.4 або з 9.0.1 до 9.0.3. Підвищення на кілька версій патча є цілком прийнятним. Незначні оновлення виправляють помилки, але не додають нових функцій і не змінюють поведінку програми.
«Значне оновлення», коли збільшується «основна» або «додаткова» версія. Наприклад, з 8.4.5 до 9.0.0 або з 9.0.5 до 9.1.1. Значні оновлення додають нові функції та змінюють поведінку.
39.1.1. Незначні оновлення PostgreSQL¶
Для «незначних оновлень» спеціальних процедур не потрібно. Просто встановіть нове програмне забезпечення та перезапустіть сервер.
39.1.2. Значні оновлення PostgreSQL¶
Для «значних оновлень» існує два способи виконання оновлення.
39.1.2.1. Вивантаження/відновлення¶
Створення резервної копії та відновлення передбачає перетворення всіх даних у платформонезалежний формат (текстові представлення) під час створення резервної копії та повернення до вихідних представлень під час відновлення, що може бути трудомістким і вимагати значних ресурсів процесора. Однак, якщо ви переходите на нову архітектуру або операційну систему, це необхідний процес. Це також перевірений часом і добре зрозумілий шлях оновлення, тому, якщо ваша база даних не надто велика, немає причин відмовлятися від нього.
Вивантажте дані
pg_dumpall
зі старої бази даних.Встановіть нову версію PostgreSQL та ту саму версію PostGIS, яку ви використовуєте у старій базі даних. Версії PostGIS повинні збігатися, щоб функції файлу дампа посилалися на очікувану версію бібліотеки PostGIS.
Ініціалізуйте нову область даних за допомогою програми
initdb
з нового програмного забезпечення.Запустіть новий сервер у новій області даних.
Відновіть файл дампа за допомогою
pg_restore
.
39.1.2.2. pg_upgrade¶
Утиліта pg_upgrade дозволяє оновлювати каталоги даних PostgreSQL без необхідності виконання кроків зливу/відновлення. Утиліта не може обробляти зміни в самих файлах даних, але обробляє більш поширені та часті зміни в системних таблицях, які відбуваються під час основних оновлень PostgreSQL.
Примітка
Повна інструкція щодо виконання процесу оновлення знаходиться на веб-сторінці pg_upgrade на сайті PostgreSQL.
Програма pg_upgrade очікує мати доступ до обох версій PostgreSQL, з якими вона працює, старої та нової, тому вам доведеться встановити обидві.
Встановіть нову версію PostgreSQL, яку ви будете використовувати.
Встановіть ту саму версію PostGIS, яку ви використовуєте в старому PostgreSQL, у новий PostgreSQL.
Ініціалізуйте нову область даних PostgreSQL за допомогою нової копії
initdb
.Переконайтеся, що старий і новий сервери PostgreSQL вимкнені.
Запустіть pg_upgrade, переконавшись, що використовуєте бінарний файл з нової інсталяції програмного забезпечення.
pg_upgrade --old-datadir "/var/lib/postgres/12/data" --new-datadir "/var/lib/postgres/13/data" --old-bindir "/usr/pgsql/12/bin" --new-bindir "/usr/pgsql/13/bin"
Якщо pg_upgrade створив будь-які файли
.sql
, запустіть їх зараз.Запустіть новий сервер.
39.2. Оновлення PostGIS¶
PostGIS обробляє незначні оновлення та модернізації за допомогою механізму EXTENSION
. Якщо ви надали базі даних просторові можливості за допомогою CREATE EXTENSION postgis
, ви можете оновити базу даних за допомогою тієї ж функції.
Спочатку встановіть нове програмне забезпечення, щоб воно було доступне для бази даних.
Потім запустіть SQL, щоб оновити розширення PostGIS.
-- If you are upgrading from PostGIS 2.5 or later
-- and want the latest installed version
SELECT postgis_extensions_upgrade();
-- If you are upgrading from an earlier version
-- you have to specifically turn on the version you want
ALTER EXTENSION postgis UPDATE TO '2.5.5';