В кассовом ПО Artix версии 4.6.199 реализован скрипт /linuxcash/cash/data/db/upgradeToMySQL8.sh для перехода c MySQL 5.7 на 8.0. Скрипт необходимо запустить вручную.

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

Описание таблиц БД кассы можно прочитать в разделе "База данных".

Описание структуры баз данных

База данных Artix состоит из двух баз данных MySQL. В одной из них (БД Dictionaries) хранится справочная информация товары, кассиры, карты и т.д., в другой (БД Documents) – результаты продаж, журнал действий кассира (опционально). База данных Dictionaries оптимизирована под механизмы обновления данных, информация в ней может изменяться только сервисами, которые отвечают за обновление данных. База данных Documents предназначена для надежного хранения и поддержания целостности данных о результатах продаж, информация в эту базу добавляется только кассовой программой. С целью предотвращения ситуации окончания свободного места на диске, специальным сервисом производится удаление устаревшей информации. Файлы баз данных располагаются в директории /linuxcash/cash/data/mysql. Доступ к файлам баз данных выполняется от имени пользователя mysql.

Необходимо следить за тем, чтобы владельцем директории /linuxcash/cash/data/mysql всех файлов и поддиректорий был пользователь mysql, группа mysql.

Доступ к базам данных с localhost может быть осуществлен от имени пользователя root без пароля. Для доступа с удаленного хоста используется пользователь netroot с паролем netroot.

Для удаленного подключения должен быть доступен порт MySQL 3306.

Поддержание структуры баз данных

Для поддержания структуры базы данных в актуальном состоянии используется механизм миграции базы данных. Миграция – это удобный способ поддерживать актуальность схемы базы данных всё время неизменным и простым образом. Каждую миграцию можно рассматривать как новую версию базы данных. Схема изначально ничего не содержит, а каждая миграция изменяет ее, добавляя или убирая таблицы, столбцы или записи. Подсистема миграции включена в состав пакета artix45-mysql-db, файлы находится в директории /linuxcash/cash/data/db/.

Обновление структуры базы данных выполняется автоматически при включении кассы и перезапуске кассовой программы. За запуск процесса обновления отвечает скрипт /linuxcash/cash/bin/startup/17_update_db. Подробнее о порядке загрузке читайте в разделе "Запуск кассовой программы". Такой подход позволяет поддерживать актуальность схемы баз данных и позволяет восстановить структуру после крушения.

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

Для получения информации о текущей версии базы, изменениях версии, обновлениях схемы доступны следующие команды, которые выполняются из директории /linuxcash/cash/data/db:

  • ./db_version <метафайл_базы_данных> – получение версии базы данных,
  • ./down <метафайл_базы_данных> <номер_версии> – понижение версии базы данных до заданного номера,
  • ./up <метафайл_базы_данных> <номер_версии> – увеличение версии базы данных до заданного номера,
  • ./update_db – обновление баз данных до последней версии.

Здесь метафайл_базы_данных – файл, который содержит информацию о базе данных.

Для базы данных:

  • dictionaries используется файл dic-dep,
  • documents используется файл doc-dep,
  • queues используется файл que-dep,

где номер_версии – конечный номер версии, до которой будет выполнено увеличение или понижение.

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

Бэкапирование и восстановление базы данных

Описание системы

В кассовом ПО Artix реализована система бэкапирования и восстановления данных при миграции базы Documents. Использование бэкапов обеспечивает безопасный перенос данных из старых таблиц в новые. Время блокировки кассы при миграции БД сокращается с нескольких часов до 1-2 минут благодаря тому, что процесс восстановления данных производится в фоновом режиме и не мешает работе кассы.

Система бэкапирования используется только если в применяемой миграции содержатся структурные изменения следующих таблиц БД Documents:

  • document,

  • goodsitem,

  • moneyitem.

