На случай сбоев в работе MySQL/системы формирования CDR существует способ восстановить пропущенные файлы CDR, доступные с помощью FTP.  Предварительно нужно ликвидировать проблемы и нарушения в работе сервисов, приведшие к потере данных.

Чтобы создать пропавший файл, необходимо сделать следующий запрос в рамках БД ecss_calls_db:

SELECT write_inode('<ПРОПУЩЕННЫЙ ФАЙЛ>','<ДОМЕН>','<ГРУППА>','SELECT <КОЛОНКИ, КОТОРЫЕ ДОЛЖНЫ БЫТЬ> FROM cdr WHERE domain = \'<ДОМЕН>\' AND cdr_group = \'<ГРУППА>\' AND ts BETWEEN \'<ВРЕМЯ_ОТ>\' AND \'<ВРЕМЯ_ДО>\' ORDER BY `datetime`');

SQL

Время задается в UTC.

Чтобы не допустить ошибки в форматах, лучше всего подглядеть запрос в соседних файлах:

SELECT data from tree_view where name = '<СОСЕДНИЙ ФАЙЛ>';
CODE

Нормальный код возврата функции write_inode - 0.

Примеры:

Пропали файлы CDR за 19 сентября 2020 года. Они формируются ежедневно в 00:00 по локальному времени GMT+07.

# Смотрим соседний файл
SELECT data FROM tree_view WHERE name = 'cdr_20200918_00_00_00_t.csv';
# Узнали запрос
SELECT write_inode('cdr_20200919_00_00_00_t.csv','test.domain','default','SELECT `type`,`datetime`,`kod_a`,`kod_b`,`n_tr_gr_a`,`n_tr_gr_b`,`t_ecd`,`t_dba`,`cause_isup`,`cause_int`,`completind`,`dialed_dig`,`actsusb`,`categ_a`,`place`,`rec_seq`,`servuser`,`servindic`,`treatment`,`conn_id`,`redirected`,`redirection`,`orig_called`,`src_ip`,`dst_ip`,`port_a`,`port_b`,`diagnostic` FROM cdr WHERE domain = \'test.domain\' AND cdr_group = \'default\' AND ts BETWEEN \'2020-09-17 17:00:00\' AND \'2020-09-18 17:00:00\' ORDER BY `datetime`');

SQL

Пропали файлы CDR за 4 августа 2021 года. Они формируются ежедневно в 00:00 по локальному времени GMT+07.

SELECT write_inode('cdr_bsk_ats24_20210804_00_00_00_t.csv','biysk.local','bsk', 'SELECT `type`,`datetime`,`kod_a`,`kod_b`,`n_tr_gr_a`,`n_tr_gr_b`,`t_ecd`,`t_dba`,`t_dna`,`cause_isup`,`cause_int`,`completind`,`dialed_dig`,`actsusb`,`categ_a`,`place`,`rec_seq`,`servuser`,`servindic`,`treatment`,`conn_id`,`redirected`,`redirection`,`orig_called`,`src_ip`,`dst_ip`,`port_a`,`port_b`,`media_proxy`,`diagnostic`,`codec` FROM cdr WHERE domain = \'biysk.local\' AND cdr_group = \'bsk\' AND ts BETWEEN \'2021-08-02 17:00:00\' AND \'2021-08-03 17:00:00\' ORDER BY `datetime`');

SQL

Пропали файлы CDR за 29 октября 2020 года. Они формируются каждый час.

SELECT write_inode('cdr_20201029_16_00_00_p.csv','main','one_hour','SELECT type,datetime,kod_a,kod_b,n_tr_gr_a,n_tr_gr_b,t_ecd,t_dba,t_dna,cause_isup,cause_int,completind,dialed_dig,actsusb,categ_a,place,rec_seq,servuser,servindic,treatment,conn_id,redirected,redirection,orig_called,src_ip,dst_ip,port_a,port_b,media_proxy,diagnostic,codec FROM cdr WHERE domain = \'main\' AND cdr_group = \'one_hour\' AND ts BETWEEN \'2020-10-29 12:00:00\' AND \'2020-10-29 13:00:00\' ORDER BY datetime');

SQL