Выборочно импортировать "наборы записей" из одного экземпляра mysql в другой

У меня есть сервер MySQL, на котором размещена производственная база данных, и я регулярно делаю ее снимки, которые мы также можем использовать в качестве промежуточной среды.

Иногда случаются плохие вещи, например, мы удаляем строку (и все те, что связаны с ней через внешние ключи) из производства, и после исправления плохого кода я продолжаю импортировать резервные данные.

Но, будучи новичком в операциях, я не уверен, каким будет правильный процесс.

На данный момент у меня есть скрипт, который делает что-то вроде:

  • получить строку, проиндексированную ключом K (с помощью mysqldump -w)
  • получить все строки, где row_key = K, из списка таблиц (снова с помощью mysqldump -w)
  • вставьте все эти строки в базу данных prod (с помощью mysql)

Это кажется хакерским и всегда открыто для некоторой несогласованности как в части поиска данных (например, неверный список "связанных" таблиц в моей базе данных), так и в части импорта данных (например, ограничения нарушаются, потому что базы данных "расходятся" и я должен исправить INSERT код от руки).

Есть ли правильный способ сделать такие вещи?

Я могу видеть связанные вопросы по SF, например, перемещение данных из одной базы данных MYSQL в другую, но, похоже, это связано с объединением всей базы данных или импортом всей резервной копии, а не восстановлением небольшого "автономного" фрагмента данных.

1 ответ

Решение

Нет, то, как у вас это получается, в значительной степени так и должно быть. Правильное решение проблемы - никогда не удалять данные - пометьте их как неактивные или, в худшем случае, переместите в "удаленную" таблицу. Аудиторские журналы тоже работают хорошо.

Другие вопросы по тегам