Как увидеть различия между двумя дампами MySQL?

Вопрос:У меня есть два файла дампа MySQL. Я хочу найти разницу данных таблицы между двумя таблицами. Лучший ответ: Используйте инструмент DIFF - вот некоторые графические (оба являются бесплатными): KDIFF winmerge Ответ №1запустите mysqldump с помощью "--skip-opt", чтобы получить 2 файла дампа i.e: mysqldump --skip-opt -u $MY_USER -p$MY_PASS mydb1 > /tmp/dump1.sql mysqldump --skip-opt -u $MY_USER -p$MY_PASS

Вопрос:

У меня есть два файла дампа MySQL. Я хочу найти разницу данных таблицы между двумя таблицами.

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

Используйте инструмент DIFF – вот некоторые графические (оба являются бесплатными):

Ответ №1

запустите mysqldump с помощью “–skip-opt”, чтобы получить 2 файла дампа i.e:

mysqldump —skip-opt -u $MY_USER -p$MY_PASS mydb1 > /tmp/dump1.sql mysqldump —skip-opt -u $MY_USER -p$MY_PASS mydb2 > /tmp/dump2.sql

сравните с помощью этих опций diff:

diff -y —suppress-common-lines /tmp/dump1 /tmp/dump2 Ответ №2

Этот инструмент больше не доступен, так как веб-сайт больше не работает.

Может быть, вы можете попробовать инструмент под названием mysqldiff, я сам еще не пробовал, но он был в моем списке некоторое время.

Ответ №3

Чтобы сравнить 2 разности mysql, они должны быть выполнены определенным образом, так что порядок определен определенным образом, а не соответствующие данные опущены.

Это было в какой-то момент не совсем возможно с mysqldump, я не уверен, что это изменилось за это время.

Один хороший инструмент для работы – pydumpy https://code.google.com/p/pydumpy/ (mirror: https://github.com/miebach/pydumpy)

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

Ответ №4

Вот что я использую. Оно работает.

#!/bin/bash # Do a mysqldump of the a db, once a day or so and diff to the previous day. I want to catch when data has changed # Use the —extended-insert=false so that each row of data is on a single line, that way the diff catches individual record changes mv /tmp/dbdump0.sql /tmp/dbdump1.sql 2>/dev/null mysqldump -h dbhostname.com -P 3306 -u username -p password —complete-insert —extended-insert=false dbname > /tmp/dbdump0.sql # Ignore everything except data lines grep «^INSERT» /tmp/dbdump0.sql > /tmp/dbdump0inserts grep «^INSERT» /tmp/dbdump1.sql > /tmp/dbdump1inserts diff /tmp/dbdump1.sql /tmp/dbdump0.sql > /tmp/dbdumpdiffs r=$? if [[ 0 != «$r» ]] ; then # notifier code remove fi Ответ №5

Это было очень полезно для меня, поэтому добавлю два моих цента:

git diff —word-diff=color dump1.sql dump2.sql | less -R

Оцените статью
Добавить комментарий