2010-03-25 5 views
6

Je sais qu'un vidage SQL est une série d'instructions SQL d'insertion qui reflètent tous les enregistrements dans la base de données. Mais à quoi sert-il? Pourquoi devrions-nous vider les enregistrements de la base de données? Chaque base de données prend-elle en charge une fonction de dumping?À quoi sert sql-dump?

Répondre

14

Assez étrangement, c'est en fait la manière habituelle de sauvegarder une base de données. La copie des fichiers eux-mêmes qui contiennent réellement les données n'est pas la méthode de sauvegarde habituelle, pour diverses raisons complexes.

Toutes les bases de données fonctionnent de cette façon, ou du moins je n'en ai jamais entendu parler: elles ont toutes la possibilité d'exporter un tas de code SQL qui, lorsqu'il est exécuté, recréera la base de données dans le même état c'était quand la décharge a été commencée.

Toutefois, ces différents formats sont généralement incompatibles, en raison de différences subtiles entre les différents dialectes de SQL utilisés par les différents systèmes de base de données. Il y a des utilitaires qui peuvent convertir entre certains d'entre eux, mais je ne suis au courant d'aucun 'Rosetta Stone' qui gère tous les cas possibles.

En plus d'être la principale méthode de sauvegarde d'une base de données, cette technique est également utile pour mettre en scène les données des applications db entre différents serveurs, du développement au test en passant par la production.

2

mysqldump produit une représentation SQL des données pour une ou plusieurs tables ou bases de données. Comme le format est SQL, il fonctionnera sur n'importe quel autre serveur MySQL, indépendamment de l'architecture ou de la version majeure/mineure (évidemment, les vues ne fonctionneront pas sur 4.x etc. mais il est principalement compatible avec les versions antérieures).

Il existe un autre outil, mysqlhotcopy, mais comme cet outil génère des fichiers binaires, ils sont liés à la machine sur laquelle ils ont été générés et ne peuvent pas être utilisés ailleurs. SQL a l'avantage de fonctionner sur n'importe quel serveur MySQL, et d'être indépendant du mécanisme de stockage de fichiers sous-jacent de la (des) base (s) de données.

Les deux principaux cas d'utilisation pour le dumping SQL sont:

  • Sauvegarde des données de base de données. Le code SQL peut être lu ("lu") sur un serveur de base de données vide et il va recréer les tables et les remplir avec des lignes.
  • Migration des données vers un autre serveur. Supposons que vous passiez de MySQL 5.0 à 5.1. Vous avez deux machines. Vous utilisez mysqldump pour produire un vidage SQL sur la machine 5.0, et le nourrir dans le 5.1.

Il existe des utilisations moins courantes. Par exemple, l'instantané SQL de la base de données de votre application peut être pris pour un test unitaire par rapport à un état connu. Il est également possible de transformer le code SQL en un autre dialecte, par ex. PostgeSQL ou SQLite, pour transférer vos données vers une autre base de données.

Vous avez demandé si d'autres bases de données offrent une fonctionnalité de vidage SQL. La réponse est oui dans presque tous les cas. PostgreSQL fournit pg_dump, SQLite a une commande .dump, etc.