Массовая загрузка в таблицу периодически завершается с ошибкой не удается преобразовать дату (23)
Этот вопрос поставил меня в тупик.
Я перепробовал все, что знаю, но, похоже, ничего не работает.
У меня есть огромная таблица (~2 ТБ) в Sybase IQ, которую нужно перенести на другой сервер. Это не разовое мероприятие. У нас есть обычная работа, чтобы делать это ежедневно.
Как мы это делаем:
- Экспортируйте таблицу в именованный канал, назовем его export1.
- Сжать файл с помощью lz4 и вывести в STDIN
- Передайте вывод в ssh
- Распакуйте данные и поместите их в другой именованный канал, позвольте называть его load1.
- Массовая загрузка, которая выполняется в отдельном потоке, уже смотрит на load1
В большинстве случаев это работает отлично. Но, по крайней мере, один раз в день, Bulk терпит неудачу с невозможностью преобразовать <8/9 пробелов> до даты (23) ошибка
Если мы снова отложим невыполненную задачу, она пройдет успешно.
ниже код:
-- Step 1, Load into export named pipe. Done from source host
set temporary option Temp_Extract_Name1='export10001'
set temporary option Temp_Extract_Binary='ON'
select * from abcd where 1=1
-- Step 2, 3, 4. Done from source host
lz4 -c export1 | ssh -q -p222 destinationHost "lz4 -d - >load1"
-- Step 5, into different server. Done from destination host
load table abcd (<col list>) from 'load1'
Что я пробовал:
- В настоящее время компонент в реальном времени использует netcat, я изменил его на SSH.
- Добавлен размер буфера в lz4 -B6
Оба вышеперечисленных не устранили проблему. Боюсь, я совершенно не понимаю, в чем дело.
Обратите внимание: компонент Java, запускающий все эти шаги, является многопоточным приложением. Это позволяет нам перемещать данные для более чем одной таблицы за раз. Опять же, все это работает без каких-либо проблем, за исключением одного неудачного запуска, когда одна таблица загрузки не работает.
Этот периодический сбой всегда дает сбой, когда несколько нагрузок работают параллельно.
Кто-нибудь может указать, что потенциально могло вызвать это? Вспышки сети? Потеря пакетов? И что нужно делать, чтобы этого избежать?
Есть ли лучший способ справиться с этим типом перемещения данных?