Я импортирую 7 ГБ foobar.sql
для восстановления таблицы в локальной базе данных.
$ mysql -h localhost -u root 'my_data' < foobar.sql
$ mysql --version
/usr/local/mysql/bin/mysql Ver 14.12 Distrib 5.0.96, for apple-darwin9.8.0 (i386) using readline 5.1
Как я могу контролировать его прогресс?
Ответы:
Если вы просто импортируете из файла дампа из CLI на * nix, например,
затем сначала установите pipe viewer в вашей ОС, затем попробуйте что-то вроде этого:
который покажет индикатор выполнения при запуске программы.
Это очень полезно, и вы также можете использовать его, чтобы получить оценку прогресса mysqldump.
PV сбрасывает
sqlfile.sql
и передает их в MySQL (из-за оператора канала). Пока он сбрасывает, он показывает прогресс. Круто то, что mysql принимает данные только с той скоростью, с которой они могут их обрабатывать, поэтому pv может показать ход импорта. У меня нет никаких доказательств. Но, похоже, так. Я предполагаю, что используется некоторый буфер, но в какой-то момент я думаю,mysql
что не читает больше данных, когда он все еще занят обработкой.источник
sudo hd /dev/sda1 | less
и не хранить весь системный раздел в памяти.pv
многих случаях @snapfractalpop не будет слишком точным, поскольку для обработки некоторых частей SQL требуется больше времени, чем для других. Строка, представляющая собой простую вставку, будет выполняться намного быстрее, чем строка, которая создает индекс, например, в таблице, в которой уже есть много строк. Но, по грубому представлению о прогрессе, вывод должен быть полезен, если только используемый буфер чтения неmysql
является особенно большим (для входа 7 ГБ буфер должен быть очень большим, чтобыpv
вывод вывода вообще не был полезен.mysqldump
?Если вы уже начали импорт, вы можете выполнить эту команду в другом окне, чтобы увидеть текущий размер ваших баз данных. Это может быть полезно, если вы знаете общий размер импортируемого файла .sql.
Кредит: http://forums.mysql.com/read.php?108,201578,201578
В MySQL 8.0 Эталонные состояния следующее о точности:
источник
Когда вы выполняете mysqldump для одной базы данных, все таблицы выводятся в алфавитном порядке.
Естественно, перезагрузка mysqldump в базу данных также будет в алфавитном порядке.
Вы могли бы просто сделать ПРОЦЕСС ШОУ; и найдите соединение с БД, в котором запущен mysqldump. Когда дамп перезагружается, соединение с БД исчезнет.
Если вы хотите знать, какие таблицы находятся в дамп-файле, запустите этот файл для foobar.sql
ОБНОВЛЕНИЕ 2012-05-02 13:53 EDT
Извините, что не заметил, что есть только одна таблица.
Если таблица - MyISAM, единственный способ отслеживать это с точки зрения ОС. Причина? В течение перезагрузки таблица заблокирована от записи. Что ты ищешь? Размер
.MYD
и.MYI
файлы. Конечно, вам нужно сравнить это с тем, какой размер таблицы был раньше на другом сервере БД, с которого вы импортировали.Если таблица InnoDB и у вас включена innodb_file_per_table , единственный способ отслеживать это с точки зрения ОС. Причина? В течение перезагрузки таблица заблокирована от записи. Что ты ищешь? Размер
.ibd
файла. Конечно, вам нужно сравнить это с тем, какой размер таблицы был раньше на другом сервере БД, с которого вы импортировали.Если таблица InnoDB и у вас отключен innodb_file_per_table , даже точка зрения ОС не может помочь.
ОБНОВЛЕНИЕ 2012-05-02 13:56 ПО ВОСТОЧНОМУ ВРЕМЕНИ
В прошлом году я говорил об этом: как получить% прогресса для "type db.sql | mysql"
ОБНОВЛЕНИЕ 2012-05-02 14:09 ПО ВОСТОЧНОМУ ВРЕМЕНИ
Так как стандартная запись mysqldump блокирует таблицу следующим образом:
тогда нет никакого способа получить прогресс от mysql, пока не будет снята блокировка таблицы.
Если вы можете получить
LOCK TABLES
иUNLOCK TABLES
прокомментировать из файла дампа ...источник
.MYD
и.MYI
?Каждые 2 секунды вы увидите запущенные процессы.
Если вы хотите, чтобы это происходило реже, добавьте,
-n x
где x - количество секунд. 5 секунд будет:источник
Если вы просто хотите проверить, не остановился ли он, вы можете запросить
и посмотрим, что выполняется.
источник
Как решение для тех, кто не может заставить работать pv или для кого он лжет. Вы можете отслеживать размер файла ibdata1 в / var / lib / mysql, который содержит данные. Это приведет к тому же размеру (или около того) размера файлов на вашем исходном сервере.
Если таблиц много, вы также можете посмотреть, как они появляются одна за другой в / var / lib / mysql / <имя базы данных>.
Я случайно использовал этот факт недавно, когда долгосрочная база данных создала файл журнала около 20G в течение трех или четырех лет. Я заметил, что передача занимала много времени, и использовал эту технику для мониторинга прогресса.
Я думаю, что маловероятно, что наступит день, когда база данных не будет включать файл где-либо или другим. Между тем, вы можете отслеживать файл, чтобы увидеть, как происходит передача. Метод, который я предложил, был тем, что вы могли бы сделать в той или иной форме с момента написания первой базы данных sql. Я никогда не собирался предполагать, что это какая-то «официальная» техника, к которой может прибегнуть ручной жокей. Это предполагает общий уровень владения компьютерами в целом и Unix в частности.
источник
Если ваша БД в остальном тихая (т. Е. Не активны другие пользователи) и вы хотите просто увидеть чтение / запись, почему бы просто не сделать что-то вроде:
Вы увидите количество операций чтения / записи / вставки / ожидания / обновления.
Если вы вставляете, например, вы увидите что-то вроде:
Где 28958 - количество строк, вставленных за ваш интервал (в моем случае 10 секунд).
источник
Для того, кто ищет пример программы просмотра каналов,
mysqldump
вы просто сделаете что-то вроде этого:-W
Флаг просто говорит р ждать первых байты прийти перед показом прогресса (после приглашения)источник
Вы можете отслеживать импорт в папке \ Msql \ Data [имя БД]
источник
Хорошо, еще одна работа вокруг. Но это может быть худшим и неточным вариантом.
Тем не менее, вот мое решение для Windows:
Откройте диспетчер задач, нажав
Скопируйте "mysqld.exe" значение скорости диска
Поместите это в калькулятор, как этот: https://techinternets.com/copy_calc?do
Оцените ETA. Мой случай был:
Результаты:
источник
Я так удивлен, что никто не выложил «mysql -v» в качестве опции. Если он застрянет, выход остановится.
источник
mysql -v
не принесет результатов. Кроме того, выброс 7 ГБ данных в терминал значительно замедлит восстановление.