Question

  

Possible en double:    Accélération des décharges mysql et les importations

mysqldump est raisonnablement rapide, mais les décharges d'une base de données de taille moyenne (20-30 mégas) prendre plusieurs minutes pour charger en utilisant mysql my_database < my_dump_file.sql

Y a-t-il des paramètres mysql je peux régler pour accélérer la charge? Y at-il une meilleure façon de charger les données sauvegardées?

Je l'ai expérimenté à l'aide de l'utilitaire mysqlimport avec des décharges à base CSV. Ces charges légèrement - mais pas de façon appréciable - plus rapide. Je suis tenté de simplement copier les fichiers de base de données brutes autour, mais cela semble être une mauvaise idée.

Était-ce utile?

La solution

maatkit - vidage parallèle

et

maatkit - restauration parallèle

Très rapide.

Autres conseils

En supposant que vous utilisez InnoDB ...

Je suis dans la situation d'avoir un tas de fichiers de sortie de mysqldump existants que je voulais importer dans un délai raisonnable. Les tableaux (un par file) étaient d'environ 500 Mo et contenaient environ 5 millions de lignes de données chacun. En utilisant les paramètres suivants, j'ai pu réduire le temps d'insertion de 32 minutes à moins de 3 minutes.

  

innodb_flush_log_at_trx_commit = 2
  innodb_log_file_size = 256M
  innodb_flush_method = O_DIRECT

Vous aurez également besoin d'avoir un cadre de innodb_buffer_pool_size assez grande.

Parce que mes inserts étaient une seule fois je revins les réglages par la suite. Si vous allez continuer à les utiliser à long terme, assurez-vous que vous savez ce qu'ils font.

J'ai trouvé la suggestion d'utiliser ces paramètres sur blog de Cédric Nilly et l'explication détaillée pour chacun des paramètres se trouve dans le documentation MySQL .

Assurez-vous que vous utilisez l'option --opt à mysqldump lorsque le dumping. Cela utilisera la syntaxe d'insertion en bloc, les mises à jour clés, retarder etc ...


Si vous utilisez uniquement les tables MyISAM , vous pouvez en toute sécurité les copier en arrêtant le serveur, de les copier sur un serveur arrêté, et à partir que.

Si vous ne voulez pas arrêter le serveur d'origine, vous pouvez suivre ceci:

  1. Obtenir un verrou de lecture sur toutes les tables
  2. Rincer toutes les tables
  3. Copiez les fichiers
  4. Déverrouiller les tables

Mais je suis sûr que votre copie au serveur doit être arrêté quand vous les mettez en place.

Êtes-vous sûr que les données est sain d'esprit, et il n'y a pas de problèmes de performance ou système de fichiers système? Plusieurs minutes pour une base de données de 20-30 meg est long. Je suis sur un MacBook avec 2 Go de RAM, un HD 320 Go et le processeur standard 2.1GHz. Je saisis l'une de mes bases de données pour une référence rapide:

gavinlaking$ du -sm 2009-07-12.glis
74  2009-07-12.glis
gavinlaking$ mysql -pxxx -e "drop database glis"
gavinlaking$ mysql -pxxx -e "create database glis"
gavinlaking$ time mysql -pxxx glis < 2009-07-12.glis 

real    0m17.009s
user    0m2.021s
sys 0m0.301s

17 secondes pour un fichier 74 méga-octets. Cela me semble assez accrocheurs pour. Même si elle était 4 fois plus grand (ce qui en fait un peu moins de 300 méga-octets), il se termine en moins de 70 secondes.

Essayez https://launchpad.net/mydumper - sauvegarde mysql multi-thread / restauration qui est 3x à 10x fois plus rapide que mysqldump http://vbtechsupport.com/1695/

Il existe une méthode pour l'utilisation des instantanés de LVM pour la sauvegarde et de restauration qui pourrait être une option intéressante pour vous.

Au lieu de faire un mysqldump, pensez à utiliser pour prendre des instantanés LVM de vos répertoires de données MySQL. Utilisation d'instantanés de LVM vous permettent d'avoir une capacité de sauvegarde en temps réel presque, le soutien à tous les moteurs de stockage et de récupération incroyablement rapide. Pour citer le lien ci-dessous,

« Le temps de récupération est aussi rapide que mettre des données en arrière et de récupération par accident MySQL, et il peut être réduit encore plus loin. »

http: //www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top