2011-10-14 3 views
1

J'ai un script qui doit ajouter des données dans un dossier créé dans le dossier de données mysql et ensuite forcer le serveur mysql à recharger les données pour que la base de données s'affiche de manière fiable. J'utilise actuellement un system appel au script /etc/init.d/mysql pour redémarrer le serveur mais c'est assez lent, je ne pouvais pas trouver anyhting dans mysql qui rechargerait la base de données à travers une requête quelconque .. Je me demandais juste s'il y avait un façon de faire cela qui était légèrement plus rapide?Le moyen le plus rapide pour recharger les bases de données mysql en perl

+0

Peut-être qu'un rechargement de config fonctionnera, selon http://stackoverflow.com/questions/917865/how-do-you-refresh-the-mysql-configuration-file-without-restarting – Hugh

Répondre

1

Cela dépend du moteur de stockage que vous utilisez.

Les tables MyISAM seront rechargées automatiquement dès que la table sera touchée par MySQL (il est évident que vous devez vous assurer que les fichiers .MYI, .MYD et .frm sont cohérents).

InnoDB est un peu plus complexe, et dépend si c'est une configuration traditionnelle avec toutes les tables dans le même tablespace, ou si vous utilisez innodb_file_per_table. Avec le premier, vous devez à peu près redémarrer le serveur. Avec fichier par table, vous pouvez copier des fichiers .ibd individuels, mais vous devez utiliser une instruction ALTER TABLE pour importer cet espace table.

Voir here pour plus d'informations sur l'utilisation de fichiers .ibd individuels sans redémarrage du serveur.

This page est également utile pour voir comment déplacer des données InnoDB d'un endroit à l'autre.

+0

D'accord, ce PO ne fait pas Je ne veux pas redémarrer tout le système pour le faire et perl n'a rien à voir avec ça. – hpavc

0

Qu'entendez-vous par «assez lent»?

Vous pouvez faire une décharge/charge du nouveau db dans un nom orginal_db_name_temp, renommer le original DB, puis renommer orginal_db_name_temp-orginal_db_name - alors vous aurez votre nouveau DB en place.

Cependant, je ne sais pas quelle méthode est la plus rapide par vos moyens - car une sauvegarde & de chargement sera probablement plus lente qu'une copie de fichier. Mais renommer les DB sera probablement plus rapide que de redémarrer le serveur.

Questions connexes