Бэкапирование производится не для всех таблиц. Список таблиц, игнорируемых при бэкапировании:

  • documenttype,
  • goodsitemtype,
  • migrate_version,
  • moneyitemtype,
  • securityweight,
  • shmdiscounts,
  • shmdiscountsdetail,
  • Shmdiscountsdetailext,
  • shmdiscountsext,
  • shmmoneyoperations,
  • shmpositions,
  • shmpositionsstorno,
  • Shmstorno,
  • text_const.

Бэкапы сохраняются в таблицах с префиксом backup. За восстановление данных отвечает скрипт, который запускается сразу после обновления таблиц. Данные восстанавливаются блоками по 1000 записей с заданным интервалом. Информация о процессе восстановления сохраняется в файл /linuxcash/logs/current/artix_restore_data.log.

Для немедленного восстановления всех данных реализован скрипт /linuxcash/cash/data/db/restore_backup_tables_now.sh. При запуске скрипт проверяет наличие бэкапов и, если они имеются, начинает процесс немедленного восстановления с нулевым интервалом между добавлением блоков данных.

Если запустить скрипт во время автоматического процесса восстановления данных, то скрипт остановит текущий процесс и начнет восстановление с нулевым интервалом.

Информация о работе скрипта сохраняется в файл /linuxcash/logs/current/artix_restore_data.log.

Настройка системы

Настройка системы бэкапирования и восстановления осуществляется в конфигурационном файле /linuxcash/cash/data/db/artixbackup.ini.

Параметр enable включает систему:

  • при значении true – включено бэкапирование и восстановление при миграции,

  • при значении false – отключено бэкапирование и восстановление при миграции.

Параметр shiftCount определяет количество смен, при котором запускается создание бэкапов.

Параметр goodsItemCount определяет количество проданных товаров, при котором запускается создание бэкапов.

Если фактическое количество смен или товаров окажется меньше заданного в файле настроек, то бэкапирование не запустится.

Параметр restoreInterval задает интервал в секундах между восстановлением блоков данных.

НаименованиеТип данныхВозможные значенияОписаниеПримечания
enableлогический
  • true
  • false
Включение системы бэкапированияПо умолчанию false
shiftCountчисловой
Количество смен, при котором запускается бэкапированиеПо умолчанию 20
goodsItemCountчисловой
Количество товаров, при котором запускается бэкапированиеПо умолчанию 35000
restoreIntervalчисловой
Интервал восстановления данных в секундахПо умолчанию 60
Пример настройки
[main]

; Включает систему бэкапирования и восстановления при миграции бд
; По умолчанию false
enable = false

[store]

; Количество смен, при котором стартует бэкапирование. По умолчанию 20
shiftCount = 20

; Количество товаров, при котором стартует бэкапирование. По умолчанию 35000
goodsItemCount = 35000

[restore]

; Интервал восстановления данных в секундах
; По умолчанию 60
restoreInterval = 60

Восстановление базы данных

Восстановление БД может происходить несколькими способами:

  1. С помощью пункта "Восстановление справочников" в сервисном меню.
  2. Создать дамп с другой кассы магазина и восстановить его на кассе.

Настройки доступа к серверу БД MySQL

Настройки доступа к серверу БД MySQL находятся в конфигурационном файле /linuxcash/cash/conf/db.ini в секции [MysqlServer].

Наименование

Тип данных

Описание

Примечания

hostстроковыйХост сервера БДПо умолчанию localhost
portцелочисленныйПорт сервера БДПо умолчанию 3306
userстроковыйПользователь БДПо умолчанию root
passwordстроковыйПароль пользователя БДПо умолчанию без пароля
Пример настройки
[MysqlServer]
; Настройки доступа к серверу БД MySQL

; Хост сервера БД
; по умолчанию localhost
;host = localhost

; Порт сервера БД
; по умолчанию 3306
;port = 3306

; Пользователь БД
; по умолчанию root
;user = root

; Пароль пользователя БД
; по умолчанию без пароля
;password =
Пользователи netroot и root являются равноправными.
  • No labels