Выборочно импортировать "наборы записей" из одного экземпляра mysql в другой
У меня есть сервер MySQL, на котором размещена производственная база данных, и я регулярно делаю ее снимки, которые мы также можем использовать в качестве промежуточной среды.
Иногда случаются плохие вещи, например, мы удаляем строку (и все те, что связаны с ней через внешние ключи) из производства, и после исправления плохого кода я продолжаю импортировать резервные данные.
Но, будучи новичком в операциях, я не уверен, каким будет правильный процесс.
На данный момент у меня есть скрипт, который делает что-то вроде:
- получить строку, проиндексированную ключом K (с помощью mysqldump -w)
- получить все строки, где row_key = K, из списка таблиц (снова с помощью mysqldump -w)
- вставьте все эти строки в базу данных prod (с помощью mysql)
Это кажется хакерским и всегда открыто для некоторой несогласованности как в части поиска данных (например, неверный список "связанных" таблиц в моей базе данных), так и в части импорта данных (например, ограничения нарушаются, потому что базы данных "расходятся" и я должен исправить INSERT
код от руки).
Есть ли правильный способ сделать такие вещи?
Я могу видеть связанные вопросы по SF, например, перемещение данных из одной базы данных MYSQL в другую, но, похоже, это связано с объединением всей базы данных или импортом всей резервной копии, а не восстановлением небольшого "автономного" фрагмента данных.
1 ответ
Нет, то, как у вас это получается, в значительной степени так и должно быть. Правильное решение проблемы - никогда не удалять данные - пометьте их как неактивные или, в худшем случае, переместите в "удаленную" таблицу. Аудиторские журналы тоже работают хорошо.