Установка PostgreSQL: различия между версиями

Материал из WiKi - UserSide
Перейти к навигации Перейти к поиску
(Обновление PostgreSQL)
(Обновление PostgreSQL)
 
(не показана 1 промежуточная версия этого же участника)
Строка 145: Строка 145:
  
 
2. Выполните полный дамп всех БД командой:
 
2. Выполните полный дамп всех БД командой:
  sudo -u postgres pg_dumpall > /dump_before_update.dump
+
  sudo -u postgres pg_dumpall > /tmp/dump_before_update.dump
  
3. Установите новую версию PostgreSQL не удаляя старую. Две различные основные версии могут запросто быть установлены параллельно. Обратите внимание, в примере подразумевается, что текущей установленной версией является 9.х и новая версия, которую необходимо установить - 10.х
+
3. Остановите старый сервис
  sudo apt-get install postgresql-10
+
  sudo systemctl stop postgresql
  
4. Остановите старый сервис
+
4. Переместите старый каталоги с данными и конфигурацией (позже мы их удалим)
  sudo systemctl stop postgresql@9-main.service
+
  sudo mv /var/lib/postgresql/9.6/main/ /tmp/pg9.6-lib
 +
sudo mv /etc/postgresql/9.6/main/ /tmp/pg9-etc
  
5. Переместите старый каталоги с данными и конфигурацией (позже мы их удалим)
+
5. Удалите версию 9.6
  sudo mv /var/lib/postgresql/9/main /pg9-lib
+
  sudo apt-get purge postgresql-9.6 postgresql-9.6-postgis-2.4
sudo mv /etc/postgresql/9/main /pg9-etc
 
  
6. Скопируйте конфиги из старой инсталляции в новую:
+
6. Установите новую версию PostgreSQL, а также новый PostGis (для версии 11 замените номер версии соответствующим образом)
  sudo cp /pg9-etc/pg_hba.conf /etc/postgresql/10/main/
+
  sudo apt-get install postgresql-10 postgresql-10-postgis-2.5
sudo cp /pg9-etc/postgresql.conf /etc/postgresql/10/main/
 
  
7. Запустите новый сервер
+
7. Скопируйте конфиги из старой инсталляции в новую:
  sudo systemctl start postgresql@19-main.service
+
sudo cp /tmp/pg9-etc/pg_hba.conf /etc/postgresql/10/main/
 +
sudo cp /tmp/pg9-etc/postgresql.conf /etc/postgresql/10/main/
 +
 
 +
8. Перезапустите новый сервер
 +
  sudo systemctl restart postgresql
  
 
8. Выполните импорт данных
 
8. Выполните импорт данных
  sudo -u postgres psql -d postgres -f /dump_before_update.dump
+
  sudo -u postgres psql -d postgres -f /tmp/dump_before_update.dump
  
 
9. Запустите остановленные службы php-fpm (apache2), а также восстановите работу cron и постоянно функционирующих модулей usm_* и убедитесь, что никаких явных ошибок в работе системы нет.
 
9. Запустите остановленные службы php-fpm (apache2), а также восстановите работу cron и постоянно функционирующих модулей usm_* и убедитесь, что никаких явных ошибок в работе системы нет.

Текущая версия на 19:40, 2 августа 2020

Локаль

Убедитесь, что в Вашей системе установлена локаль, которая будет использоваться в базе данных. Например, ru_RU.utf8

Выполните команду locale, чтобы посмотреть, какая локаль установлена в системе по умолчанию. Если Вы планируете в базе данных использовать локаль отличную от системной, то убедитесь, что она добавлена в систему, выполнив команду locale -a. В конечном итоге важно, чтобы в списке локалей, выводимом последней командой, была та локаль, которую необходимо использовать в базе данных.

Если выполнив locale вы убедились в том, что установлена корректная локаль, которую планируется использовать в базе данных, то переходите к разделу установки.

