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

Окружение стенда:

Сервер RuDesktop 2.8.1705

Обновление PostgreSQL с 11 до 14 версии:

  1. Заменить содержимое файла по пути /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" \
      "$@"
    

    Пример:

  2. Создать бэкап БД командой:

    rude backup /path/to/file.gz --no-security-labels --disable-mac
    

    Важно

    Вместо /path/to/file.gz указать полный путь, куда будет сохранен файл бэкапа с указанием названия файла

    Подробнее о команде backup

    Пример:

  3. Добавить расширенный репозиторий 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
    

    Пример:

  4. Выполнить команду по обновлению репозиториев:

    apt update -y
    

    Пример:

    Важно

    Если при выполнении команды по обновлению репозиториев возникают ошибки, проверьте время на сервере:

    date -u
    timedatectl status
    

    Пример:

  5. Остановить cluster PostgreSQL 11 командой:

    pg_dropcluster 11 main --stop
    
  6. Проверить отсутствие cluster

    pg_lsclusters
    

    Если clusters отсутствуют, появится следующее сообщение

  7. Удалить PostgreSQL 11 командой:

    apt remove postgresql-11
    

    Пример:

    Важно

    PostgreSQL 11 будет удалён, вместо него будет установлен PostgreSQL 14, а также будет создан новый кластер, который работает на порту 5432

    В выводе терминала можно увидеть, что:

    • Следующие пакеты будут УДАЛЕНЫ: postgresql-11 и postgresql-client-11

    • Следующие НОВЫЕ пакеты будут установлены: postgresql-14 и postgresql-client-14

  8. Проверить cluster для 14 версии PostgreSQL:

    pg_lsclusters
    

    Пример:

    Важно

    Если в Ver значение 14, в Port значение 5432 и в Status значение online, значит cluster работает и можно продолжать

  9. Внести изменения в конфигурационный файл по пути /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
    
  10. Внести изменения в конфигурационный файл по пути /etc/postgresql/14/main/postgresql.conf

    Найти строку:

    listen_addresses
    

    В начале строки удалить символ # и значение localhost изменить на *

    listen_addresses = '*'
    

    Найти строку:

    max_connections
    

    Изменить значение на 500

    max_connections = 500
    
  11. Перезапустить PostgreSQL командой:

    systemctl restart postgresql
    
  12. Выполнить инициализацию сервера RuDesktop командой:

    rude init
    

    Пример:

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

    rude restore /path/to/file.gz
    

    Пример:

    Важно

    Вместо /path/to/file.gz укажите путь до файла с бэкапом

  14. Проверить версию PostgreSQL командой:

    echo "select * from version()" | rude sql
    

    Пример:

    Важно

    Если в выводе отображается версия 14, то сервер RuDesktop работает на новой версии PostgreSQL

  15. Зайти в веб-интерфейс сервера RuDesktop в браузере и убедиться, что:

    • Веб-интерфейс открывается

    • Авторизация работает

    • Лицензия присутствует

    • Прочие данные восстановились после restore

  16. Обновить сервер RuDesktop до версии 2.9 любым удобным способом по инструкции Установка\обновление сервера