Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

MySQL -- Dump

Par Athanael le 30/10/2002 à 17:47:08 (#2442398)

Voilà serait il possible qu'une aimable personne me donne la requete précise (en détaillant bien pour que je comprenne tout :)) pour faire un dump d'une base avec Phpmyadmin.
J'ai essayé ca :

mysqldump -h nom_du_serveur -u login -pcode nom_de_la_base > nom_base_sauvegardée.sql

Mais marche pas, il me dit erreur de syntaxe.

Merci d'avance de votre aide :D.

Par Tabassor le 30/10/2002 à 17:57:06 (#2442485)

pourrais tu expliquer plus précisément ce que tu cherches? parce que j'ai un livre php/mysql (microapp) sous la main, et j'ai du mal a trouver le mot-clef "dump" dedans...
tu veux sauvegarder un script de creation de tables dans un fichier .sql c'est ca?

Par Athanael le 30/10/2002 à 17:58:45 (#2442501)

Non je veux juste sauvegarder la base de données dans un fichier que je peux ensuite télécharger :).

Par Foehn le 30/10/2002 à 18:00:16 (#2442509)

Le dump concerne plus que la structure de la base, il concerne également les données :)

Si je ne me trompe pas, voilà la manip à faire

;)

Par Novae Galliano le 30/10/2002 à 18:53:59 (#2442990)

4.8.5 mysqldump, Dumping Table Structure and Data

Utility to dump a database or a collection of database for backup or for transferring the data to another SQL server (not necessarily a MySQL server). The dump will contain SQL statements to create the table and/or populate the table.

If you are doing a backup on the server, you should consider using the mysqlhotcopy instead. See section 4.8.6 mysqlhotcopy, Copying MySQL Databases and Tables.

shell> mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]

If you don't give any tables or use the --databases or --all-databases, the whole database(s) will be dumped.

You can get a list of the options your version of mysqldump supports by executing mysqldump --help.

Note that if you run mysqldump without --quick or --opt, mysqldump will load the whole result set into memory before dumping the result. This will probably be a problem if you are dumping a big database.

Note that if you are using a new copy of the mysqldump program and you are going to do a dump that will be read into a very old MySQL server, you should not use the --opt or -e options.

mysqldump supports the following options:

--add-locks
Add LOCK TABLES before and UNLOCK TABLE after each table dump. (To get faster inserts into MySQL.)
--add-drop-table
Add a drop table before each create statement.
-A, --all-databases
Dump all the databases. This will be same as --databases with all databases selected.
-a, --all
Include all MySQL-specific create options.
--allow-keywords
Allow creation of column names that are keywords. This works by prefixing each column name with the table name.
-c, --complete-insert
Use complete insert statements (with column names).
-C, --compress
Compress all information between the client and the server if both support compression.
-B, --databases
To dump several databases. Note the difference in usage. In this case no tables are given. All name arguments are regarded as database names. USE db_name; will be included in the output before each new database.
--delayed
Insert rows with the INSERT DELAYED command.
-e, --extended-insert
Use the new multiline INSERT syntax. (Gives more compact and faster inserts statements.)
-#, --debug[=option_string]
Trace usage of the program (for debugging).
--help
Display a help message and exit.
--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--lines-terminated-by=...
These options are used with the -T option and have the same meaning as the corresponding clauses for LOAD DATA INFILE. See section 6.4.9 LOAD DATA INFILE Syntax.
-F, --flush-logs
Flush log file in the MySQL server before starting the dump.
-f, --force,
Continue even if we get a SQL error during a table dump.
-h, --host=..
Dump data from the MySQL server on the named host. The default host is localhost.
-l, --lock-tables.
Lock all tables before starting the dump. The tables are locked with READ LOCAL to allow concurrent inserts in the case of MyISAM tables. Please note that when dumping multiple databases, --lock-tables will lock tables for each database separately. So using this option will not guarantee your tables will be logically consistent between databases. Tables in different databases may be dumped in completely different states.
-K, --disable-keys
/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and /*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put in the output. This will make loading the data into a MySQL 4.0 server faster as the indexes are created after all data are inserted.
-n, --no-create-db
CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; will not be put in the output. The above line will be added otherwise, if a --databases or --all-databases option was given.
-t, --no-create-info
Don't write table creation information (the CREATE TABLE statement).
-d, --no-data
Don't write any row information for the table. This is very useful if you just want to get a dump of the structure for a table!
--opt
Same as --quick --add-drop-table --add-locks --extended-insert --lock-tables. Should give you the fastest possible dump for reading into a MySQL server.
-pyour_pass, --password[=your_pass]
The password to use when connecting to the server. If you specify no `=your_pass' part, mysqldump you will be prompted for a password.
-P port_num, --port=port_num
The TCP/IP port number to use for connecting to a host. (This is used for connections to hosts other than localhost, for which Unix sockets are used.)
-q, --quick
Don't buffer query, dump directly to stdout. Uses mysql_use_result() to do this.
-Q, --quote-names
Quote table and column names within ``' characters.
-r, --result-file=...
Direct output to a given file. This option should be used in MSDOS, because it prevents new line `\n' from being converted to `\n\r' (new line + carriage return).
--single-transaction
This option issues a BEGIN SQL command before dumping data from server. It is mostly useful with InnoDB tables and READ_COMMITTED transaction isolation level, as in this mode it will dump the consistent state of the database at the time then BEGIN was issued without blocking any applications. When using this option you should keep in mind that only transactional tables will be dumped in a consistent state, e.g., any MyISAM or HEAP tables dumped while using this option may still change state. The --single-transaction option was added in version 4.0.2. This option is mutually exclusive with the --lock-tables option as LOCK TABLES already commits a previous transaction internally.
-S /path/to/socket, --socket=/path/to/socket
The socket file to use when connecting to localhost (which is the default host).
--tables
Overrides option --databases (-B).
-T, --tab=path-to-some-directory
Creates a table_name.sql file, that contains the SQL CREATE commands, and a table_name.txt file, that contains the data, for each give table. The format of the `.txt' file is made according to the --fields-xxx and --lines--xxx options. Note: This option only works if mysqldump is run on the same machine as the mysqld daemon, and the user/group that mysqld is running as (normally user mysql, group mysql) needs to have permission to create/write a file at the location you specify.
-u user_name, --user=user_name
The MySQL user name to use when connecting to the server. The default value is your Unix login name.
-O var=option, --set-variable var=option
Set the value of a variable. The possible variables are listed below.
-v, --verbose
Verbose mode. Print out more information on what the program does.
-V, --version
Print version information and exit.
-w, --where='where-condition'
Dump only selected records. Note that quotes are mandatory:
-X, --xml
Dumps a database as well formed XML
-x, --first-slave
Locks all tables across all databases.
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"

-O net_buffer_length=#, where # backup-file.sql

You can read this back into MySQL with:

mysql database my_databases.sql

If all the databases are wanted, one can use:

mysqldump --all-databases > all_databases.sql

Par Foehn le 30/10/2002 à 19:02:10 (#2443063)

A priori, pas besoin de passer par MySQLDump, PHPMyAdmin permettant l'export des données...

Par Grim le 30/10/2002 à 19:04:39 (#2443083)

sont gentiles leur explication mais mysqldump est un programme pas une instruction sql (d'où l'erreur de syntaxe)

J'ai pas phpmyadmin, mais de mémoire, tu dois avoir une zone qui te dis "afficher le schéma de la base", tu choisis les tables qui t'intéressent, tu choisis structures et données, et tu coches transmettre, tu devrais récupérer le fichier de dump :)

Par Foehn le 30/10/2002 à 19:06:46 (#2443103)

*se demande à quoi ça sert de mettre des liens* :D

Par Athanael le 30/10/2002 à 19:09:43 (#2443140)

Humm oki merci pour vos réponses, mais je n'ai pas accès a structures et données, mon hébérgeur m'empeche de me servir de cela, pour sauvegarder ma base l'hébergeur m'a donné la tite ligne que j'ai mise au début pour créer un dump, mais le problème c'est que cela ne marche pas, j'ai déjà envoyé un email pour qu'il m'explique, mais j'ai eu droit au meme truc, donc je suis un peu bloqué :).

Par Grim le 30/10/2002 à 19:10:45 (#2443150)

Provient du message de Foehn
*se demande à quoi ça sert de mettre des liens* :D


à rien s'il clique pas dessus :D

remarque grace à Novae, il connait aussi mysqldump maintenant :D

Par Foehn le 30/10/2002 à 19:19:23 (#2443233)

Provient du message de Athanael
...mais je n'ai pas accès a structures et données, mon hébérgeur m'empeche de me servir de cela...

C'est quoi le truc qui te sert d'hébergeur ? :doute:

Par Athanael le 30/10/2002 à 19:26:31 (#2443295)

OVH, on gère tout seul ces bases avec phpmyadmin mais le problème c'est que l'on a pas accès aux structures de données.

Par Foehn le 30/10/2002 à 19:32:29 (#2443345)

Si tu n'as pas accès à ton modèle physique de données (tes tables), tu ne gères rien du tout... ça me surprend :confus:

Par Grim le 30/10/2002 à 19:36:38 (#2443375)

Tu peux peut être te connecter à la bd avec un frontal sur ton pc (si tu utilises "localhost" pour te connecter, tu oublies...) et avec le frontal faire le dump...

Par Athanael le 30/10/2002 à 19:43:36 (#2443429)

si j'ai accès aux tables, gra comment expliquer cela clairement, hum http://www.toutestfacile.com/sql/images/MYSQL2MYSQL_dump.gif
Alors pour faire simple tout ce qui est en dessous de Requete par un exemple je ne l'ai pas, j'ai un beau message erreur car l'hébergeur a désactivé ces fonctions, sinon j'ai tout le reste je peux cliquer sur mabase, effacer les tables etc, mais j'arrive pas a sauvegarder ma base :) ca me gonfle un peu surtout que j'y connais rien en mysql + phpmyadmin :).

Par Foehn le 30/10/2002 à 20:11:24 (#2443633)

*grat-grat-grat*

Ah ouais...

Alors, vue la syntaxe du mysqldump, il doit être possible (le Gouvernement niera avoir eu connaissance de vos agissements :cool: ), si tu disposes d'un mysqldump en local chez toi (par exemple en ayant un mysql installé en local), de lancer la commande donnée depuis une session shell (DOS si tu es sous Windows), en étant connecté au net, et en ayant les paramètres de connexion au serveur de ton fournisseur d'accès... mais c'est zarb', dans la mesure où la plupart des hébergeurs "cachent" ces serveurs de données derrière des firewall... en général...

Pas l'impression d'être clair là... :doute:

Par Grim le 30/10/2002 à 20:15:59 (#2443664)

C'est ce que je lui disais de faire avec un frontal hein :)

Par Foehn le 30/10/2002 à 20:20:08 (#2443701)

Ouiiiiiiiiinnnnnnnnnnn, personne ne m'aime :sanglote:

Méchant Grim :p

Avec un frontal installé en local, le problème reste le même : l'hébergeur permet-il un accès à son serveur de données depuis l'extérieur ?

Remarque, si tel est le cas, vaut mieux changer d'hébergeur :maboule:

Par Grim le 30/10/2002 à 20:24:11 (#2443732)

Athanael, tu mérites des claques...

Je suis aller rien que pour toi faire un tour sur le site d'OVH, regarde ce que j'y ai trouvé :

Q: Comment puis je faire une sauvegarde de ma base de données ?R: Pour cela, exécuter la commande du type :
mysqldump -hsql -ulogin --password=mot_de_passe base > mabase.sql
Cette commande génèrera un ficher mabase.sql dans le répertoire courant dans lequel vous trouverez toutes les instructions SQL pour recréer la base telle qu'elle est, avec ses données.
Vous pouvez ensuite compresser ce fichier pour mieux le télécharger sur votre ordinateur (par FTP ou par le web). Pour compresser le fichier, exécutez par exemple gzip mabase.sql (qui créera le fichier mabase.sql.gz).
Vous pouvez effectuer ces commandes en les incluant dans un script, par exemple, en PHP:
mabase.sql");
exec("gzip mabase.sql");
?>



Ca répond à ta question, il me semble... :)

Par Mandor le 30/10/2002 à 20:26:01 (#2443743)

Je voudrais pas paraitre prétentieux, mais c'est pas jouable de se faire un script qui génére le .sql automatiquement ?

Il y a peut être des complications insousponnées, mais pour extraire la structure de données et les données elle même, puis les mettre en forme dans un .sql, ca m'a pas l'air trop dur (le .sql étant en fait la quite de requête à executer pour restaurer la base de données sauvegardée... Oui je sais c'est le principe d'une sauvegarde, mais c'est juste pour dire que le .sql doit avoir la forme d'une suite de requête).

Et même sans faire le script soi même, je suis sur qu'un simple recherche sur les sites de toutes les bonnes crémeries doit permettre de trouver un substitut à PHPMyAdmin pour sauvegarder une base.

En gros, pas besoin de trop t'embéter, ca doit être houable avec un simple script PHP. Enfin je me suis jamais posé le problème ayant toujours utilisé phpMyAdmin (qui est lui même un script PHP plutot léger, prouvant la faisabilité et la simplicité d'un script PHP de sauvegarde).

EDIT : Je viens de lire le message du dessus. Il semble que l'hébergeur propose même leur script a eux pour faire la chose ! :p

Par Tabassor le 30/10/2002 à 20:34:36 (#2443797)

c'est pas particulier à l'hebergeur, c'est un soft qu'on décide ou non d'installer. sinon sous oracle ca existe et c'est facile, mais oracle c'est cher oO
sinon ce que je fais, c'est que chaque fois que je crée une table en mysql il affiche le script 'create table xxxxxx....'
j'enregistre le tout dans un fichier createtable.php
qui contient une serie de

$sql="create table xxxxxx....";
mysql_query($sql,$db);

// $db ayant été paramétré avant dans un fichier type config.php et/ou dbaseconnect.php

c'est soviétique comme méthode, ca ne sauvegarde malheureusement pas les données, mais ca marche chez n'importe quel hébergeur php.

Par Mandor le 30/10/2002 à 20:41:51 (#2443853)

Ben c'est le début d'un .sql

La fin d'un .sql c'est tout les INSERT pour ajouter les données. :p

Par Tabassor le 30/10/2002 à 20:46:04 (#2443887)

peut etre, mais sauver 10 scripts de creation de tables a la main, ca va, mais si je sauve 100 données dans chacune de ces tables ca fait tout de suite 1000 insert, d'ou la perte d'interet de cette méthode quand le but est de sauver des data...
le but est en fait d'implanter une db d'un certain type (par exemple: un forum) sur un site, en partant de rien...

Par Athanael le 31/10/2002 à 0:03:59 (#2445170)

Grim : Je sais que l'on peut faire un script mais je suis du genre maso, quand un truc marche pas j'aimerai comprendre pourquoi, car sur le site de OVH ils donnent ces 2 méthodes, donc les 2 devraient marcher :).
En tout cas merci pour toutes les aides, je me contenterai du script php :).

Par Grim le 31/10/2002 à 0:54:54 (#2445403)

Provient du message de Athanael
Grim : Je sais que l'on peut faire un script mais je suis du genre maso, quand un truc marche pas j'aimerai comprendre pourquoi, car sur le site de OVH ils donnent ces 2 méthodes, donc les 2 devraient marcher :).
En tout cas merci pour toutes les aides, je me contenterai du script php :).


Euhhhhh ??? suis pas sur de t'avoir compris, mysqldump ne fonctionne que via un script parce que tu n'es pas sur le serveur mysql, c'est aussi simple que ca :)

(ca peut paraitre rétro, mais à la base, mysql se gère sous DOS ou une variante linuixienne :))

JOL Archives 1.0.1
@ JOL / JeuxOnLine