Обновление кассы PostgreSQL 11 до 16 TinyCore

Публичное пространство

Обновление кассы PostgreSQL 11 до 16 TinyCore

 

Внимание!

  • Обновляйте небольшое количество касс данным инструментом за один раз: от 1 до 10.

  • Инструмент производит обновление касс с любой версии СУБД PostgreSQL на 16-ю ОС TinyCore!

Требования

  • Обновляйте кассу только при условии:

    • смена закрыта;

    • все чеки выгружены;

    • нет фонового обмена;

    • касса работает штатно;

    • есть стабильное питание;

    • есть минимум свободного места размера БД свободного места.

 

Скрипт обновления

Скачайте инструмент обновления.

 

Обновление

Подготовка

Выполняйте все шаги в строгой последовательности.

1. Проверьте, что тип ОС TinyCore

uname -a
image-20260427-121622.png

 

2. Проверьте версию PostgreSQL, что она 11-ая командой.

sudo cat /etc/sysconfig/tcedir/../pgsql/data/PG_VERSION
image-20260427-121345.png

 

3. Проверьте свободное место для обновления базы данных:

  • размер каталога pgsql должен быть свободен в 2 раза больше;

  • минимум +1 ГБ запас.

sudo df -h /etc/sysconfig/tcedir/../pgsql/
image-20260427-122027.png

 

4. Остановите кассовое программное обеспечение.

cash stop
image-20260427-122132.png

 

5. Проверьте, что отсутствуют запущенные процессы кассового ПО.

pgrep -f loader.Loader

Процессов быть не должно.

image-20260427-122228.png

 

6. Выполните команду для создание резервной копии всей СУБД.

pg_dumpall -U postgres > /mnt/backup_pg_cluster.sql
image-20260427-122759.png

 

7. Проверьте, что файл создан:

test -f /mnt/backup_pg_cluster.sql && echo "File exists" || echo "File does not exist"
image-20260427-123205.png

 

8. Скопируйте все файлы PostgreSQL 11 в резервную папку.

cp -r /etc/sysconfig/tcedir/../pgsql /mnt/pgsql_backup
image-20260427-123328.png

 

9. Проверьте корректность файла резервной копии базы данных:

head /mnt/backup_pg_cluster.sql

Содержимое файла должно быть следующее:

image-20260427-130500.png

 

10. Распакуйте и скопируйте скрипт на кассу с помощью WinSCP или SetConsole.

image-20260427-130714.png

 

11. Скопируйте upgrade_pg11_pg16_tinycore.sh распакованный скрипт в папку /home/tc.

image-20260427-135307.png

 

12. Дождитесь окончания копирования.

image-20260427-131300.png
image-20260427-135432.png

 

13. Выполните команду по установке прав.

chmod +x upgrade_pg11_pg16_tinycore.sh
image-20260427-131908.png

 

Процесс обновления

Скрипт запускаетй без команды sudo

  • внутри скрипта уже используются sudo

  • используются команды tce-load / tce-unload

  • rollback-логика рассчитана на user-context

Запуск через sudo может привести к некорректному обновлению.

 

Запустите скрипт обновления только командой (без sudo)

./upgrade_pg11_pg16_tinycore.sh
image-20260427-132056.png

Дождитесь окончания процесса.

image-20260427-132227.png

Логика работы скрипта обновления

Скрипт автоматически:

  • показывает экран обновления;

  • останавливает кассу;

  • блокирует порт PostgreSQL;

  • делает pg_dumpall;

  • останавливает PostgreSQL 11;

  • переносит старый кластер в каталог pgsql_11;

  • обновляет бинарные файлы PostgreSQL;

  • инициализирует новый кластер;

  • переносит настройки доступа;

  • запускает PostgreSQL 16;

  • восстанавливает дамп;

  • удаляет старый кластер;

  • разблокирует порт;

  • запускает кассу;

Проверка после обновления

1. Проверьте, что версия PostgreSQL = 16

psql --version
image-20260427-132450.png

 

2. Проверьте готовность базы данных командой:

pg_isready
image-20260427-132552.png

 

3. Проверьте список подлключенных баз данных

psql -U postgres -c "\l"
image-20260427-132806.png

 

4. Проверьте, что касса запущена в статусе POS Loaded: YES.

cash status
image-20260427-132947.png

 

5. Проведите тестовую продажу.

 

Статус успешного обновления

  • PostgreSQL 16 работает;

  • касса запускается;

  • тестовый чек прошел успешно;

  • обмен с сервером работает;

  • ошибки в лог-файлах отсустствуют.

 

Откат

Автоматический

Происходит автаматический откат, если ошибка произошла внутри скрипта обновления:

  • старый кластер возвращается;

  • старые бинарники возвращаются;

  • PostgreSQL 11 запускается;

  • касса запускается;

По окончании работы отката проверьте работу кассы.

 

Ручной откат

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

1. Остановите PostgreSQL:

pg_ctl stop -D /etc/sysconfig/tcedir/../pgsql/data

 

2. Удалите новый кластер:

rm -rf /etc/sysconfig/tcedir/../pgsql

 

3. Восстановите предыдущую версию PostgreSQL:

mv /etc/sysconfig/tcedir/../pgsql_11 /etc/sysconfig/tcedir/../pgsql

 

4. Верните предыдущие бинарные файлы:

tce-unload postgresql cp /etc/sysconfig/tcedir/tce/optional/backup/pg11/postgresql.tcz* \ /etc/sysconfig/tcedir/tce/optional/ tce-load -i postgresql

 

5. Запустите PostgreSQL:

pg_ctl start -D /etc/sysconfig/tcedir/../pgsql/data

 

6. Запусите кассовое ПО:

cash start

Список аварийных и критических сценариев

  • пропало питание;

  • завислов восстановление;

  • PostgreSQL не запускается;

  • нет каталога pgsql_11.

Тогда:

  • восстановите каталог из папки /mnt/pgsql_backup;

  • восстановить дамп базы данных;

  • перезагрузить кассу.