MySQL резервное копирование базы данных с сервера

0

Я пишу back-end для веб-приложения весной, и он использует базу данных MySQL на экземпляре AWS RDS для отслеживания пользовательских данных. В настоящее время таблицы SQL разделяются группами пользователей (всего лишь значение в столбце), поэтому разные группы имеют различный доступ к данным. Всякий раз, когда человек, использующий приложение, выполняет определенную операцию, мы хотим создать резервную копию своей части базы данных, которую можно просмотреть позже, или заменить их данные в текущей ветке, если они захотят.

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

До сих пор все операции, которые я делаю в базе данных, - это SQL-запросы с сервера, и я хотел бы придерживаться этого.

Есть ли хороший способ сделать то, что мне нужно?

Теги:
spring

1 ответ

0
Лучший ответ

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

Что касается всего этого с запросами, вам понадобятся некоторые для просмотра или восстановления этих архивных изменений, но самый простой способ для хранения архивных записей - это, конечно же, создание TRIGGERS на основных таблицах. Если вы добавили ПЕРЕД ОБНОВЛЕНИЕМ и ПРЕЖДЕ ЧЕМ УДАЛИТЬ ТРИГГЕРЫ, они могут копировать старую версию каждой записи в архив (а также добавлять метаданные одновременно) каждый раз, когда запись обновляется или удаляется.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню