Как сделать импорт с глобальной БД в локальную с постоянной потерей связи?
Много записей хранятся в центральной Базе данных и сгружаются в локальную каждые N часов. Проблема: кратковременная потеря связи. Когда получаю данные - то при малейшей потери связи сразу ошибка получения данных. Как можно от этого защититься?
iamdivine, Выгружать много?
Ну к примеру первый вариант выгружаем частями, допустим у нас таблица с миллионами записей мы выгружаем по сто тысяч и так с оффсетами пока все не выгрузим, если произошёл разрыв, то проверяем пока не возообновится связь и продолжаем выгружать с того же запомненного оффсета с которого и было.
Второй вариант если можно на основном сервере упаковать это все дело в файл и допустим скинуть на какой нибудь фтп сервер, то загружаем побайтово файл, если произошла ошибка ждем возообновления и продолжаем загружать.
iamdivine, Ну тогда первый вариант ставь, с бесконечный цикл чтобы выходило из него только когда все загрузит, трай кетчами оберни получение данных, первое делаем запрос получение таблиц бд, циклом проходим по каждой таблице делаем запрос на получение количества записей, и циклом получаем записи от 0 до количества записей в таблице с лимитом допустим сто тысяч и таким же шагом, это наш оффсет, ну и записываем в нашу локальную бд.
Хотя правильнее бы чтобы в основной таблице было поле типа last_change, в котором бы была дата последнего изменения и мы бы тащили не все записи, а только новые или изменные, тоесть те у которых дата больше чем дата последней синхронизации