Цитата: Eugin_S ➤ innodb_buffer_pool_size=14000 на новом сервере
гм.. это меньше 14 кБайт. Ничего не путаешь? У нас значение этой настройки на 32 ГБайт оперативы:
innodb_buffer_pool_size=22G
Ещё нюанс. Когда подключаешь кассу к СГО напрямую, она сливает на СГО всю историю продаж, что есть в ней (поскольку СГО ещё не получал от неё данных о продажах - только от её СМа, а это разные вещи), переписывая имеющиеся данные. Операция эта выполняется в одной транзакции, буфера памяти под которую может не хватить. Попытка впихнуть невпихуемое будет сопровождаться прерыванием операции импорта данных на СГО с откатом транзакции (а это зачастую выполняется ещё дольше, чем сам импорт) с попыткой повтора данных действий. В логах СГО будут соответствующие записи. Если это происходит, то удвой в my.ini значение переменной max_binlog_cache_size, у нас оно равно 8GB.
Если транзакции рвутся из-за проблем со связью, то поможет импорт данных с касс с разбиением на несколько транзакций. Для этого создаётся новый домен репликации данных, например, "Чеки ждут", который нереплицируется никуда и в который переносятся все чековые таблицы из домена "Чеки". Затем постерпенно из домена "Чеки ждут" одна за одной перетаскиваются таблицы обратно в домен "Чеки", следя за процессами репликации данных. Таблицы trm_out_receipt_header, trm_out_receipt_footer, trm_out_moneyoperation*, trm_out_shift*, trm_out_login, trm_out_logout должны переноситься в самую последнюю очередь и все вместе!!! чтобы "committer"-процессы сервера обработали все пришедшие чеки корректно.
Если имеется проблема с прокачкой данных через конвертеры экспорта, то на время выполнения импорта данных с касс конвертеры экспорта надо поставить в "Паузу", а по окончании загрузки данных узнай для последних закрытых смен их последние id и последние id их чеков:
Код:
SELECT h.cash_id,MAX(h.id)AS last_receipt_header,MAX(so.id)AS last_shift_closed_id
FROM trm_out_receipt_header h
INNER JOIN trm_out_shift_open so ON so.cash_id=h.cash_id AND so.id=h.shift_open
INNER JOIN trm_out_shift_close sc ON sc.cash_id=so.cash_id AND sc.id=so.id
-- WHERE cash_id IN(<cash_id1>,<cash_id2>,...,<cash_idN>)
GROUP BY h.cash_id;
Полученные значения подставь в таблицу cnv_unload_state - это журнал выгруженных конвертерами экспорта смен и чеков. Затем запусти конвертеры экспорта в автоматическом режиме. Они начнут выгружать только чеки для открытых и следующих смен, а для старых закрытых - уже не будут. Останется только выгрузить интересующие закрытые смены вручную.