В кассовом ПО 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/mysq
l всех файлов и поддиректорий был пользователь 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 | логический |
| Включение системы бэкапирования | По умолчанию false |
shiftCount | числовой | Количество смен, при котором запускается бэкапирование | По умолчанию 20 | |
goodsItemCount | числовой | Количество товаров, при котором запускается бэкапирование | По умолчанию 35000 | |
restoreInterval | числовой | Интервал восстановления данных в секундах | По умолчанию 60 |
[main] ; Включает систему бэкапирования и восстановления при миграции бд ; По умолчанию false enable = false [store] ; Количество смен, при котором стартует бэкапирование. По умолчанию 20 shiftCount = 20 ; Количество товаров, при котором стартует бэкапирование. По умолчанию 35000 goodsItemCount = 35000 [restore] ; Интервал восстановления данных в секундах ; По умолчанию 60 restoreInterval = 60
Восстановление базы данных
Восстановление БД может происходить несколькими способами:
- С помощью пункта "Восстановление справочников" в сервисном меню.
- Создать дамп с другой кассы магазина и восстановить его на кассе.
Настройки доступа к серверу БД 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
являются равноправными.