2014-09-04 3 views
0

J'ai travaillé sur un projet impliquant Mysql et PHP. Lors de la création package pour les tests i ont exporté la base de données MySQL en tant que fichier sql de MySql Workbench et importés dans le serveur mysql de la machine linux avecQuelle est la meilleure pratique pour exporter et importer la base de données mysql?

mysql>source mydatabase.sql; 

est-ce la bonne façon d'exporter et base de données import mysql ?. Et le fichier de base de données contient également la création de schéma, l'insertion de données et la création de scripts d'index. L'importation prend beaucoup de temps avec ce fichier. Mon gestionnaire immédiat me propose d'exporter sans index et d'importer la base de données, puis d'exécuter des scripts de création d'index. Est-ce la bonne façon? Les index prennent-ils beaucoup de temps lors de l'importation de la base de données?

Merci d'avance!

+0

Il me semble que de toute façon, votre temps sera consommé avec l'indexation de la table. En tout cas, cela semble être correct.Vous seul autre alternative serait de faire un SELECT dans une autre base de données. Cela peut ou peut même ne pas être possible. Mais cela devrait gagner du temps. – durbnpoisn

Répondre

1

L'exportation dépend de la version/du vendeur MySQL que vous utilisez!

  • MySQL (versions plus anciennes) - utilise mysqldump
  • MySQL (Percona) - utilise XtraBackup
  • MySQL (EE - 5.6) - utilise MySQL Enterprise Backup qui est plus complexe et beaucoup plus rapide.

Le moyen le plus rapide est d'éviter mysqldump. J'aime Percona plus que les autres!
Une autre façon, mais plus avancée je pense est de créer la base de données sur le serveur de destination, et copier les fichiers de base de données directement. En supposant que l'utilisateur a accès au répertoire mysql du serveur de destination:
En tant qu'utilisateur root:

[[email protected]]# /etc/init.d/mysqld stop 
[[email protected]]# cd /var/lib/mysql/[databasename] 
[[email protected]]# scp * [email protected]:/var/lib/mysql/[databasename] 
[[email protected]]# /etc/init.d/mysqld start 

choses importantes ici sont les suivantes: Arrêtez mysqld sur les deux serveurs avant de copier les fichiers DB, assurez-vous que la propriété des fichiers et les autorisations sont correctes sur la destination avant de démarrer mysqld sur le serveur de destination.

[[email protected]]# chown mysql:mysql /var/lib/mysql/[databasename]/* 
[[email protected]]# chmod 660 /var/lib/mysql/[databasename]/* 
[[email protected]]# /etc/init.d/mysqld start 

Avec le temps être votre priorité ici, l'utilisation de la compression dépendra si le temps perdu en attente de compression/décompression (avec quelque chose comme gzip) sera supérieure à la perte de temps de transmission des données non compressées; c'est-à-dire, la vitesse de votre connexion. Est livré avec un outil mysqldump modifié de sorte que vous pouvez choisir l'option --innodb-optimize-keys

1

Cela exporte les tables, les données et les définitions d'index comme stock mysqldump, mais lors de l'importation, il retarde la création d'index secondaires jusqu'à après les données ont été chargées dans la table. Cela tire parti de la fonctionnalité fast index creation d'InnoDB.

Une autre option consiste à utiliser un outil de sauvegarde physique, tel que Percona XtraBackup (en tant qu'utilisateur @Up_One) mentionné. Cela signifie que les fichiers de données complets sont sauvegardés, y compris les index. Lors de la restauration, rien ne doit être reconstruit, car les index sont déjà remplis. Il y a des avantages et des inconvénients à utiliser des outils de sauvegarde physique aussi, mais le temps de restauration est un gros avantage.

Questions connexes