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

целочисленный
Максимальное количество объектов, которое будет удаляться за один  запрос к БД

По умолчанию 5000

Если удаляемых объектов больше, чем значение в этой настройке, то будет выполнено несколько запросов для того, чтобы не нагружать БД

[SALES_DB]





Настройки подключения к БД, в которой требуется подрезка продаж


actual_days

 целочисленный
Количество дней хранения продаж

Подрезка справочников предназначена только для БД documentsAll.

Если установить значение равное 0 или меньше, то подрезка осуществляться не будет.

Если этот параметр не указан, то будет использовано значение из параметра sales_actual_days секции [MAIN]

hostстроковый
Хост базы данных
portцелочисленный
Порт базы данных

user

строковый
Пользователь, от имени которого будет выполняться подрезка

passwd

строковый
Пароль пользователя

db

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

tables

строковый
  • alcosetitem
  • aspectitem
  • bonusitem
  • button
  • carditem
  • cashierresponse
  • client
  • consultant
  • couponitem
  • crights
  • department
  • discitem
  • document
  • failedinput
  • failedmoneyitem
  • fiscaldocument
  • gift
  • goodsitem
  • kkm
  • medicine
  • moneyitem
  • paymentitem
  • report
  • securitylog
  • stornogoodsitem
  • supplier
  • users
  • workshift

Список недоступных таблиц:

  • excisemarks
  • partialmark
  • softcheckstatus
  • certificate
Список таблиц, для которых будут подрезаться данныеНаименования таблиц перечисляются через запятую
[DICTIONARIES_DB]

Настройки подключения к БД, в которой требуется подрезка справочников. 

 actual_days целочисленный
Количество дней хранения справочников

Подрезка справочников предназначена только для БД dictionariesAll.

Если установить значение равное 0 или меньше, то подрезка осуществляться не будет.

Если этот параметр не указан, то будет использовано значение из параметра dictionaries_actual_days секции [MAIN]

hostстроковый
Хост базы данных
portцелочисленный
Порт базы данных
userстроковый
Пользователь, от имени которого будет выполняться подрезка
passwdстроковый
Пароль пользователя
dbстроковый
База данных, для которой будет осуществляться подрезкаПодрезка данных может проводиться только в одной БД
tablesстроковый
  • pendingcheck
Список таблиц, для которых будут подрезаться данные
Пример настройки
[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
  • No labels