Итак, я сделал mysqldump
довольно огромной базы данных и сейчас пытаюсь восстановить ее, используя:
mysql db_test
но похоже, что это не закончится к концу этого года. Прошло около часа, а все еще «восстанавливается». Создание резервной копии заняло около 10 минут, поэтому я боюсь, что происходит что-то плохое.
На данный момент:
mysqld
потребляет мой процессор (иногда до 80%) . Я вижу базу данных, созданную и заполненную множеством таблиц (не не закончится к концу этого года. Прошло около часа ...
Итак, я сделал mysqldump
довольно огромной базы данных и сейчас пытаюсь восстановить ее, используя:
mysql db_test
но похоже, что это не закончится к концу этого года. Прошло около часа, а все еще «восстанавливается». Создание резервной копии заняло около 10 минут, поэтому я боюсь, что происходит что-то плохое.
На данный момент:
mysqld
потребляет мой процессор (иногда до 80%) . Я вижу базу данных, созданную и заполненную множеством таблиц (не не закончится к концу этого года. Прошло около часа ...
Итак, я сделал mysqldump
довольно огромной базы данных и сейчас пытаюсь восстановить ее, используя:
mysql db_test
но похоже, что это не закончится к концу этого года. Прошло около часа, а все еще «восстанавливается». Создание резервной копии заняло около 10 минут, поэтому я боюсь, что происходит что-то плохое.
На данный момент:
mysqld
потребляет мой процессор (иногда до 80%) . Я вижу базу данных, созданную и заполненную множеством таблиц (не m пытается восстановить его сейчас, используя:
mysql db_test
, но похоже, что он не закончится к концу этого года. Прошло около часа, а все еще «восстанавливается». Создание резервной копии заняло около 10 минут, поэтому я боюсь, что происходит что-то плохое.
На данный момент:
mysqld
потребляет мой процессор (иногда до 80%) . Я вижу базу данных, созданную и заполненную множеством таблиц (не m пытается восстановить его сейчас, используя:
mysql db_test
, но похоже, что он не закончится к концу этого года. Прошло около часа, а все еще «восстанавливается». Создание резервной копии заняло около 10 минут, поэтому я боюсь, что происходит что-то плохое.
На данный момент:
mysqld
потребляет мой процессор (иногда до 80%) . Я вижу базу данных, созданную и заполненную множеством таблиц (не
все хотя). Кроме того, когда я выполняю use db_test;
, я получаю
следующее сообщение:
Чтение информации таблицы для завершения имен таблиц и столбцов Вы можно отключить эту функцию, чтобы ускорить запуск с помощью -A
df -h
возвращает то же свободное пространство, что и раньше. Так что я полагаю, что он ничего не делает на диске. Что-то странное в том, что при проверке top
я обнаружил, что kworker
иногда потребляет до 100% процессора, чего не должно происходить
Любая идея или что-нибудь, что я мог бы сделать, чтобы увидеть, что происходит?
Похоже, что базовые диски заняты. Проблема при восстановлении большой базы данных заключается в том, что для каждой (группы) INSERT требуется операция сброса / синхронизации, которая очень медленная на механических дисках (диск со скоростью 7200 об / мин составляет порядка ~ 100 операций ввода-вывода в секунду).
восстановления, вам пришлось временно указать MySQL / MariaDB на , а не на сбрасывать / синхронизировать проблемы. Для этого прервите восстановление и отредактируйте ваш /etc/my.ini
следующими двумя строками:
innodb_flush_method = nosync
innodb_flush_log_at_trx_commit = 2
Затем перезапустите MariaDB и повторите попытку восстановления. . Теперь все должно идти намного быстрее.
После восстановления УДАЛИТЬ ВЫШЕ СТРОКИ вашей базы данных будет иметь короткую и плохую жизнь: операции сброса / синхронизации существуют по очень важным причинам. Хотя их можно отключить для восстановления, производственная база данных не должна никогда работать без них.
Если ваше основное хранилище представляет собой простые старые диски, для базы данных MySQL на 25 ГБ на диске вполне нормально провести многочасовое восстановление -особенно для некоторых плохо структурированных баз данных (много кортежей, индексов и т. д.).
Для начала сожмите дамп, что сэкономит массу операций ввода-вывода и снизит нагрузку на кэш-память:
mysqldump foo |gzip >foo.sql.gz
zcat foo.sql.gz |mysql foo
В вашем случае, поскольку вы уже выполнили mysqldump:
gzip db_test.sql
zcat db_test.sql.gz |mysql db_test
Помимо производительности вашей системы (хранилище, ОЗУ и т. д.), настройки MySQL могут иметь огромное влияние. Но это целый опыт, ничего, кроме проблемы с ServerFault ...