Вы можете использовать mysqldump --no-data
, если хотите экспортировать только метаданные.
Я сделал это на днях для разработчика в моей компании, который был озадачен тем, что промежуточный экземпляр их базы данных каким-то образом отличается от производственный экземпляр.
Я запустил:
mysqldump --no-data --skip-add-drop-table --skip-add-locks -h $staging_host > staging-dump.sql
mysqldump --no-data --skip-add-drop-table --skip-add-locks -h $prod_host > prod-dump.sql
Это выдает только операторы CREATE TABLE. Он пропускает любые операторы INSERT, которые содержат содержимое данных таблиц. Есть также некоторые комментарии и некоторые безобидные вещи о наборах символов. Игнорируйте их.
Я редактировал каждый файл в vim
, чтобы удалить параметры AUTO_INCREMENT из каждого создания таблицы. Конечно, они будут другими, если количество строк в таблицах будет другим. Вот команда vim
:
:%g/AUTO_INCREMENT=[0-9]* /s///
Затем укажите файлы рядом друг с другом:
diff -y staging-dump.sql prod-dump.sql > diff
В выходных данных файлы отображаются рядом друг с другом (хотя бы столько же) как это может отображаться), с односимвольным столбцом, бегущим по середине между ними. Средний столбец будет иметь |
для обозначения линий, которые отличаются, или <
для обозначения строк, которые существуют только в первом файле, или >
для обозначения строк, которые существуют только во втором файле.