Подрезка данных доступна только в MySQL.
Для подрезки данных продаж и отложенных чеков в БД предназначен сервис, который входит в пакет artix-cs-db-trimmer
. Для установки пакета необходимо выполнить команду:
sudo apt-get install artix-cs-db-trimmer
Файлы сервиса размещаются в директории /opt/db-trimmer
. Настройка подрезки осуществляется в конфигурационном файле /opt/db-trimmer/config.ini
.
Секция | Описание секции | Наименование | Тип данных | Возможные значения | Описание | Примечания |
---|---|---|---|---|---|---|
[MAIN] | Основная секция для включения/выключения подрезки | sales_actual_days | целочисленный | Количество дней хранения продаж | Если установить значение равное 0 или меньше, то подрезка осуществляться не будет. Значение данного параметра может быть переопределено в секциях [SALES_DB*] параметром actual_days | |
dictionaries_actual_days | целочисленный | Количество дней хранения справочников | Если установить значение равное 0 или меньше, то подрезка осуществляться не будет. Значение данного параметра может быть переопределено в секциях [DICTIONARIES_DB*] параметром actual_days | |||
del_limit | целочисленный | Максимальное количество объектов, которое будет удаляться за один запрос к БД | По умолчанию Если удаляемых объектов больше, чем значение в этой настройке, то будет выполнено несколько запросов для того, чтобы не нагружать БД | |||
[SALES_DB] | Настройки подключения к БД, в которой требуется подрезка продаж | actual_days | целочисленный | Количество дней хранения продаж | Подрезка справочников предназначена только для БД Если установить значение равное 0 или меньше, то подрезка осуществляться не будет. Если этот параметр не указан, то будет использовано значение из параметра | |
host | строковый | Хост базы данных | ||||
port | целочисленный | Порт базы данных | ||||
user | строковый | Пользователь, от имени которого будет выполняться подрезка | ||||
passwd | строковый | Пароль пользователя | ||||
db | строковый | База данных, для которой будет осуществляться подрезка | Подрезка данных может проводиться только в одной БД | |||
tables | строковый |
Список недоступных таблиц:
| Список таблиц, для которых будут подрезаться данные | Наименования таблиц перечисляются через запятую | ||
[DICTIONARIES_DB] | Настройки подключения к БД, в которой требуется подрезка справочников. | actual_days | целочисленный | Количество дней хранения справочников | Подрезка справочников предназначена только для БД Если установить значение равное 0 или меньше, то подрезка осуществляться не будет. Если этот параметр не указан, то будет использовано значение из параметра | |
host | строковый | Хост базы данных | ||||
port | целочисленный | Порт базы данных | ||||
user | строковый | Пользователь, от имени которого будет выполняться подрезка | ||||
passwd | строковый | Пароль пользователя | ||||
db | строковый | База данных, для которой будет осуществляться подрезка | Подрезка данных может проводиться только в одной БД | |||
tables | строковый |
| Список таблиц, для которых будут подрезаться данные |
[MAIN] ; Количество дней хранения продаж. Если установить значение равное 0 или меньше, то подрезка осуществляться не будет ; ЗНАЧЕНИЕ ДАННОГО ПАРАМЕТРА МОЖЕТ БЫТЬ ПЕРЕОПРЕДЕЛЕНО В СЕКЦИЯХ [SALES_DB*] параметром actual_days sales_actual_days = 0 ; Количество дней хранения справочников. Если установить значение равное 0 или меньше, то подрезка осуществляться не будет ; ЗНАЧЕНИЕ ДАННОГО ПАРАМЕТРА МОЖЕТ БЫТЬ ПЕРЕОПРЕДЕЛЕНО В СЕКЦИЯХ [DICTIONARIES_DB*] параметром actual_days dictionaries_actual_days = 0 ; Максимальное количество объектов, которое будет удаляться за один запрос к БД ; Если удаляемых объектов больше, чем значение в этой настройке, то будет выполнено несколько запросов для того, чтобы не нагружать БД ; По умолчанию 5000 del_limit = 5000 ; Настройки подключения к БД, в которой требуется подрезка продаж [SALES_DB] ; Количество дней хранения продаж. Если установить значение равное 0 или меньше, то подрезка осуществляться не будет. ; Если этот параметр не указан, то будет взято значение из параметра sales_actual_days секции [MAIN] ;actual_days = 0 host=127.0.0.1 port=3306 user=netroot passwd=netroot db=documentsAll ; Таблицы, данные в которых требуется подрезать (названия таблиц должны указываться через запятую) ; Доступные таблицы: ; alcosetitem, aspectitem, bonusitem, button, carditem, cashierresponse, certificate, client, consultant, couponitem, crights, ; department, discitem, document, excisemarks, failedinput, failedmoneyitem, fiscaldocument, gift, goodsitem, kkm, medicine, moneyitem, ; partialmark, paymentitem, report, additionalprice, securitylog, softcheckstatus, stornogoodsitem, supplier, users, workshift tables = alcosetitem, aspectitem, bonusitem, button, carditem, cashierresponse, client, consultant, couponitem, crights, department, discitem, document, failedinput, failedmoneyitem, fiscaldocument, gift, goodsitem, kkm, medicine, moneyitem, paymentitem, report, additionalprice, securitylog, stornogoodsitem, supplier, users, workshift ; Настройки подключения к БД, в которой требуется подрезка продаж [DICTIONARIES_DB] ; Количество дней хранения справочников. Если установить значение равное 0 или меньше, то подрезка осуществляться не будет ; Если этот параметр не указан, то будет взято значение из параметра dictionaries_actual_days секции [MAIN] ;actual_days = 0 host=127.0.0.1 port=3306 user=netroot passwd=netroot db=dictionariesAll ; Таблицы, данные в которых требуется подрезать (названия таблиц должны указываться через запятую) ; Доступные таблицы: ; pendingcheck, puppetfacthistory, onlinecheck, onlinecheckpaystatus, softcheck, softcheckposition, cardChanged, clientChanged tables = pendingcheck
Если нужна подрезка разных БД или таблиц с разным значением актуальности данных, то есть возможность дублировать секции [SALES_DB]
и [DICTIONARIES_DB]
, добавляя в их названия суффиксы (например: [SALES_DB_1]
и [DICTIONARIES_DB_1]
). Для всех секций поочередно будет выполняться подрезка данных.
Скрипт подрезки данных
При подрезке данных в указанной БД и таблицах осуществляется поиск и удаление записей, старше указанного количества суток. Определение устаревших записей выполняется по полю update_time
(время создания или правки записи).
Подрезка таблиц cardChanged
и clientChanged
осуществляется по аналогии подрезки продаж. Скрипт ищет параметр id
(для cardChanged
– идентификатор операции изменения карты, для clientChanged
– идентификатор операции изменения клиента), до которого требуется удалить записи, предполагая, что идентификатор увеличивается вместе с параметром date
(датой и временем изменения), т.к. id
– автоинкрементное поле.
При необходимости запуска подрезки вручную нужно запустить скрипт /etc/cron.daily/db-trimmer
.
/opt/db-trimmer/log_db_trimmer.log
. Скрипт оптимизации данных
Для оптимизации таблиц в файловой системе в пакете artix-cs-db-trimmer
предусмотрен скрипт /opt/db-trimmer/optimize_tables.py
. Скрипт запускается вручную и предусмотрен только для запуска на той же машине, где находится СУБД. Для запуска необходимо в директории /opt/db-trimmer/
выполнить команду:
sudo python optimize_tables.py
/opt/db-trimmer/log_optimize_tables.log
.