Поделитесь опытом переноса данных из бэкапа в рабочую базу

1. PerlAmutor 129 16.06.17 06:51 Сейчас в теме
Произошел сбой. Заметили не сразу. Пользователи успели за 2 дня создать новые документы, элементы справочников и т.д.
Остановили сервер, сделали копию текущей базы, развернули бэкап сделанный двумя днями ранее. Запустили бэкап как рабочую базу. Пользователи снова сделали кучу документов. Недосчитались несколько тысяч объектов из старой базы. Остановили рабочий сервер по причине того, что документы стали нумероваться заново и при переносе данных их нумерация начала совпадать. Переносили объекты обработкой "Загрузка и Выгрузка данных через XML".
Наступили на грабли. Работает крайне медленно. Нет возможности выгрузить отдельные записи регистров (например РегистрСведений.СтатусыПроверкиДокументов). В некоторых случаях создаются копии объектов. Версии объектов не переносятся,а также много много подводных камней. Косяки разгребаем уже неделю. Не обошлось без написания спец.обработок, запросов и т.п. В данном случае речь идет о ERP.
Как бы вы переносили?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 16.06.17 07:03 Сейчас в теме
(1) После того как обнаружили сбой, дожить до вечера, восстановить бэкап, и перенести ночью в него все документы и справочники за 2 дня. И только тогда дальше колотить документы.
4. PerlAmutor 129 16.06.17 08:12 Сейчас в теме
(2) на перенос всего ночи не хватило бы, по последним подсчетам мной было перенесено около 5000 документов (некоторые из них созданы автоматически, некоторые изменены, что-то создано задним числом, что-то будущим и т.п.).


(3) И это тоже. Кто-то решил подождать пока перенесут, кто-то решил не дожидаться. А кто-то решил подождать, но уже начал создавать новые документы, но они начали принимать номера тех документов, которые еще не были перенесены, но на которые уже есть подписанные печатные формы и т.д. за этим номером. Значение нумератора ведь тоже откатилось на пару дней раньше.
7. Dream_kz 129 16.06.17 09:01 Сейчас в теме
(4) А Вы единственный программист? Думаю за ночь несколько человек все же успели бы это сделать, каждый делает свою часть, благо ERP и параллельность работы должна быть на уровне.
9. PerlAmutor 129 16.06.17 09:05 Сейчас в теме
(7) Нет, мне помогал второй программист. Сидели до поздна 2 дня.
11. Dream_kz 129 16.06.17 09:13 Сейчас в теме
(9) Ну вдвоем на ERP маловато)

А вообще странно что выгрузка-загрузка XML не потянула за собой другие объекты, если ставить галку по метаданным, она тянет объекты по ссылке, есть в документе контрагент/договор, потянет и их и заменит на версии из файла.
16. herfis 498 16.06.17 10:03 Сейчас в теме
(1) Сложно давать ценные советы, как поступить после того, как сделан ряд ошибок. Озвученные проблемы легко просчитываются заранее.
В идеале надо было не пускать пользователей, пока не будут восстановлены данные. Лучше поработать сутки без перерыва, чем потом месяц выгребать последствия.
Первым делом - обязательно выгрузить и проанализировать ЖР для фиксации всех измененных за два дня объектов, для оценки глубины проблемы, составления плана и очередности устранения последствий. Ну и чтобы ничего не упустить.
Врукопашную перенести изменения справочников через универсальную обработку - вряд ли таких изменений было очень много.
Набросать собственные правила конвертации для ключевых документов, в которых справочники только ищутся по ссылкам. На одинаковых конфах это несложно, а работать будет быстро.
Если возможно - впилить в сбойную базу план обмена, обработкой зарегистрировать по нему изменения ключевых документов по выгруженному логу и выгрузить по сделанным ранее собственным правилам.
Основная идея - кровь из носу успеть закрыть самые большие дыры до запуска в базу пользователей и потом оперативно дозакрыть остальное.
17. PerlAmutor 129 16.06.17 11:26 Сейчас в теме
(16)
легко просчитываются заранее