Если Вы планируете использовать локаль базы данных такую же как установлена в системе по умолчанию, и Вам необходимо изменить для этого системную локаль. Для этого выполните команду sudo dpkg-reconfigure locales и выберите необходимую локаль, после чего убедитесь, что она установилась в системе по умолчанию locale.

Если Вы планируете использовать локаль базы данных отличную от системной и ее нет в списке установленных локалей, то добавьте название локали в файл sudo nano /etc/locale.gen (либо просто расскоменитруйте нужную строку). После чего сохраните файл и выполните команду sudo locale-gen. Убедитесь, что необходимая локаль была добавлена, выполнив команду locale -a.

Установка PostgreSQL

Официальная инструкция по добавлению репозитория и установке под разные системы доступна по адресу https://www.postgresql.org/download/

Здесь же описана инструкция установки для Debian-подобных Linux-дистрибутивов.

В стандартном репозитории Debian находится старая версия PostgreSQL. Чтобы иметь возможность установить новую версию, необходимо добавить официальный репозиторий PostgreSQL. Выполните:

   wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
   sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main"
   sudo apt-get update
   sudo apt-get install postgresql-11

На этом установка завершена.

Настройка PostgreSQL

Для настройки используются несколько конфигурационных файлов, расположенных в каталоге /etc/postgresql/11/main

Указанная ниже настройка двух файлов postgresql.conf и pg_hba.conf необходима только в том случае, если USERSIDE и СУБД PostgreSQL находятся на разных узлах!

Если СУБД и USERSIDE находятся на одном и том же узле, перейдите сразу к следующему разделу создания пользователя и базы данных.

postgresql.conf

Файл содержит настройки сервера PostgreSQL.

  1. Откройте файл sudo nano /etc/postgresql/11/main/postgresql.conf
  2. Найдите блок настроек CONNECTIONS AND AUTHENTICATION
  3. Раскомментируйте параметр listen_addresses и установите в качестве значения один или несколько IP адресов, разделенных запятыми, на которых сервер принимает подключения от клиентов. Допускается использование символа звездочки.

Подробней можно прочитать в официальной документации: https://postgrespro.ru/docs/postgresql/11/runtime-config-connection.html

После чего перезапустите сервер sudo service postgresql restart

pg_hba.conf

Файл содержит настройки аутентификации пользователей по именам узлов. Формат файла представляет набор записей, по одной в строке, состоящих из нескольких полей, разделенных между собой пробелами. Подробно о настройке данного файла можно прочитать по ссылке: https://postgrespro.ru/docs/postgrespro/11/auth-pg-hba-conf.html

  1. Откройте файл sudo nano /etc/postgresql/11/main/pg_hba.conf
  2. Добавьте в самый низ строку, разрешающую доступ (укажите IP-адрес узла, на котором установлен USERSIDE)

host userside all IP-адрес-userside md5

После чего перечитайте конфигурацию командой sudo service postgresql reload

Тонкая настройка

Мы рекомендуем произвести тонкую настройку СУБД PostgreSQL, которая зависит от ресурсов вашего сервера. Так как параметры должны быть подобраны индивидуально в каждом случае, мы намеренно не публикуем их рекомендуемые значения здесь.

Ознакомиться с методикой настройки СУБД можно по следующим ссылкам:

Инструменты для настройки:

Правильная настройка может существенно увеличить производительность СУБД, однако будьте крайне внимательны.

Создание пользователя и базы данных

В терминологии PostgreSQL "пользователь" - это роль СУБД, имеющая разрешение LOGIN (подключения к БД). В данной инструкции вместо использования SQL запросов будет предложено воспользоваться консольными командами.

Для того, чтобы создать пользователя, выполните следующую команду (здесь userside - имя пользователя БД):

   sudo -u postgres createuser userside -P

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

Теперь создайте базу данных. Создается база данных userside, владельцем которой становится пользователь userside

   sudo -u postgres createdb -e -E "UTF-8" -l "ru_RU.UTF-8" -O userside -T template0 userside

Включение расширения PostGIS

Расширение необходимо для обработки геометрических типов данных, которыми являются объекты на карте.

Сначала необходимо установить расширение PostGIS http://postgis.net/install/

