Как далеко продвинется импорт моего дампа MySQL?

В моей компании мы иногда импортируем большие клиентские базы данных MySQL (более 40 ГБ), которые могут загружаться на наших машинах разработчиков в течение дня. Хотя мы принимаем это время загрузки, поскольку оно выполняется в фоновом режиме, у нас нет какой-либо надежной возможности оценить, когда импорт завершится. Это блокирует нас от планирования соответствующего времени, чтобы действовать в соответствии с этим. Это все равно, что ждать появления кабельного парня.

Сейчас моя лучшая стратегия - это быстрый show tables Команда, чтобы увидеть, какой процент таблиц были загружены. Однако, поскольку размеры таблиц сильно различаются как между собой, так и с каждым клиентом, это даже близко не является надежным.

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

3 ответа

Решение

Вы можете сделать это с pv Команда, отправив дамп в mysql,

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

Он покажет вам индикатор выполнения во время выполнения импорта на основе пропускной способности ввода-вывода. (Как видно здесь.)

HeidiSql скажет вам, сколько ГБ уже загружено, что очень полезно при попытке выяснить, сколько еще нужно загрузить.

Вы также можете сделать show processlist в исходной базе данных, чтобы увидеть, как далеко (с помощью автоматического увеличения идентификатора) в конкретной таблице экспорт. Эрик отмечает, что вы можете контролировать размер каталога данных базы данных по сравнению с размером источника.

Что-то, что я нашел полезным в ускорении дампов / импортов, - это делать это по таблицам, а затем запускать несколько mysqldumps одновременно, по существу, многопоточность вашего процесса. Я обычно делал около 4 отдельных дампов / восстановлений одновременно. Оптимальное количество будет зависеть от вашего оборудования и дисковых возможностей.

Очень упрощенный пример, чтобы дать вам идею:

mysqldump dbname table1 table2 table3 | mysql -h host &
mysqldump dbname table4 table5 table6 | mysql -h host &
mysqldump dbname table7 table8 table9 | mysql -h host &
Другие вопросы по тегам