MysqlDump Long Время загрузки

618
Gordon

Я использую, mysqldump database > output.sqlчтобы сбросить все данные в базе данных. Размер выходного файла составляет около 3,3 ГБ. Я импортирую его, используя, mysql < output.sqlоднако, он работал более 24 часов и до сих пор не завершен.

Это нормально? Есть ли способ ускорить импорт?

mysql> SHOW VARIABLES LIKE '%innodb%'; +-----------------------------------------+------------------------+ | Variable_name | Value | +-----------------------------------------+------------------------+ | have_innodb | YES | | ignore_builtin_innodb | OFF | | innodb_adaptive_hash_index | ON | | innodb_additional_mem_pool_size | 1048576 | | innodb_autoextend_increment | 8 | | innodb_autoinc_lock_mode | 1 | | innodb_buffer_pool_size | 8388608 | | innodb_checksums | ON | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_data_file_path | ibdata1:10M:autoextend | | innodb_data_home_dir | | | innodb_doublewrite | ON | | innodb_fast_shutdown | 1 | | innodb_file_io_threads | 4 | | innodb_file_per_table | OFF | | innodb_flush_log_at_trx_commit | 1 | | innodb_flush_method | | | innodb_force_recovery | 0 | | innodb_lock_wait_timeout | 50 | | innodb_locks_unsafe_for_binlog | OFF | | innodb_log_buffer_size | 1048576 | | innodb_log_file_size | 5242880 | | innodb_log_files_in_group | 2 | | innodb_log_group_home_dir | ./ | | innodb_max_dirty_pages_pct | 90 | | innodb_max_purge_lag | 0 | | innodb_mirrored_log_groups | 1 | | innodb_open_files | 300 | | innodb_rollback_on_timeout | OFF | | innodb_stats_on_metadata | ON | | innodb_support_xa | ON | | innodb_sync_spin_loops | 20 | | innodb_table_locks | ON | | innodb_thread_concurrency | 8 | | innodb_thread_sleep_delay | 10000 | | innodb_use_legacy_cardinality_algorithm | ON | +-----------------------------------------+------------------------+ 37 rows in set (0.12 sec)  mysql> SHOW VARIABLES LIKE '%key_buffer%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | key_buffer_size | 16777216 | +-----------------+----------+ 1 row in set (0.03 sec)  mysql> SHOW VARIABLES LIKE '%table%'; +----------------------------+----------+ | Variable_name | Value | +----------------------------+----------+ | big_tables | OFF | | innodb_file_per_table | OFF | | innodb_table_locks | ON | | lower_case_table_names | 0 | | max_heap_table_size | 16777216 | | max_tmp_tables | 32 | | old_alter_table | OFF | | sql_big_tables | OFF | | table_definition_cache | 256 | | table_lock_wait_timeout | 50 | | table_open_cache | 64 | | table_type | MyISAM | | tmp_table_size | 16777216 | | updatable_views_with_limit | YES | +----------------------------+----------+ 14 rows in set (0.00 sec) 
2
Кроме того, таблицы InnoDB Gordon 14 лет назад 0

4 ответа на вопрос

1
yalestar

Я не могу себе представить, что столько данных занимает достаточно часа или двух на достаточно современной машине. Я бы использовал MySQL Administrator (находится в MySQL GUI Tools ) или mtop, чтобы убедиться, что он не просто зависает.

1
Janne Pikkarainen

Возможно, ваши настройки mysqld были настроены так, чтобы содержать слишком низкие настройки для использования памяти.

Для таблиц MyISAM убедитесь, что у вас правильно настроены key_buffer_size и table_cache.

Для таблиц InnoDB убедитесь, что вы правильно настроили innodb_buffer_pool_size. С InnoDB также может быть полезно обернуть операторы вставки вокруг транзакции.

Пожалуйста, опубликуйте здесь вывод следующих команд:

SHOW VARIABLES LIKE '%innodb%'; SHOW VARIABLES LIKE '%key_buffer%'; SHOW VARIABLES LIKE '%table%'; 
вывод добавлен в пост Gordon 14 лет назад 0
0
Remy

С
полным списком процессов;
Вы можете видеть весь процесс, запущенный, поэтому, если он все еще вставляет данные, вы должны увидеть его.

ПОКАЗАТЬ ОТКРЫТЫЕ СТОЛЫ
ПОКАЗАТЬ СОСТОЯНИЕ СТОЛОВ

Следует также дать вам некоторую информацию. Попробуйте и покажите нам результаты.

Не должен занимать более 2 часов. Согласен.

0
Gordon

Это на самом деле оказалось проблемой дискового пространства с моей стороны. Здесь ничего нет.