Для подрезки данных продаж и отложенных чеков в БД предназначен сервис, который входит в пакет 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 или меньше, то подрезка осуществляться не будет | |
dictionaries_actual_days | целочисленный | Количество дней хранения справочников | Если установить значение равное 0 или меньше, то подрезка осуществляться не будет | |||
[SALES_DB]
| Настройки подключения к БД, в которой требуется подрезка продаж
| actual_days | целочисленный | Количество дней хранения продаж | Если установить значение равное 0 или меньше, то подрезка осуществляться не будет. Если этот параметр не указан, то будет взято значение из параметра sales_actual_days секции [MAIN] | |
host | строковый | Хост базы данных | ||||
port | целочисленный | Порт базы данных | ||||
user | строковый | Пользователь, от имени которого будет выполняться подрезка | ||||
passwd | строковый | Пароль пользователя | ||||
db | строковый | База данных, для которой будет осуществляться подрезка | Подрезка данных может проводиться только в одной БД | |||
tables | строковый |
| Список таблиц, для которых будут подрезаться данные | Наименования таблиц перечисляются через запятую | ||
[DICTIONARIES_DB] | Настройки подключения к БД, в которой требуется подрезка справочников | actual_days | целочисленный | Количество дней хранения справочников | Если установить значение равное 0 или меньше, то подрезка осуществляться не будет Если этот параметр не указан, то будет взято значение из параметра dictionaries_actual_days секции [MAIN] | |
host | строковый | Хост базы данных | ||||
port | целочисленный | Порт базы данных | ||||
user | строковый | Пользователь, от имени которого будет выполняться подрезка | ||||
passwd | строковый | Пароль пользователя | ||||
db | строковый | База данных, для которой будет осуществляться подрезка | Подрезка данных может проводиться только в одной БД | |||
tables | строковый |
| Список таблиц, для которых будут подрезаться данные |
[MAIN] ; Количество дней хранения продаж. Если установить значение равное 0 или меньше, то подрезка осуществляться не будет sales_actual_days = 61 ; Количество дней хранения справочников. Если установить значение равное 0 или меньше, то подрезка осуществляться не будет dictionaries_actual_days = 0 ; Настройки подключения к БД, в которой требуется подрезка продаж [SALES_DB] ; Количество дней хранения продаж. Если установить значение равное 0 или меньше, то подрезка осуществляться не будет. ; Если этот параметр не указан, то будет взято значение из параметра sales_actual_days секции [MAIN] actual_days = 61 host=127.0.0.1 port=3306 user=netroot passwd=netroot db=documentsAll ; Таблицы, данные в которых требуется подрезать (названия таблиц должны указываться через запятую) ; Доступные таблицы: ; aspectitem, bonusitem, button, carditem, certificate, client, couponitem, crights, department, discitem, document, goodsitem, kkm, moneyitem, paymentitem, securitylog, stornogoodsitem, users, workshift tables = bonusitem, carditem, client, couponitem, department, discitem, document, goodsitem, kkm, moneyitem, paymentitem, stornogoodsitem, 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 tables = pendingcheck
Если нужна подрезка разных БД или таблиц с разным значением актуальности данных, то есть возможность дублировать секции [SALES_DB] и [DICTIONARIES_DB], добавляя в их названия суффиксы (например: [SALES_DB_1] и [DICTIONARIES_DB_1]). Для всех секций поочередно будет выполняться подрезка данных.
Подрезка данных выполняется автоматически ежедневно. При подрезке данных в указанной БД и таблицах осуществляется поиск и удаление записей, старше указанного количества суток. Определение устаревших записей выполняется по полю update_time (время создания или правки записи).
При необходимости запуска подрезки вручную нужно запустить скрипт /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
.