Каталог решений - Ошибка загрузки большого архива 1Cv8.dt в PostgresSQL на платформе 1С 8.3.19

Ошибка загрузки большого архива 1Cv8.dt в PostgresSQL на платформе 1С 8.3.19

Ошибка загрузки большого архива 1Cv8.dt в PostgresSQL на платформе 1С 8.3.19

В наличии

1С для платформы 8.3.19 ускорили загрузку dt-файлов за счет разбивки на несколько фоновых заданий. В итоге словили ошибку блокировки при загрузке в СУБД PostgresSQL большого 1cv8.dt-файла размером 25 Gb «ERROR: canceling statement due to lock timeout». Напишу, как в итоге загрузили этот dt-файл.

Категория:

Описание

Проблемная ситуация (предыстория):

Получили новый железный сервер: СУБД PostgreSql-13.4-6.1C x64 + Сервер 1С 8.3.19.1467 х64. Нужно было перенести базы со старого сервера (там была СУБД MS SQL + 1C 8.3.16.1876). Базы переносили через dt-файлы. При загрузке dt-файлов небольшого размера до 3 Gb проблем не проявилось. Но когда решили переносить базу 1С:УПП, у которой dt-файл был размером 25 Gb, то не смогли его загрузить. По логу PostgresSQL стали анализировать ошибки. Меняли конфигурационные файлы Postgres’а, где пробовали отлючать/включать/изменять всё что знали (знаем не всё) или нашли на профессиональных форумам. Перезапускали сервис postgres’a, пробовали загрузку снова и снова, но всё равно натыкались на ошибку:

 

 

Ошибка загрузки информационной базы. В информационную базу загружены не все данные
по причине:
Конфликт блокировок при выполнении транзакции:
55P03: ERROR:  canceling statement due to lock timeout
CONTEXT:  COPY _accrgat21396, line 7000

При загрузке то таблиц субконто, то таблиц с бухгалтерскими итогами, на разных строках вылетала ошибка и загрузка dt-файла прерывалась.

Примечание: Большую часть решений по ошибкам в логах и настройках Postgres’а вы сможете найти на форумах и тут на Инфостарте (все действия, которые мы делали я тут не привожу подробно, т.к. статья не руководство по настройке и установке, а разбор конкретной проблемы с платформой 1С 8.3.19).

В итоге большее время заняли 2 ошибки: 

  • LOG: Could not rename temporary statistics file "pg_stat_tmp/global.tmp" to "pg_stat_tmp/global.stat": Permission denied — как оказалось, являлась ошибкой установленного релиза PostgreSql-13.4-6.1C_x64, которая потребовала переустановки другого релиза PostgresPro_13.5.1_64bit_Setup. Переустановили, ошибка ушла, сама она описана на форумах, решается либо патчами либо установкой подходящего релиза PostgresPro.
< 2022-01-27 21:53:59.443 MSK >LOG:  starting PostgreSQL 13.4, compiled by Visual C++ build 1800, 64-bit
< 2022-01-27 21:53:59.445 MSK >LOG:  listening on IPv4 address "0.0.0.0", port 5432
< 2022-01-27 21:53:59.575 MSK >LOG:  database system was shut down at 2022-01-27 21:53:50 MSK
< 2022-01-27 21:53:59.594 MSK >LOG:  database system is ready to accept connections
< 2022-01-27 22:04:14.761 MSK >LOG:  could not rename temporary statistics file "pg_stat_tmp/global.tmp" to "pg_stat_tmp/global.stat": Permission denied
  • ERROR:  canceling statement due to lock timeoutосновная ошибка блокировки, которую многократными манипуляциями с переконфигурированием Postgres’а нам не удавалось решить.
< 2022-01-28 18:41:29.405 MSK >СООБЩЕНИЕ:  запускается PostgreSQL 13.5, compiled by Visual C++ build 1925, 64-bit
< 2022-01-28 18:41:29.408 MSK >СООБЩЕНИЕ:  для приёма подключений по адресу IPv4 "0.0.0.0" открыт порт 5432
< 2022-01-28 18:41:29.561 MSK >СООБЩЕНИЕ:  система БД была выключена: 2022-01-28 18:41:24 MSK
< 2022-01-28 18:41:29.581 MSK >СООБЩЕНИЕ:  система БД готова принимать подключения
< 2022-01-28 18:54:48.036 MSK >ERROR:  canceling statement due to lock timeout
< 2022-01-28 18:54:48.036 MSK >CONTEXT:  COPY _accrg1375, line 1000

    Стали копать в 1С:Платформу….

    прочитали, что в новых особенностях платформы 8.3.19 есть:

    Ускорена загрузка из .dt-файла в клиент-серверном варианте информационной базы за счет использования для загрузки нескольких фоновых заданий. Для получения существенного ускорения желательно, чтобы кластер серверов и СУБД располагались на одном компьютере или чтобы кластер серверов и СУБД были связаны каналом с высокой пропускной способностью (1 Гбайт/с и выше).

    угумс…. в несколько фоновых заданиях…. это вероятно, может блокировать ресурсы, а если мы попробуем в одном… как это сделать… а вот:

    Для команды пакетного запуска конфигуратора /RestoreIB реализован параметр -JobsCount, позволяющий управлять количеством используемых фоновых заданий.

     

     

    Запустили конфигурацию с нужным ключом, для загрузки принудительно в одном потоке

    /RestoreIB "C:\MK_HOLD_12_01_2022.dt" -JobsCount 1

     

     

     

    Успех!!! dt-файл 25 Gb развернулся в базу 300 Gb …. А товарищ, резюмировал: "Опять привет от 1С, перемудрили"… 

    Коллеги, надеюсь, эта статья обратит ваше внимание на новую особенность регулирования потоков загрузки dt-файлов 1С в нескольких потоках, где-то это может и вам пригодиться.

     

    has been added to your cart:
    Оформление заказа