Не согласен. Все просчитать невозможно, если нет опыта ранее.

(16)
Первым делом - обязательно выгрузить и проанализировать ЖР для фиксации всех измененных за два дня объектов

Утопия. ЖР у нас больше 70Гб в новом формате. Пытаться там отбирать что-то это еще ожиданий да несколько часов.

(16)
Врукопашную перенести изменения справочников через универсальную обработку - вряд ли таких изменений было очень много.

Так и переносил, по одному элементу выбирал и выгружал. Но как я уже сказал, связанные с этими справочниками записи регистров и другие элементы справочников - не перенеслись.

(16)
Основная идея - кровь из носу успеть закрыть самые большие дыры до запуска в базу пользователей и потом оперативно дозакрыть остальное.


Когда мы думали, что самые большие дыры были закрыты тогда и запустили пользователей, а потом выяснилось, что те же статусы проверки документов не перенеслись и народ начал эти документы активно редактировать. В общем ворох проблем.
27. slitov 7 16.06.17 17:41 Сейчас в теме
(16)
А что такое ЖР? Журнал регистрации?
19. herfis 498 16.06.17 12:31 Сейчас в теме
(17) Проблема с нумераторами лежит на поверхности и не требует никакого опыта. Достаточно потрудиться задать себе вопрос "что будет, если пользователи начнут создавать документы, когда старые еще не перенесены".
То, что ЖР у вас бесполезен и только место жрет - еще одна ваша проблема, добавляющая синергии конечному эффекту.
Со связанными записями независимых регистров сведений - согласен. Чтобы заранее понять, что "из коробки" они не перенесутся - нужен опыт и понимание принципов работы КД.
29. herfis 498 16.06.17 18:05 Сейчас в теме
22. zarucheisky 16.06.17 14:34 Сейчас в теме
(1) Если БД - серверная, то можно средствами сервера восстановить.
23. herfis 498 16.06.17 15:10 Сейчас в теме
(22) И как средство сервера называется? Правой кнопкой - "смержить базы 1С"?
24. zarucheisky 16.06.17 16:13 Сейчас в теме
(23) Средствами СУБД вполне несложно, если есть знания, время и желание.
25. herfis 498 16.06.17 16:44 Сейчас в теме
(24) Ну конечно. Что нам стоит переписать "Загрузка и Выгрузка данных через XML" на прямые запросы к БД? Было бы время и желание.
3. ZergKRSK 129 16.06.17 07:14 Сейчас в теме
Не очень понятно. Пользователи снова сделали кучу тех же самых документов? Еще и вы параллельно переносили эти же документы из бэкапа?
5. kolya_tlt 86 16.06.17 08:35 Сейчас в теме
универсальную выгрузку\загрузку возьмите. перенесите ей документы, а справочника поедут паровозом.
8. PerlAmutor 129 16.06.17 09:04 Сейчас в теме
(5) есть ссылка на обработку? Договоры и некоторые элементы справочника, которые не были привязаны к документам никуда не поехали, паровоза не получилось. Пришлось сравнивать через левое соединение UUIDы ссылок одной базы с другой через COMConnector перебором коллекции Метаданных. Если говорить о договорах, то вместе с ними никуда не поехали также и прикрепленные файлы, даже когда переносил вручную справочник прикрепленных файлов договоров, то вместе с ними тоже никуда не поехали признаки прикрепленных файлов. Пришлось выбрать запросом все такие карточки и обработкой пересохранять, чтобы они сделали движение в этот регистр.

(6)
Можно написать обработку

Хорошо, когда такая обработка есть на момент такой ситуации. А когда все на нервах и все простаивает, то писать такую обработку тяжко, но мне пришлось её писать.
10. kolya_tlt 86 16.06.17 09:09 Сейчас в теме
(8) обработка есть в шаблоне конфигурации Конвертация Данных
12. PerlAmutor 129 16.06.17 09:31 Сейчас в теме
(10) В открытом доступе её нет, но на ИТС она есть. Я так понял вы про это - https://infostart.ru/public/437183/
Мысль переноса через правила обмена интересная, надо будет попробовать.


