Как выполнить частичный импорт данных определённого проекта с продакшн БД MySQL?
В продакшн БД есть некоторый проект (таблица projects), из которого для проведения тестов нужно скопировать реальные аналитические данные, связанные с ним. Имеется более 7 взаимосвязанных таблиц.
В тестовой среде же имеются свои проекты и данные. В пустом проекте нужно создать данные с продакшна, сохраняя связи между таблицами.
Какие способы импорта применимы к данному случаю?
Ну тогда вариант такой: берём кусок нужного размера из самой жирной таблицы, select-им индексы, используемые во внешних ключах и по ним выгребаем из остальных таблиц. Заполнив - создаём внешние ключи.
Построить граф зависимостей связей между таблицами
Подключить 2 БД к одной программе-скрипту: БД-донор, полученная путём восстановления резервной копии с продакшна и основная БД как реципиент (обе СУБД одного типа)
Начиная с корневой таблицы проходить построчно, поочерёдно создавая новые записи, попутно заменяя первичные ключи на свежесозданные в дочерних объектах.
Изучение путей решения заняло половину рабочего дня. Ещё 1 рабочий день ушёл на написание программы и отладку.
В тестовой среде нужно только добавлять данные, ничего не уничтожая. А импорт с другой БД, как есть, невозможен, из-за того что первичные ключи у них в таблицах разные.
Дмитрий Шицков: была поставлена задача скопировать данные с продакшн для симуляции реальных данных в тестовой среде. Для этого был выбран определённый проект, у которого есть достаточно данных. Именно эти данные нужно перенести в тестовую среду, но под другим номером проекта.
Максим Тимофеев: по какому принципу приводить ключи в соответствие? У двух БД разные объёмы данных.
В продакш среде размеры таблиц 5М, 1М, 200К ну и далее по мелочи.