Services webmasters
Partenaires
Jeux concours gratuits
 
Utiliser mysqlcheck pour l'entretien et la réparation
<<<
mysqldump , exporter les structures de tables et les données mysqlhotcopy , copier les bases et tables MySQL
>>>

4.8 MySQL Scripts clients et utilitaires
4 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française

Présentation des scripts serveurs et utilitaires
mysql , l'outil en ligne de commande
mysqladmin , administrer un serveur MySQL
Utiliser mysqlcheck pour l'entretien et la réparation
->mysqldump , exporter les structures de tables et les données
mysqlhotcopy , copier les bases et tables MySQL
mysqlimport , importer des données depuis des fichiers texte
Afficher les bases, tables et colonnes
perror , expliquer les codes d'erreurs
Comment exécuter des commandes SQL depuis un fichier texte

4.8.5 mysqldump , exporter les structures de tables et les données

Utilitaire qui permet d'exporter une base ou un groupe de bases vers un fichier texte, pour la sauvegarde ou le transfert entre deux serveurs (pas nécessairement entre serveurs MySQL). L'export contiendra les requêtes SQL nécessaires pour créer la table et la remplir.

Si vous faîtes une sauvegarde du serveur, vous devriez aussi utiliser la commande mysqlhotcopy . mysqlhotcopy , copier les bases et tables MySQL .

shell> mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
Si vous ne spécifiez pas de table, ou si vous utilisez l'option --databases ou --all-databases , la base de données complète sera exportée.Vous pouvez obtenir une liste des options valides pour votre version de mysqldump avec la commande mysqldump --help .

Notez que si vous exécutez mysqldump sans l'option --quick ou --opt , mysqldump va charger la totalité du résultat en mémoire, avant de l'écrire. Cette option peut résoudre des problèmes de mémoire si vous exportez de grosses tables.

Notez que si vous utilisez une nouvelles copie du programme mysqldump , et que vous allez faire un export qui sera lu dans une vieille version de MySQL, vous ne devriez pas utiliser les options --opt et -e .

