Isso acabou sendo um problema de espaço em disco do meu lado. Nada para ver aqui.
Estou usando mysqldump database > output.sql
para despejar todos os dados em um banco de dados. O tamanho do arquivo de saída é de cerca de 3,3 GB. Estou importando-o usando mysql < output.sql
, mas ele está em execução há mais de 24 horas e ainda não foi concluído.
Isso é normal? Existe alguma maneira de acelerar a importação?
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)
Não consigo imaginar muitos dados levando mais de uma ou duas horas em uma máquina razoavelmente moderna. Eu usaria o MySQL Administrator (encontrado em MySQL GUI Tools ) ou mtop para se certificar de que não está apenas pendurado.
Provavelmente suas configurações do mysqld foram ajustadas para conter configurações muito baixas para uso de memória.
Para tabelas MyISAM, certifique-se de ter key_buffer_size e table_cache devidamente ajustado.
Para tabelas InnoDB, certifique-se de ter o innodb_buffer_pool_size devidamente ajustado. Com o InnoDB, também pode ser útil incluir as instruções insert em torno de uma transação.
Por favor, poste aqui a saída dos seguintes comandos:
SHOW VARIABLES LIKE '%innodb%';
SHOW VARIABLES LIKE '%key_buffer%';
SHOW VARIABLES LIKE '%table%';
Com o
mostre a lista de processos completa;
você pode ver todo o processo em execução, por isso, se ainda estiver inserindo dados, você deverá vê-lo.
SHOW ABRIR TABELAS
SHOW TABLE STATUS
Também deve dar algumas informações. Experimente e mostre os resultados.
Não deve demorar mais de 2 horas. Eu concordo.