(11)
Ну вдвоем на ERP маловато)

Как всегда строим ракету из подручных средств с минимальным расходованием ресурсов.
13. Dream_kz 129 16.06.17 09:36 Сейчас в теме
14. PerlAmutor 129 16.06.17 09:40 Сейчас в теме
(13) С помощью неё и переносили, но увы она достаточно ограничена. Даже натолкнулся на превышение максимального размера выделения оперативной памяти для процесса. Пытался выгрузить 1 позицию номенклатуры - отдельно от документов и т.д., съела 8Гб ОЗУ и висела 7 часов, не дождался убил сессию.
15. kolya_tlt 86 16.06.17 09:49 Сейчас в теме
6. ipoloskov 162 16.06.17 08:44 Сейчас в теме
Когда случился такой сбой, остановили работу, пока не были перенесены все документы. После этого запустили пользователей, и после этого обработкой перенесли справочники (только недостающие элементы). Измененных было немного, их выявили по журналу и исправили вручную. Предприятие не работало полдня.

С регистрами там такого вопроса не было. Можно написать обработку, которая:
а) переносит набор записей регистра по заданному набору измерений
б) переносит измененные наборы записей
18. MaxS 2850 16.06.17 11:35 Сейчас в теме
Чтобы понять что было изменено пользователями, можно было создать настройку обмена с максимально полным составом, потом обработкой переносить только измененные.
Одна номенклатура не может переноситься много часов. вероятно были включены флаги переносить при необходимости для всех остальных данных.
20. herfis 498 16.06.17 12:52 Сейчас в теме
Хотя сдается мне, что целевая выборка изменений ключевых справочников и документов за два дня в SQLite даже 70gb - не может занимать несколько часов. На этот формат 1С и перешла именно для ускорения работы фильтров. Хотя абсолютно зря, как по мне. Лучше бы дали возможность гибко настраивать события, фиксируемые в ЖР, чтобы всякий шлак туда не писался, вместо борьбы со следствиями и возней с SQLite. Я глубоко убежден, что первичные логи обязаны писаться исключительно в текстовые файлы, с возможностью ротации и т.п. Агрегацию можно было бы прикрутить поверх, если надо. Поэтому у меня ЖР ведется в старом формате с разделением по дням и все, кроме ошибок, я пишу туда руками через подписки.
21. v3rter 16.06.17 12:58 Сейчас в теме
Есть ещё обмен через формат json http://infostart.ru/public/308563/ но он автоматически не зацепляет связанные ссылки и выглядит незаконченным.
ipoloskov; +1 Ответить
26. v3rter 16.06.17 17:22 Сейчас в теме
Средствами СУБД это, наверное, прямым копированием средствами SQL содержимого таблиц из базы в базу. Я бы не взялся )
28. herfis 498 16.06.17 18:05 Сейчас в теме
(26) Ежели на этапе ДО запускания в базу пользователей - тогда варианты есть...
30. PerlAmutor 129 17.06.17 07:04 Сейчас в теме
Журналу Регистрации я предпочел написать обработку, которая запускается на восстановленной из бэкапа базе, которая подцепляется через COMConnector к базе откуда нужно перенести объекты, в цикле перебирая Метаданные я создаю динамические запросы к таблицам, выгружаю UUIDы ссылок во временную таблицу, затем левым соединением отсекаю все, что совпадает и остаются только ссылки на объекты, которых нет в восстановленной базе. Происходит все это достаточно быстро. Но эти объекты нужно еще и выгрузить правильно, а универсальные обработки на то и универсальные, а не специализированные для конкретных конфигураций, что и не могут знать какие и где есть неявные связи.

В таких ситуациях пригодилось бы накопительное версионирование базы на подобии git'а, чтобы можно было выгрузить версии из одной базы в другую и произвести сравнение и объединение.

Пытался разобраться с Конвертацией Данных 3 (которая не для 8.3.10), в конфигурации куча ошибок и нет возможности как в КД2 в автоматическом режиме сопоставить все объекты идентичных баз, только ручное добавление каждого отдельного объекта...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот