migrate_postgresql¶
Данная команда выполняет миграцию базы данных на новую версию PostgreSQL
Это означает, что существующие данные и схемы из текущей версии PostgreSQL будут перенесены в установленную новую версию
Зачем нужна¶
Команда переносит БД сервера RuDesktop с одной версии PostgreSQL на другую без потери данных. Это требуется при обновлении ОС, на которой версия PostgreSQL по умолчанию выше или ниже текущей, либо при плановом переходе на более свежую СУБД ради новых возможностей и поддержки
Типичные случаи применения:
обновление операционной системы (например, Astra 1.7 / РЕД ОС / Ubuntu), при котором поднимается версия PostgreSQL — старый кластер нужно перенести в новый
обновление сервера RuDesktop до новой мажорной версии, для которой минимальная версия PostgreSQL выше текущей
миграция с устаревшей версии PostgreSQL на поддерживаемую — для безопасности и совместимости
Важно
Перед миграцией обязательно сделайте резервную копию базы. Процедура миграции зависит от ОС — пошаговые инструкции по типовым окружениям приведены ниже
Синтаксис¶
rude migrate_postgresql --to [ВЕРСИЯ_POSTGRESQL]
Пример¶
В данном руководстве описывается пошаговый процесс обновления PostgreSQL с версии 11 до версии 14 на Astra Linux 1.7.x для дальнейшего обновления сервера RuDesktop до версии 2.9
Окружение стенда:
Обновление PostgreSQL с 11 до 14 версии:
Заменить содержимое файла по пути
/usr/share/rudesktop/bin/backup:#!/bin/bash -e # AS_ROOT BACKUP_FILE="$1" shift PGPASSWORD=$POSTGRES_PASSWORD pg_dump \ $POSTGRES_CONNECTION \ --verbose --compress=9 --clean --create --blobs \ --file="$BACKUP_FILE" \ "$@"Пример:
![]()
Создать бэкап БД командой:
rude backup /path/to/file.gz --no-security-labels --disable-macВажно
Вместо
/path/to/file.gzуказать полный путь, куда будет сохранен файл бэкапа с указанием названия файлаПодробнее о команде backup
Пример:
![]()
Добавить расширенный репозиторий astra-ce в файл по пути
/etc/apt/source.list:deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ceПример:
![]()
Выполнить команду по обновлению репозиториев:
apt update -yПример:
![]()
Остановить cluster PostgreSQL 11 командой:
pg_dropcluster 11 main --stopПроверить отсутствие cluster
pg_lsclustersЕсли clusters отсутствуют, появится следующее сообщение
![]()
Удалить PostgreSQL 11 командой:
apt remove postgresql-11Пример:
![]()
Важно
PostgreSQL 11 будет удалён, вместо него будет установлен PostgreSQL 14, а также будет создан новый кластер, который работает на порту 5432
В выводе терминала можно увидеть, что:
Следующие пакеты будут УДАЛЕНЫ: postgresql-11 и postgresql-client-11
Следующие НОВЫЕ пакеты будут установлены: postgresql-14 и postgresql-client-14
Проверить cluster для 14 версии PostgreSQL:
pg_lsclustersПример:
![]()
Важно
Если в
Verзначение 14, вPortзначение 5432 и вStatusзначение online, значит cluster работает и можно продолжатьВнести изменения в конфигурационный файл по пути
/etc/postgresql/14/main/pg_hba.confНайти строку:
host all all 127.0.0.0/32 md5И заменить на:
host all all 0.0.0.0/0 md5Внести изменения в конфигурационный файл по пути
/etc/postgresql/14/main/postgresql.confНайти строку:
listen_addressesВ начале строки удалить символ
#и значениеlocalhostизменить на*listen_addresses = '*'Найти строку:
max_connectionsИзменить значение на 500
max_connections = 500Перезапустить PostgreSQL командой:
systemctl restart postgresqlВыполнить инициализацию сервера RuDesktop командой:
rude initПример:
![]()
Выполнить восстановление БД командой:
rude restore /path/to/file.gzПример:
![]()
Важно
Вместо
/path/to/file.gzукажите путь до файла с бэкапомПроверить версию PostgreSQL командой:
echo "select * from version()" | rude sqlПример:
![]()
Важно
Если в выводе отображается версия 14, то сервер RuDesktop работает на новой версии PostgreSQL
Зайти в веб-интерфейс сервера RuDesktop в браузере и убедиться, что:
Веб-интерфейс открывается
Авторизация работает
Лицензия присутствует
Прочие данные восстановились после restore
Обновить сервер RuDesktop до версии 2.9 любым удобным способом по инструкции Установка\обновление сервера
В данном руководстве описывается пошаговый процесс обновления PostgreSQL с версии 12 до версии 16 на РЕД ОС 7.3.x для дальнейшего обновления сервера RuDesktop до версии 2.9
Окружение стенда:
Обновление PostgreSQL с 12 до 16 версии:
Заменить содержимое файла по пути
/usr/share/rudesktop/bin/backup:#!/bin/bash -e # AS_ROOT BACKUP_FILE="$1" shift PGPASSWORD=$POSTGRES_PASSWORD pg_dump \ $POSTGRES_CONNECTION \ --verbose --compress=9 --clean --create --blobs \ --file="$BACKUP_FILE" \ "$@"Пример:
![]()
Установить PostgreSQL 16 командой:
dnf install postgresql16-serverПример:
![]()
Запустить процесс миграции с PostgreSQL 12 до 16 версии командой:
PGCONF_OLD=/var/lib/pgsql/data/ PGCONF_OLD_OPT=/var/lib/pgsql/data/postgresql.conf PGSVC_OLD=postgresql PGBIN_OLD=/usr/bin/ PGDATA_OLD=/var/lib/pgsql/data rude migrate_postgresql --to 16Пример:
![]()
Остановить службу PostgreSQL 12 версии командой:
systemctl stop postgresql.serviceОтключить автоматический запуск службы PostgreSQL 12 версии командой:
systemctl disable postgresql.serviceДобавить маску для службы PostgreSQL 12 версии командой:
systemctl mask postgresql.serviceВажно
Необходимо для того, чтобы после перезапуска ПК, версия PostgreSQL 12 не запускалась автоматически
Данная команда делает следующее:
Создаёт символическую ссылку от файла юнита
/etc/systemd/system/postgresql.serviceна специальное устройство/dev/null. Это эффективно блокирует любой доступ к файлу юнита, предотвращая запуск службыПредотвращает автоматический и ручной запуск: служба не будет запускаться автоматически при загрузке системы, и попытки вручную запустить её с использованием
systemctl startне будут успешными, пока она замаскированаЗащищает от запуска через зависимости: другие службы или процессы, которые могли бы вызвать запуск
postgresql.serviceчерез зависимости, также не смогут этого сделатьВнести изменения в конфигурационный файл по пути
/var/lib/pgsql/16/data/postgresql.confдля PostgreSQL 16 версии:Найти строку:
listen_addressesВ начале строки удалить символ
#и значениеlocalhostизменить на*listen_addresses = '*'Найти строку:
max_connectionsЗаменить значение на 500
max_connections = 500Внести изменения в конфигурационный файл по пути
/var/lib/pgsql/16/data/pg_hba.confдля PostgreSQL 16 версии:Найти строку:
host all all 127.0.0.0/32 md5Заменить на:
host all all 0.0.0.0/0 md5Запустить службу PostgreSQL 16 версии и добавить ее в автозагрузку командой:
systemctl enable postgresql-16.service --nowПроверить статус службы PostgreSQL 16 версии командой:
systemctl status postgresql-16.serviceПодсказка
В статусе должно отображаться
active (running)Проверить версию PostgreSQL командой:
echo "select * from version()" | rude sqlПример:
![]()
Важно
Если в выводе отображается версия 16, то сервер RuDesktop работает на новой версии PostgreSQL
Зайти в веб-интерфейс сервера RuDesktop в браузере и убедиться, что:
Веб-интерфейс открывается
Авторизация работает
Лицензия присутствует
И прочее
Обновить сервер RuDesktop до версии 2.9 любым удобным способом по инструкции Установка\обновление сервера
В данном руководстве описывается пошаговый процесс обновления операционной системы Ubuntu с версии 20.04 до версии 22.04, а также обновление PostgreSQL с версии 12 до версии 14 для дальнейшего обновления сервера RuDesktop до версии 2.9
Обновление с 20 до 22 Ubuntu
Обновить текущие пакеты в системе
Откройте терминал и выполните команды для обновления всех пакетов в вашей текущей системе:
sudo apt update sudo apt upgrade sudo apt dist-upgradeЗапустить обновление ОС
Выполните следующую команду для запуска процесса обновления ОС:
sudo do-release-upgradeВажно
После обновления Ubuntu с версии 20.04 до 22.04 по умолчанию будет установлена новая версия PostgreSQL 14. Поэтому необходимо выполнить миграцию на эту версию
Просмотр доступных кластеров
Чтобы просмотреть доступные кластеры PostgreSQL, выполните следующую команду:
pg_lsclustersПодсказка
Если в списке присутствует кластер PostgreSQL версии 14, необходимо его остановить следующей командой:
sudo pg_dropcluster 14 main --stopПосле этого необходимо запустить кластер версии 12 следующей командой:
systemctl start postgresql@12-mainЗапустить процесс миграции
rude migrate_postgresql --to 14Проверка работы сервера на новой версии PostgreSQL
Чтобы убедиться, что сервер работает на новой версии PostgreSQL, выполните следующую команду:
echo "select * from version()" | rude sqlВ ответ вы получите информацию о версии PostgreSQL, например:
PostgreSQL 14.19 (Ubuntu 14.19-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0, 64-bitЕсли вы видите, что PostgreSQL работает на версии 14, это означает, что миграция прошла успешно, и вы можете перейти к обновлению сервера до версии 2.9 любым удобным способом по инструкции Установка\обновление сервера