mysqldump supporte les options suivantes :

    --add-locks
    Ajoute une commande LOCK TABLES avant l'export de table et une commande UNLOCK TABLE après(Pour accélérer les inserionts dans MySQL).
    --add-drop-table
    Ajoute une commande drop table avant chaque requête de création de table.
    -A, --all-databases
    Exporte toutes les tables. C'est l'équivalent de l'option --databases avec toutes les bases de données sélectionnées.
    -a, --all
    Inclut toutes les options de créations de table spécifiques à MySQL.
    --allow-keywords
    Permet la création de colonnes ayant des noms de mots réservés. Cela fonctionne en préfixant chaque nom de colonne avec le nom de la table.
    -c, --complete-insert
    Utilise une commande complète d'insertion (avec les noms des colonnes).
    -C, --compress
    Compresse toutes les informations entre le client et le serveur, les deux supporte la compression.
    -B, --databases
    Pour exporter plusieurs bases de données. Notez la différence d'utilisation. Dans ce cas, aucune table n'est spécifié. Tous les arguments de noms sont considérés comme des noms de base. Une ligne USE db_name; sera ajoutée dans l'export avant chaque base de données.
    --delayed
    Les insertions se font avec la commande INSERT DELAYED .
    -e, --extended-insert
    Utilise la nouvelle syntaxe multi-ligne INSERT . (Cela donne des insertions plus courtes et plus efficaces).
    -#, --debug[=option_string]
    Trace l'utilisation du programme (pour le débogage).
    --help
    Affiche le message d'aide et quitte.
    --fields-terminated-by=...
    --fields-enclosed-by=...
    --fields-optionally-enclosed-by=...
    --fields-escaped-by=...
    --lines-terminated-by=...
    Ces options sont utilisées avec l'option -T et ont la même signification que les clauses correspondantes de la commande LOAD DATA INFILE . Syntaxe des LOAD DATA INFILE .
    -F, --flush-logs
    ƒcrit tout le fichier de log du serveur avant de commencer l'export.
    -f, --force,
    Continue même si une erreur SQL survient durant l'export.
    -h, --host=..
    Exporte les données depuis le serveur MySQL vers l'hôte indiqué. L'hôte par défaut est localhost .
    -l, --lock-tables.
    Verrouille toutes les tables avant de commencer l'export. Les tables sont verrouillées avec READ LOCAL pour permettre des insertions concurentes sur les tables MyISAM .

    Notez que lorsque vous exportes des tables de bases différentes, l'option --lock-tables va verrouiller chaque base séparément. Cette option ne vous garantira pas que vos tables seront logiquement cohérente entre les bases. Des tables de différentes bases pourraient être exportées dans des états très différents.

    -K, --disable-keys
    /*!40000 ALTER TABLE tb_name DISABLE KEYS */; et /*!40000 ALTER TABLE tb_name ENABLE KEYS */; seront ajoutés dans le résultat. Cela rendra les chargements de données plus rapides sur les serveurs MySQL 4.0 car les index sont alors créés après l'insertion de toutes les données.
    -n, --no-create-db
    CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; ne sera pas ajouté dans l'export. Sinon, la ligne ci-dessus sera ajoutée, si l'une des options --databases ou --all-databases ont été activée.
    -t, --no-create-info
    N'écrit pas les informations de création de table (la requête CREATE TABLE ).
    -d, --no-data
    N'écrit aucune ligne d'informations sur la atble. C'est très pratique si vous voulez simplement exporter la structure de la table.
    --opt
    Identique à --quick --add-drop-table --add-locks --extended-insert --lock-tables . Vous obtiendrez l'export le plus rapide à importer dans un serveur MySQL.
    -pyour_pass, --password[=your_pass]
    Le mot de passe à utiliser lors de la connexion au serveur. Si vous spécifiez en omettant la partie '=your_pass' , mysqldump vous demandera le mot de passe en ligne de commande.
    -P port_num, --port=port_num
    Le port TCP/IP à utiliser avec l'hôte. Ceci sert pour les connexions d'hôte à hôte, autre que localhost , pour lequel les sockets Unix seront utilisées).
    -q, --quick
    Ne garde pas en buffer les requêtes, mais écrit immédiatement dans la sortie. Utilise mysql_use_result() pour cela.
    -Q, --quote-names
    Protège les noms des tables et colonnes avec le caractère '`' .
    -r, --result-file=...
    Ecrit directemetn dans le fichier indiqué. Cette option doit être utilisé sur MSDOS, car cela évite que la nouvelle ligne '\n' soient converties en '\n\r' (nouvelle ligne et retour chariot).
    --single-transaction
    Cette option ajoute la commande SQL BEGIN avant d'exporter les données vers le serveur. C'est généralement pratique pour les tables InnoDB et le niveau d'isolation de transaction READ_COMMITTED , car ce mode va exporter l'état de la base au moment de la commande BEGIN sans bloquer les autres applications.

    Lorsque vous utilisez cette option, pensez bien que seules les tables transactionnelles seront exportées dans un état cohérent, c'est à dire que les tables MyISAM ou HEAP qui seront exportées avec cette option, pourront changer d'état.

    L'option --single-transaction a été ajoutée en version 4.0.2. Cette option est mutuellement exclusive avec l'option --lock-tables car LOCK TABLES va valider une transaction interne précédente.
    -S /path/to/socket, --socket=/path/to/socket
    Le fichier de socket à utiliser lors de la connexion à localhost (qui est l'hôte par défaut).
    --tables
    Remplace l'option --databases (-B).
    -T, --tab=path-to-some-directory
    Crée un fichier table_name.sql , qui contient les commandes SQL CREATE, et un fichier table_name.txt , qui contient les données, pour chaque table. Le format du fichier .txt est celui qui est spécifié par les options --fields-xxx et --lines--xxx . Note : cette option ne fonctionne qui si mysqldump est exécuté sur la même machine que le démon mysqld , et que le nom d'utilisateur et le groupe de mysqld (normalement l'utilisateur mysql , et le groupe mysql ) doivent avoir des permission pour créer et écrire un fichier dans le dossier que vous spécifiez.
    -u user_name, --user=user_name
    Le nom d'utilisateur MySQL lors de la connexion à un serveur distant. La valeur par défaut est votre nom d'utilisateur Unix.
    -O var=option, --set-variable var=option
    Spécifie la valeur d'une variable. Les noms possibles des variables sont spécifiés ci-dessous. Notez bien que --set-variable est obsolète depuis MySQL 4.0, il vous suffit alors d'utiliser la syntaxe --var=option .
    -v, --verbose
    Mode détaillé. Affiche plus d'informations sur les faits et gestes du programme.
    -V, --version
    Affiche la version du programme et quitte.
    -w, --where='where-condition'
    Exporte uniquement les lignes sélectionnées. Notez que les guillemets sont obligatoires.
    -X, --xml
    Exporte la base au format XML.
    -x, --first-slave
    Verrouille toutes les tables dans les bases.
    
    "--where=user='jimf'" "-wuserid>1" "-wuserid<1"
    
    -O net_buffer_length=#, where # < 16M
    Lors de la création de commandes d'insertions multilignes, (comme avec l'option --extended-insert ou --opt ), mysqldump va créer des lignes jusqu'à la taille de net_buffer_length . Si vous augmentez cette valeur, vous devriez aussi vous assurer que la variable MySQL max_allowed_packet est plus grande que net_buffer_length .
L'usage normal de mysqldump est probablement de faire des sauvegardes de bases. Sauvegardes de base de données .

mysqldump --opt database > backup-file.sql
Vous pouvez importer les données dans la base MySQL avec :

mysql database < backup-file.sql
ou

mysql -e "source /patch-to-backup/backup-file.sql" database
Cependant, il est très pratique pour remplir un autre serveur MySQL avec des informations depuis une base :

mysqldump --opt database | mysql ---host=remote-host -C database
Il est possible d'exporter plusieurs bases de données en une seule commande :

mysqldump --databases database1 [database2 ...] > my_databases.sql
Si vous souhaitez exporter toutes les bases, vous pouvez utiliser :

mysqldump --all-databases > all_databases.sql

<< mysqldump , exporter les structures de tables et les données >>
Utiliser mysqlcheck pour l'entretien et la réparation MySQL Scripts clients et utilitaires mysqlhotcopy , copier les bases et tables MySQL
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -