Подрезка данных доступна только в 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 . |