Как обновить postgresql 1c

Обновлено: 06.07.2024

Можно значительно сократить затраты на программное обеспечение, установив сервер 1С на Linux. В данной инструкции мы рассмотрим процесс настройки сервера 1C 8.3 на Ubuntu 18.04 или 20.04 с сервером баз данных (не файловый вариант). В качестве СУБД мы будем использовать PostgreSQL (на примере версий 9.6, 10, 12 и 13).

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

Подготовка системы

Задаем имя сервера

Чтобы сервер 1С мог запуститься без ошибки, необходимо ему задать корректное имя:

Настройка брандмауэра

Для корректной работы сервера, необходимо открыть порты:

  • 1540 и 1541 для сервера 1С.
  • 1560 — запросы к базе данных.

По умолчанию, в Ubuntu действует разрешающая политика и настройка брандмауэра не требуется. В противном случае, вводим команды:

iptables -I INPUT 1 -p tcp --dport 1540:1541 -j ACCEPT

iptables -I INPUT 1 -p tcp --dport 1560 -j ACCEPT

И сохраняем правила с помощью iptables-persistent:

apt-get install iptables-persistent

Установка PostgreSQL

Как было сказано выше, мы задействуем СУБД PostgreSQL. Для 1С требуется специальная сборка postgresql, которая может быть установлена из специального дистрибутива или от поставщика 1С. Рассмотрим установку как версии 9.6, так и 10.

Подготовка к установке СУБД

Настраиваем локаль, введя команду:

В открывшемся окне выбираем локаль ru_RU.UTF-8 UTF-8:

Настройка локали в Ubuntu

Нажимаем OK. В следующем окне также выбираем ru_RU.UTF-8:

Настройка локали в Ubuntu

. и нажимаем OK.

* Если мы устанавливали русскую версию Linux, возможно, данные настройки уже будут выставлены. Так или иначе, стоит в этом убедиться.

Установка PostgreSQL 9.6 из репозитория

PostgreSQL 9.6 для 1С можно установить из репозитория. Для начала, добавим его:

Установим цифровую подпись для репозитория:

Обновляем списки пакетов:

Устанавливаем библиотеку libpq5 версии 9.6, собранной для postgresql под 1С:

apt-get install libpq5=9.6.*.1C.bionic

Выполняем установку самого PostgreSQL:

apt-get install postgresql-pro-1c-9.6

Установка PostgreSQL 10 от 1С

Сначала устанавливаем компоненты, необходимые для установки СУБД из пакетов.

dpkg -i libicu55_55.1-7_amd64.deb

* libicu55 — Unicode-компоненты для интернационализации.

Теперь устанавливаем postgresql-common:

apt-get install postgresql-common

* postgresql-common позволяет одновременную установку нескольких версий PostgreSQL.

Устанавим пакет libssl:

* если команда вернет ошибку, точное название для новой версии libssl смотрим, перейдя по ссылке.

dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.4_amd64.deb

Переходим к установки самой СУБД. 10-я версия PostgreSQL может быть установлена из дистрибутива, полученного от 1С (в личном кабинете или от поставщика). Архив с дистрибутивом postgresql, в свою очередь, содержит архивы под различные операционные системы — нам нужен файл с окончанием в названии . amd64_deb.tar.bz2

* в данном примере взят файл для 64-х разрядной версии операционной системы. Пакет deb (для систем на базе Debian).

Копируем данный файл на сервер (например, с помощью программы WinSCP) и распаковываем его:

tar jxvf PostgreSQL_10.*.1C_postgresql_10.*.1C_amd64_deb.tar.bz2

Выполним установку пакетов из папки . amd64_deb.