Установка в Debian

В Debian-подобных дистрибутивах для этого выполните команду

   sudo apt-get install postgresql-11-postgis-2.5

Установка в FreeBSD

В FreeBSD есть порт /usr/ports/databases/postgis

После установки нужно перейти в папку

   cd /usr/local/share/postgresql/contrib/postgis-*

и выполнить там:

   sudo -u postgres psql -f "postgis.sql"
   sudo -u postgres psql -f "spatial_ref_sys.sql"

Создание расширения для базы данных

После того, как PostGIS установлен, необходимо включить его для базы данных userside следующим образом:

   sudo -u postgres psql -d userside -c "CREATE EXTENSION postgis"

Расширение установлено и подключено к базе данных userside.

Обновление расширения postgis

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

   sudo -u postgres psql -d userside -c "ALTER EXTENSION postgis UPDATE"

Обновление PostgreSQL

ВНИМАНИЕ! РАЗДЕЛ В СОСТОЯНИИ НАПИСАНИЯ! ОПИСАННЫЙ АЛГОРИТМ НЕ ПРОВЕРЯЛСЯ!

В данном разделе описана процедура обновления сервера PostgreSQL на новую основную версию (например, с 9.х на 10.х).

Обновление в пределах основной версии (например, с 10.1 на 10.3) осуществляется без каких либо дополнительных действий.

Существует несколько способов обновления. Здесь будет рассмотрен способ с полным дампом перед восстановлением и затем восстановлением из дампа после обновления. Также процедура будет описана для ОС Debian и ее производных (Ubuntu и т.д.). Для других дистрибутивов и ОС процедура практически точно такая же, но используются другие утилиты, специфичные для конкретного дистрибутива или ОС.

Если в процессе обновления не удается успешно выполнить какую-то команду, пожалуйста, не продолжайте выполнять остальные пункты, пока не решите проблему. К сожалению, мы не являемся специалистами по всем проблемам PostgreSql, а также остальных служб, поэтому не всегда сможем дать квалифицированный ответ.

1. Остановите работу всех систем, использующих базу данных. Остановите работу php-fpm или apache2, а также временно отключите задачи в cron и остановите работающие модули usm_*.

2. Выполните полный дамп всех БД командой:

sudo -u postgres pg_dumpall > /tmp/dump_before_update.dump

3. Остановите старый сервис

sudo systemctl stop postgresql

4. Переместите старый каталоги с данными и конфигурацией (позже мы их удалим)

sudo mv /var/lib/postgresql/9.6/main/ /tmp/pg9.6-lib
sudo mv /etc/postgresql/9.6/main/ /tmp/pg9-etc

5. Удалите версию 9.6

sudo apt-get purge postgresql-9.6 postgresql-9.6-postgis-2.4

6. Установите новую версию PostgreSQL, а также новый PostGis (для версии 11 замените номер версии соответствующим образом)

sudo apt-get install postgresql-10 postgresql-10-postgis-2.5

7. Скопируйте конфиги из старой инсталляции в новую:

sudo cp /tmp/pg9-etc/pg_hba.conf /etc/postgresql/10/main/
sudo cp /tmp/pg9-etc/postgresql.conf /etc/postgresql/10/main/

8. Перезапустите новый сервер

sudo systemctl restart postgresql

8. Выполните импорт данных

sudo -u postgres psql -d postgres -f /tmp/dump_before_update.dump

9. Запустите остановленные службы php-fpm (apache2), а также восстановите работу cron и постоянно функционирующих модулей usm_* и убедитесь, что никаких явных ошибок в работе системы нет.

10. Спустя время, достаточное для полного понимания удачного обновления, удалите файл /dump_before_update.dump и каталоги /pg9-lib и /pg9-etc

Для более подробной информации по обновлению PostgreSQL обратитесь к документации: https://postgrespro.ru/docs/postgresql/10/upgrading

FAQ

Возникает ошибка: Sudo: add-apt-repository: command not found.

Решение: sudo apt-get install software-properties-common