Как я вижу различия между 2 дампами MySQL? - PullRequest
24 голосов
/ 01 октября 2010

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

Ответы [ 5 ]

8 голосов
/ 01 октября 2010

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

8 голосов
/ 25 июля 2014

запустите mysqldump с «--skip-opt», чтобы получить 2 файла дампов, например:

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
1 голос
/ 24 мая 2018

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


#!/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
1 голос
/ 16 июня 2015

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

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

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

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

1 голос
/ 01 октября 2010

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

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

...