dpkg -i postgresql-10.*.1C_amd64_deb/*.deb

sudo -u postgres /usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --locale=ru_RU.UTF-8

* при инициализации для нас важно задать русскую локаль. В противном случае мы можем получить ошибку «Порядок сортировки не поддерживается базой данных».

Установка PostgreSQL 12 от 1С

Устанавим пакет libssl:

* если команда вернет ошибку, точное название для новой версии libssl смотрим, перейдя по ссылке.

dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.4_amd64.deb

apt-get install libllvm6.0

Распаковываем архив с postgresql:

tar jxvf postgresql_12.*.1C_amd64_deb.tar.bz2

Устанавливаем по очереди

dpkg -i postgresql-12.*.1C_amd64_deb/libpq5_12.*.1C_amd64.deb

dpkg -i postgresql-12.*.1C_amd64_deb/postgresql-client-12_12.*.1C_amd64.deb

dpkg -i postgresql-12.*.1C_amd64_deb/postgresql-12_12.*.1C_amd64.deb

sudo -u postgres /usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main --locale=ru_RU.UTF-8

* при инициализации для нас важно задать русскую локаль. В противном случае мы можем получить ошибку «Порядок сортировки не поддерживается базой данных».

PostgreSQL Pro для 1С

Для работы 1С рекомендуется установить специальный выпуск PostgreSQL Pro. Она также может быть загружена и установлена бесплатно.

Мастер для скачивания Postgresql Pro для 1С

После заполняем форму для получения инструкции по установке СУБД:

Заполняем форму для получения Postgresql

На указанную почту придет инструкция по установке PostgreSQL.

Пример установки PostgreSQL Pro 13. Скачиваем скрипт для установки репозитория:

apt-get install gnupg2

* без данного пакета при попытке установить репозиторий мы получим ошибку:
E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
Error adding key.

Запускаем скачанный скрипт:

Запускаем установку СУБД:

apt-get install postgrespro-1c-13

systemctl enable postgrespro-1c-13

systemctl stop postgrespro-1c-13

Удаляем содержимое каталога data:

rm -rf /var/lib/pgpro/1c-13/data/*

* в противном случае, при попытке инициализировать базу мы получим ошибку Data directory /var/lib/pgpro/1c-13/data is not empty!

/opt/pgpro/1c-13/bin/pg-setup initdb --tune=1c --locale=ru_RU.UTF-8

Запускаем сервис postgrespro:

systemctl start postgrespro-1c-13

Действия после установки postgres

Если мы установили PostgreSQL Pro версию, выполним только первую настройку.

Пароль для пользователя postgres

Задаем пароль для пользователя postgres:

* данную команду мы запускаем под пользователем postgres; мы задаем пароль password для postgresql-пользователя postgres. Дополнительная команда history -d $((HISTCMD-1)) удалить из истории строку с паролем.

Остальные настройки выполняем для PostgreSQL не Pro версии.

Автозапуск

Разрешаем автозапуск сервиса баз данных и стартуем его:

systemctl enable postgresql --now

Блокировка обновлений PostgreSQL

Так как для 1С устанавливается специальная сборка СУБД, необходимо запретить ее обновление. В противном случае будет установлен обычныйpostgresql, что приведет к потери работоспособности сервера.

Смотрим версию установленного сервера баз данных:

dpkg -l | grep postgresql

ii postgresql-10 10.10-4.1C .
ii postgresql-client-10 10.10-4.1C .
.

И так, у нас установлена версия 10.10-4.1C. Вводим:

* где 10.10-4.1C — версия установленного PostgreSQL. Команда apt-mark hold блокируем установку обновлений для пакетов версии 10.10-4.1C.

apt-mark hold postgresql-common postgresql-client-common

Установка сервера 1С

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

И так, выполним установку следующих пакетов:

apt-get install imagemagick unixodbc ttf-mscorefonts-installer

  • imagemagick — набор программ для чтения и редактирования графических файлов.
  • unixodbc — диспетчер драйверов для ODBC.
  • ttf-mscorefonts-installer — набор шрифтов Microsoft.

В процессе установки система запросит принять лицензионное соглашение — выбираем Yes.

Копируем на сервер архив с дистрибутивом для 1С, который был загружен с сайта 1С или получен от поставщика. Распаковываем архив командой:

tar zxvf 8.3.16.1148_deb64.tar.gz

* где 8.3.16.1148_deb64.tar.gz — имя архива с 1С версии 8.3.16. В архиве пакеты deb (для Linux на основе Debian) для 64-х разрядной системы.

Устанавливаем все пакеты, которые находились в архиве командой:

dpkg -i 1c-enterprise*.deb

Разрешаем автозапуск сервиса 1С и стартуем его:

systemctl enable srv1cv83

systemctl start srv1cv83

Необходимо убедиться, что сервис запустился:

systemctl status srv1cv83

Если мы получим ошибку «srv1cv83.service not found», находим исполняемый файл srv1cv83:

find /opt -name srv1cv83

В моем случае он был по пути:

Делаем симлинк в каталоге /etc/init.d на найденный файл:

ln -s /opt/1cv8/x86_64/8.3.16.1148/srv1cv83 /etc/init.d/srv1cv83

Снова запускаем сервис:

systemctl start srv1cv83

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

На любой компьютер в сети установим толстый клиент 1С:Предприятие той же версии, что и сервер. Во время установки обязательно выбираем компонент Администрирование сервера 1С:Предприятие:

Выбираем компонент Администрирование сервера 1С:Предприятие

Запуск регистрации утилиты администрирования серверов

Теперь запускаем утилиту Администрирование серверов 1С Предприятия:

Запуск регистрации утилиты администрирование серверов 1С Предприятия

В открывшемся окне кликаем правой кнопкой мыши по Central 1C:Enterprise 8.3 servers - выбираем Создать - Центральный сервер 1С:Предприятие 8.3:

Подключаемся к серверу 1С в консоли управления сервером 1С

Пишем имя сервера 1С или его IP-адрес:

Прописываем настройки для подключения к серверу 1С

. и нажимаем OK. В панели управления появится подключение — переходим в раздел Кластеры - Локальный кластер - кликаем правой кнопкой по Информационные базы - выбираем Создать - Информационная база:

Создание новой информационной базы

Заполняем параметры для создания новой базы:

Заполняем настройки для создания информационной базы

* в данном примере нами были заполнены:

  • Имя — задаем произвольное имя для подключения к базе.
  • Сервер баз данных — имя или IP-адрес базы. Задаем localhost, так как в нашем случае сервер 1С и сервер баз данных находятся на одном сервере.
  • Тип СУБД — выбираем PostgreSQL.
  • База данных — имя базы данных.
  • Пользователь сервера БД — пользователь, под которым будет выполняться подключение к базе. В нашем примере postgres.
  • Пароль пользователя БД — пароль для базы, который мы задали после установки СУБД.
  • Создать базу данных в случае ее отсутствия — ставим галочку, чтобы база была создана.

Если мы получим ошибку Этот хост неизвестен:

Ошибка «Этот хост неизвестен»

. необходимо убедиться, что имя сервера разрешается в IP-адрес. Для этого необходимо его добавить в локальную DNS или файл hosts.

База должна создастся. Теперь запускаем 1С клиент и добавляем новую базу - при добавлении выбираем Добавление в список существующей информационной базы:

Добавляем существующую базу в 1С

Указываем произвольное имя информационной базы, а также выбираем тип расположения базы На сервере 1С:Предприятия:

Задаем настройки при создании новой информационной базы в 1С

Нажимаем Далее и Готово. Запускаем конфигуратор, загружаем базу и пользуемся.

HASP Licence manager

Если в сервер вставлен аппаратный ключ, необходимо установить HASP Licence manager, чтобы лицензии могли получать компьютеры по сети.

Проверяем, что наш сервер видит ключ:

lsusb | grep -i hasp

Мы должны увидеть что-то на подобие:

Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle

Устанавливаем необходимые пакеты:

apt-get install make libc6-i386

  • make — утилите, которая в нашем случае используется для компиляция исходного кода.
  • libc6-i386 — набор стандартных библиотек для С и математических вычислений.

Создадим каталог для загрузки пакетов и перейдем в него:

mkdir /tmp/hasp ; cd /tmp/hasp

Переходим на страницу загрузки HASP для Ubuntu. Выбираем необходимую версию и копируем ссылки на 2 файла — haspd-modules_. и haspd_.

На момент обновления инструкции на сайте не было пакетов для Ubuntu 20, однако, для данной версии подходят пакеты под Ubuntu 18.

С помощью скопированных ссылок загружаем на сервер два файла:

* в моем примере загрузка выполнялась для Ubuntu 18.04.

Выполним установку скачанных пакетов командой:

dpkg -i haspd*.deb

Разрешим автозапуск сервиса haspd:

systemctl enable haspd

systemctl start haspd

Проверяем, что он корректно стартовал и работает:

systemctl status haspd

Готово — наши компьютеры в локальной сети смогут получить лицензию.

Миграция базы на PostgreSQL

В случае, если это не первая установка и у нас уже есть база, ее нужно перенести на новый сервер. Рассмотрим 2 варианта — база была на другом сервере PostgreSQL и универсальный (файловый вариант или другая СУБД).

С PostgreSQL на PostgreSQL

В данном случае процесс переноса заключается в создании дампа (backup) и его восстановления на новом сервере (restore). Необходимо учесть, что для корректного переноса данных, версии 1С должны совпадать.

Есть несколько инструментов по созданию резервных копий PostgreSQL и их восстановлению. Их описание выходит за рамки данной статьи — подробнее читайте инструкцию Резервное копирование PostgreSQL.

Универсальный способ миграции на PostgreSQL

Данный способ также подойдет и для миграции с PostgreSQL на PostgreSQL. Для начала, открываем нашу базу в конфигураторе на старом 1С - кликаем по Администрирование - Выгрузить информационную базу:

Выгружаем информационную базу

Выбираем путь для сохранения файла. Ждем окончания выгрузки и переносим полученный файл на компьютер с толстым клиентом 1С (если для нового сервера мы используем другой компьютер с 1С).

Открываем конфигуратор для созданной в PostgreSQL базы - кликаем Администрирование - Загрузить информационную базу:

Загружаем информационную базу

. и выбираем выгруженный ранее файл. Дожидаемся его загрузки - система потребует перезапустить 1С - соглашаемся. Ждем новой загрузки. После можно пользоваться базой 1С на новом сервере.

Веб-публикации

Сервер 1С поддерживает возможность веб-публикаций баз 1С. Это дает возможность открывать программу в браузере или мобильном приложении. В Linux данные публикации осуществляются с помощью Apache.

Установка и запуск Apache

Первым делом, устанавливаем веб-сервер apache:

apt-get install apache2

Разрешаем автозапуск веб-сервера и стартуем сам сервис:

systemctl enable apache2

systemctl start apache2

Стартовая страница Apache

Публикация 1С на веб-сервере

Публикация базы выполняется с помощью скрипта webinst, который устанавливается с сервером. Для простоты, мы опубликуем базу в корневую директорию /var/www/html, но при желании, можно настроить виртуальные домены.

И так, создадим каталог, в который опубликуем нашу базу:

Переходим в каталог с установленным 1С:

* где 8.3.16.1148 — версия установленной платформы.

Заускаем скрипт для публикации базы:

./webinst -apache24 -wsdir test -dir /var/www/html/test -connstr "Srvr=192.168.1.11;Ref=test;" -confPath /etc/apache2/apache2.conf

* где apache24 — версия установленного apache; test — имя нашей базы, которую мы создали ранее; /var/www/html/test — путь до каталога на сервере, в котором будет опубликована база; 192.168.1.11 — IP-адрес сервера 1С; Ref=test — имя базы в СУБД; /etc/apache2/apache2.conf — путь до конфигурационного файла apache.

Мы решили поделиться памяткой (чеклистом) нашей команды по обновлению PostgreSQL. В ней мы взяли за основу фичи, представленные в релизе официальной документации PostgreSQL, провели анализ на предмет нарушения совместимости и кому стоит обратить внимание на обновленную функциональность.


Статья разбита на части с заголовками. Каждый заголовок относится к обновлению PostgreSQL с одной версии на другую. В рамках каждой главы мы выделили:

  • Фича
  • Риск, который может повлечь потенциальная несовместимость
    • Нарушение работы приложения
    • Падение производительности
    • Системный администратор
    • Разработчик

    Способы обновления

    • pg_upgrade — не самый надежный способ обновления PostreSQL. Например, вы можете получить ошибку при проведении REINDEX'a предыдущей версии PostgreSQL.
    • logical replication — звучит заманчиво, так как позволит свести downtime при обновлении до минимума. Но, logical replication появилось только в 10. Теоретический для этой цели можно использовать pglogical (от 2ndquadrant), он поддерживает версии от 9.4 до 12. Поэтому, если вы используете PostgreSQL<10.0, данное расширение может быть полезно.
    • pg_dumpall — проверенный способ. Недостаток — на больших БД будет большой downtime.
    • pg_dumpall --globals-only с последующим pg_dump --create . На наш взгляд, более предпочтительный метод, чем предыдущий, для обновления кластеров PostgreSQL.

    PostgreSQL 9.5 -> 9.6

    Интересная фича

    Возможность аннулирования старых снимков MVCC после настраиваемого промежутка времени (Кевин Гриттнер)

    Обычно удалённые кортежи не могут быть ликвидированы физически при очистке, пока не будет отработана последняя транзакция, в которой они могут быть видны. Транзакция, остающаяся открытой в течение долгого времени, может стать причиной значительного замусоривания таблицы, препятствуя освобождению места. Это средство позволяет задать с помощью нового конфигурационного параметра old_snapshot_threshold ограничение времени, в течение которого снимок MVCC будет гарантированно актуальным. По истечении этого времени мёртвые кортежи могут быть удалены. Транзакция, использующая просроченный снимок, получит ошибку, если она попытается прочитать страницу, которая могла бы содержать такие данные.

    Решает проблему «раздутия» БД по причине «открыл транзакцию и ушел в отпуск»; необдуманных апдейтов, которые занимают часы; долгих select как на master, так и на slave. Это одна из двух опций, благодаря которой можно будет решить проблему, из-за которой не могут перегрузить долгие запросы с master на slave.

    PostgreSQL 9.6 -> 10.0

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

    Новый декларативный синтаксис упростил партицирование таблиц.

    Изначально в 9.6 появилась поддержка параллельного выполнения больших запросов. Но она касалась только операций сканирования, join'ов и агрегаций.

    В 10.0, в свою очередь, появилась возможность параллельного выполнения:

    • B-Tree index scan
    • Bitmap scan
    • Merge joins
    • Некоррелированных подзапросов
    Более сильная защита паролей с использованием SCRAM-SHA-256

    Может быть несовместим с какими-то нестандартными (не libpq) библиотеками подключения к PostgreSQL.

    PostgreSQL 10.0 -> 11.0

    Ранее такие атрибуты базы данных, как разрешения GRANT/REVOKE уровня базы данных и назначения переменных ALTER DATABASE SET , выгружались только утилитой pg_dumpall . Теперь при выполнении pg_dump --create и pg_restore --create в дополнение к объектам базы будут восстанавливаться и такие её свойства. При этом pg_dumpall -g будет выводить только атрибуты, связанные с ролями и табличными пространствами. Содержимое полного вывода pg_dumpall (без -g ) не изменилось.

    Команды pg_dump и pg_restore без ключа --create теперь не выгружают/не восстанавливают комментарии на уровне базы и метки безопасности; эти атрибуты теперь считаются свойствами базы данных.

    При восстановлении вывода pg_dumpall теперь базы данных всегда должны восстанавливаться с исходными локалями и кодировками, и поэтому, если локаль или кодировка окажется неизвестной в целевой системе, произойдёт ошибка. Ранее команда CREATE DATABASE выдавалась без таких указаний, если локаль и кодировка базы данных не отличались от установленных по умолчанию в старом кластере.

    Добавление оператора сопоставления префиксов text ^@ text и реализация его поддержки в SP-GiST (Ильдус Курбангалиев)

    Он действует подобно конструкции переменная LIKE 'слово%' с индексом btree, но обрабатывается более эффективно.

    Поиск по префиксу встречается довольно часто. Для этого добавили специальный оператор с поддержкой специальных индексов. И что самое интересное, в официальной документации про этот оператор не сказано ни слова. Вместо него упоминается функция starts_with — внутренняя функция, на которой основан этот оператор, но её использование не дает ускорения с помощью индекса.

    Сведение выражения переменная = переменная к выражению переменная IS NOT NULL там, где они равнозначны (Том Лейн)

    Благодаря этому улучшается оценка избирательности.

    Как ни странно, встречали такую конструкцию на практике. Судя по всему, такие случаи нередки.

    Дано: Кластеры PostgreSQL 9.6.7-1.1C и 1С, где "9.6.7-1.1C" - это версия установленного старого кластера, а "10.5-24.1C" - это версия нового кластера.

    Задача: обновить 9.6.7-1.1C до 10.5-24.1C.

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

    1. Для тех, кому время не критично или базы не много весят, рекомендую сделать копии всех баз через конфигуратор 1С.

    2. Копируем файлы настроек доступа к хосту pg_hba.conf и настроек кластер postgresql.conf из C:\Program Files\PostgreSQL\9.6.7-1.1C\data в любое место, в нашем случае в D:\temp. Файлы нам понадобятся для внесения изменений в новые файлы настроек от 10.5-24.1C, если таковые у вас есть.

    3. Заходим в cmd под администратором и вводим
    C:\Program Files\PostgreSQL\9.6.7-1.1C\bin\pg_dumpall -U postgres > D:\temp\db.out

    Где db.out - файл дампа всего кластера (всех баз). Во время процесса будет запрошен пароль от пользователя PostgreSQL postgres, который вы вводили при установке 9.6.7-1.1C.

    Полученный файл будет сжат. Если у вас совсем мало места, тогда можно через команду | и gzip или 7zip заархивировать файл D:\temp\db.out.

    Рассмотрим 3 варианта обновления кластера

    I вариант через pg_dumpall и psql

    4. Останавливаем службы сервера 1С и службу от 9.6.7-1.1C

    5. Устанавливаем 10.5-24.1C (установка по умолчанию в каталог 10.5-24.1C), пароль postgres оставляем прежним для удобства. Если установка происходит на тот же самый порт, то нет необходимости менять правила брендмауэра Windows. Я заведомо не деинсталирую 9.6.7-1.1C и не удаляю файлы баз PostgreSQL, т.к. я могу в любой момент вернуться к старому кластеру и запустить его без проблем.

    Для кого-то критично место на диске, тогда следует на данном этапе деинсталировать кластер 9.6.7-1.1C и удалить файлы баз.

    6. Файлы настроек из п. 2 мы сравниваем с аналогичными файлами из в C:\Program Files\PostgreSQL\10.5-24.1C\data и переносим необходимые изменения в новый файл. Не забываем сделать копию изначальных файлов 10.5-24.1C. Если у вас не было изменений в файлах 9.6.7-1.1C, то этот пункт делать не нужно.

    7. Перезапускаем службу 10.5-24.1C, для применения новых настроек конфигурационных файлов.

    8. Заходим cmd под администратором и проходим в
    C:\Program Files\PostgreSQL\10.5-24.1C\bin\psql -U postgres -f D:\temp\db.out

    Для минимизации времени отключения кластера можно сделать следующим образом:

    - в п.5, устанавливая 10.5-24.1C мы ставим новый порт 5433 и службы кластеров должны быть запущены

    - далее в cmd запускаем:

    C:\Program Files\PostgreSQL\9.6.7-1.1C\bin\pg_dumpall -U postgres -p 5432 > D:\temp\db.out |

    C:\Program Files\PostgreSQL\10.5-24.1C\bin\psql -U postgres -p 5433 -f D:\temp\db.out

    Возможно, придется настроить брендмауэр для порта 5433

    Во время процесса восстановления периодически нужно вводить пароль от пользователя postgres.

    11. Стартуем службу сервера 1С.

    10. После восстановления необходимо сделать переиндексацию в конфигураторе 1С или с помощью команды reindex database <имя базы> или с помощью PGAdmin 4.

    Если у вас не работает PGAdmin 4, одно из решений, установить его отдельно с сайта разработчика


    Для перехода PostgreSQL с версии 9 на версию 10 недостаточно установить новые пакеты и подсунуть имеющийся каталог данных кластера.

    При обновлении основных версий Postgres Pro внутренний формат данных может меняться, что усложняет процедуру обновления. Традиционный способ переноса данных в новую основную версию — выгрузить данные из старой версии, а затем загрузить их в новую (это не самый быстрый вариант). Выполнить обновление быстрее позволяет pg_upgrade. Также для обновления можно использовать репликацию.

    В связи с тем, что у PostgresPro изменились правила лицензирования, и для свободного использования доступна лишь версия Postgres Pro Standard “для тестирования, разработки ПО, ознакомления с функциональностью СУБД, использования в образовательном процессе”, и для коммерческих целей ее использовать низя.

    Один из вариантов обновления заключается в выгрузке данных из одной основной версии Postgres Pro и загрузке их в другую — для этого необходимо использовать средство логического копирования, например pg_dumpall ; копирование на уровне файловой системы не подходит. В самом сервере есть проверки, которые не дадут использовать каталог данных от несовместимой версии Postgres Pro, так что если попытаться запустить с существующим каталогом данных неправильную версию сервера, никакого вреда не будет.

    Если попытаться запустить новый PostgreSQL со старым каталогом данных, будет вот такая ошибка:

    [38003] ВАЖНО: файлы базы данных не совместимы с сервером
    [38003] ПОДРОБНОСТИ: Каталог данных инициализирован сервером PostgreSQL версии 9.6, не совместимой с данной версией (10.9 (Ubuntu 10.9-5.1C)).

    2. Создание резервной копии данных

    Для создания копии рекомендуется применять программы pg_dump и pg_dumpall от новой версии Postgres Pro , чтобы воспользоваться улучшенными функциями, которые могли в них появиться. Хотя этот совет может показаться абсурдным, ведь новая версия ещё не установлена, ему стоит последовать, если вы планируете установить новую версию рядом со старой. В этом случае вы сможете выполнить установку как обычно, а перенести данные позже. Это также сократит время обновления.

    В данном разделе описана процедура обновления сервера PostgreSQL на новую основную версию (например, с 9.х на 11.х). Вы также можете обновиться на максимально доступную версию на момент выполнения обновления - все они обратно совместимы.

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

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

    Предполагается, что установка PostgreSql осуществлялась по этой инструкции и в систему добавлены репозитории PostgreSql, предоставляющие доступ к различным версиям PostgreSql и расширениям, а также установка производилась по этой инструкции и был установлен пакет postgresql-9.6, а не метапакет postgresql. Если у вас установлен метапакет, то обновление должно произойти автоматически при обновлении метапакета, но не факт, что оно пройдет корректно. Мы рекомендуем использовать конкретные пакеты (с указанием версии) вместо метапакетов.

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

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

    2. Проверьте, какие версии PostgreSql и PostGis у вас установлены на данный момент:

    3. Обновите текущие версии, а также, если у вас установлен PostGis 2.4, установите PostGis 2.5 и обновите это расширение в базе данных, затем убедитесь, что расширение в базе данных обновлено:

    4. Установите новую версию PostgreSql и PostGis не удаляя старой(!).

    5. Выполните запасное резервное копирование всех баз данных сервера (в данном случае будет использоваться последняя версия утилиты pg_dumpall, но база данных будет использоваться все еще прежняя):

    6. Посмотрите, как выглядят ваши кластеры. Сейчас вы должны видеть две версии, обе в состоянии онлайн:

    Вы должны увидеть таблицу:

    7. При установке PostgreSql, установщик автоматически создает кластер с конфигурацией и базами данных, чтобы можно было начинать работу с базой данных сразу же. В случае обновления это лишняя операция и кластер для 11 версии нужно удалить. Мы будем его создавать на основе кластера версии 9.6:

    8. Остановите работу службы

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

    10. Запустите процедуру создания нового кластера на основе старого (обновление версии кластера):

    11. Запустите службу:

    12. Посмотрите, как выглядят ваши кластеры:

    Теперь вы должны увидеть вот такую таблицу, в которой версия 9.6 находится в состоянии down:

    13. Проверьте версии:

    14. Запустите все службы, которые вы остановили в п.1 и проверьте работу USERSIDE и модулей. Убедитесь, что всё работает корректно.

    15. После того, как вы убедились, что всё работает корректно, можно удалить временные резервные копии, а также старые пакеты:

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