2 votes

MysqlDump : temps de chargement long

J'utilise mysqldump database > output.sql pour vider toutes les données d'une base de données. La taille du fichier de sortie est d'environ 3,3 Go. Je l'importe en utilisant mysql < output.sql Cependant, il fonctionne depuis plus de 24 heures et n'est toujours pas terminé.

Est-ce normal ? Existe-t-il un moyen d'accélérer l'importation ?

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)

0 votes

De plus, les tables sont InnoDB

1voto

Jon Points 1203

Je ne peux pas imaginer que cette quantité de données prenne plus d'une heure ou deux sur une machine raisonnablement moderne. J'utiliserais MySQL Administrator (trouvé dans Outils MySQL GUI ) ou mtop pour être sûr que ce n'est pas juste suspendu.

1voto

Janne Pikkarainen Points 7357

Il est probable que vos paramètres mysqld ont été réglés pour contenir des paramètres trop bas pour l'utilisation de la mémoire.

Pour les tables MyISAM, assurez-vous que vous avez réglé correctement les paramètres key_buffer_size et table_cache.

Pour les tables InnoDB, assurez-vous que vous avez bien réglé innodb_buffer_pool_size. Avec InnoDB, il peut également être utile d'envelopper les instructions d'insertion dans une transaction.

Veuillez afficher ici les résultats des commandes suivantes :

SHOW VARIABLES LIKE '%innodb%';
SHOW VARIABLES LIKE '%key_buffer%';
SHOW VARIABLES LIKE '%table%';

0 votes

Sortie ajoutée à l'article

0voto

KevinM Points 203

Avec
montrer la liste complète des processus ;
vous pouvez voir tous les processus en cours, donc s'il est toujours en train d'insérer des données, vous devriez le voir.

AFFICHER LES TABLES OUVERTES
MONTRER L'ÉTAT DE LA TABLE

Cela devrait également vous donner quelques informations. Faites un essai et montrez-nous les résultats.

Cela ne devrait pas prendre plus de 2 heures. Je suis d'accord.

0voto

Gordon Points 377

Il s'agissait en fait d'un problème d'espace disque de mon côté. Rien à voir ici.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X