Задать вопрос
@romicohen
Системный Архитектор

А существует ли что-то типа Git для БД (MySQL) — мне нужно понять как скрипт меняет содержимое БД не копаясь в самом скрипте?

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

Ну, грубо говоря, мне нужно как-то удобным образом сравнить состояние БД до и после работы скрипта.

Есть ли какой-то удобный инструментарий на эту тему? Чтобы он сразу мне показал что и как изменилось с предыдущего чекпойнта?
  • Вопрос задан
  • 1177 просмотров
Подписаться 11 Простой 5 комментариев
Решения вопроса 1
Придется сделать 2 базы - оригинальную и после изменений.

После этого есть варианты:
Можно воспользоваться mysqldbcompare в режиме --changes-for

Или попросту сделать два дампа и сравнить их
mysqldump --skip-comments --skip-extended-insert -u user database1 > file1.txt
mysqldump --skip-comments --skip-extended-insert -u user database2 > file2.txt
diff file1.txt file2.txt


Ну или включить Audit Log в mysql и посмотреть по нему какие изменения будут вноситься.

+ https://liquibase.org/

+ Здесь в самом вопросе перечислено пяток инструментов https://stackoverflow.com/q/225772

И кажется Mysql Workbench может сравнивать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Инструмент для вашей задачи - системное версионирование, введённое в SQL:2011, ищите "system-period temporal tables" или "system-versioned tables".

К сожалению ещё не все СУБД его поддерживают, насчёт MySQL не уверен. А вот MariaDB вроде умела.
Ответ написан
ALLIGATOR
@ALLIGATOR
Возможно, вам подойдёт логирование всех запросов к базе, а не сравнение разных снэпшотов
Посмотрите описание параметра в конфиге MySQL
general_log
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы