Как сравнить две большие базы данных с помощью утилит mysql

0

У меня есть два сервера баз данных, которые реплицируются в процессе репликации Master to Master. По какой-то причине репликация прекратилась. Теперь я хочу сравнить ту же базу данных, ПРИМЕР на обоих серверах для согласованности данных. Но проблема в том, что в базе данных имеется очень большая таблица. Стол имеет 60 миллион рядов. Размер данных mysql составляет 10 ГБ. Я попытался использовать команду mysqldbcompare для утилит MySQL. Эти инструменты очень хорошо работают при низком размере данных. Но в этом случае после часа подключения в конечном итоге удаляются утилиты MySQL.

Может ли кто-нибудь помочь мне в этой проблеме? Кто-нибудь анализирует большое количество данных MySQL и имеет какой-либо опыт?

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

  • 1
    Вопросы с просьбой рекомендовать или найти инструмент или другой сторонний ресурс не по теме для переполнения стека, поскольку они, как правило, привлекают взвешенные ответы
Теги:
mysqldbcompare

1 ответ

0

Ниже сценарий должен решить вашу проблему сравнения. Его divide and conquer algorithm, я подаю заявку здесь. Этот код для Windows, небольшие изменения будут работать для любой другой ОС.

В принципе, здесь ваши данные будут экспортированы за один файл таблицы, а затем сравнение будет производиться по файлу, т.е. по таблице. Это уменьшит размер данных.

mysql -h master-database -u masteruser -pmasteruser_Password masterdatabase --skip-column-names --execute='SHOW TABLES;' > tables.tmp
echo "Start!"
 while read p; do
  echo "Exporting Master" $p
  mysqldump -h master-database -u masteruser -pmasteruser_Password master_database $p > master_$p.sql
  echo "Exporting Slave" $p
  mysqldump -h slave-database -u slaveuser -pslaveuser_Password slave_database $p > slave_$p.sql
  echo "Doing Diff"
  ##I'm less familiar with this, but I believe it should work.
  mysqldiff master_$p.sql slave_$p.sql > diff_$p.sql
 done <tables.tmp

 rm tables.tmp

Надеюсь, это решит вашу проблему.

  • 0
    @HasanuzzamanSattar Хотите знать, сработало ли?
  • 0
    Большое спасибо за ваш ценный ответ. Как я могу написать скрипт в Windows и запустить? Не могли бы вы объяснить более подробную информацию о процедуре. Извините, я очень новичок в этом типе задач.
Показать ещё 5 комментариев

Ещё вопросы

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