~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/clients/drizzledump.rst

  • Committer: Andrew Hutchings
  • Date: 2011-02-23 11:48:37 UTC
  • mto: (2196.1.3 build)
  • mto: This revision was merged to the branch mainline in revision 2197.
  • Revision ID: andrew@linuxjedi.co.uk-20110223114837-srtbokzikrmwd7sq
Port my drizzledump docs fixes from another branch which I thought were merged

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
Synopsis
5
5
--------
6
6
 
7
 
**drizzledump** [*OPTIONS*] *database* [*tables*]
8
 
 
9
 
**drizzledump** [*OPTIONS*] *--databases* [*OPTIONS*] *DB1* [*DB2* *DB3*...]
10
 
 
11
 
**drizzledump** [*OPTIONS*] *--all-databases* [*OPTIONS*]
 
7
:program:`drizzledump` [:ref:`OPTIONS <drizzledump-options-label>`] *database* [*tables*]
 
8
 
 
9
:program:`drizzledump` [:ref:`OPTIONS <drizzledump-options-label>`] :option:`--databases` *DB1* [*DB2* *DB3*...]
 
10
 
 
11
:program:`drizzledump` [:ref:`OPTIONS <drizzledump-options-label>`] :option:`--all-databases`
12
12
 
13
13
Description
14
14
-----------
24
24
Any binary data in tables will be converted into hexadecimal output so that it
25
25
does not corrupt the dump file.
26
26
 
 
27
.. _drizzledump-options-label:
 
28
 
27
29
Drizzledump options
28
30
-------------------
29
31
 
30
32
The :program:`drizzledump` tool has several available options:
31
33
 
32
 
.. option:: -A, --all-databases
33
 
 
34
 
Dumps all databases found on the server apart from *information_schema* and
35
 
*data_dictionary* in Drizzle and *information_schema*, *performance_schema*
36
 
and *mysql* in MySQL.
37
 
 
38
 
.. option:: -f, --force
 
34
.. option:: --all-databases, -A
 
35
 
 
36
Dumps all databases found on the server apart from ``information_schema`` and
 
37
``data_dictionary`` in Drizzle and ``information_schema``,
 
38
``performance_schema`` and ``mysql`` in MySQL.
 
39
 
 
40
.. option:: --force, -f
39
41
 
40
42
Continue even if we get an sql-error.
41
43
 
42
 
.. option:: -?, --help
 
44
.. option:: --help, -?
43
45
 
44
46
Show a message with all the available options.
45
47
 
46
 
.. option:: -x, --lock-all-tables
 
48
.. option:: --lock-all-tables, -x
47
49
 
48
50
Locks all the tables for all databases with a global read lock.  The lock is
49
51
released automatically when :program:`drizzledump` ends.
54
56
Creates a consistent snapshot by dumping the tables in a single transaction.
55
57
During the snapshot no other connected client should use any of the
56
58
following as this will implicitly commit the transaction and prevent the
57
 
consistency::
 
59
consistency:
 
60
 
 
61
.. code-block:: mysql
58
62
 
59
63
        ALTER TABLE
60
64
        DROP TABLE
77
81
Show progress of the dump every *rows* of the dump.  Requires
78
82
:option:`--verbose`
79
83
 
80
 
.. option:: -v, --verbose
 
84
.. option:: --verbose, -v
81
85
 
82
86
Sends various verbose information to stderr as the dump progresses.
83
87
 
84
 
.. option:: --skip-create
85
 
 
86
 
Do not dump the CREATE TABLE / CREATE DATABASE statements.
87
 
 
88
88
.. option:: --skip-extended-insert
89
89
 
90
 
Dump every row on an individual line.  For example::
 
90
Dump every row on an individual line.  For example:
 
91
 
 
92
.. code-block:: mysql
91
93
 
92
94
        INSERT INTO `t1` VALUES (1,'hello');
93
95
        INSERT INTO `t1` VALUES (2,'world');
102
104
 
103
105
.. option:: --add-drop-database
104
106
 
105
 
Add `DROP DATABASE` statements before `CREATE DATABASE`.
 
107
Add ``DROP DATABASE`` statements before ``CREATE DATABASE``.
106
108
 
107
109
.. option:: --compact
108
110
 
110
112
:option:`--skip-add-drop-table`, :option:`--skip-disable-keys` 
111
113
and :option:`--skip-add-locks`.
112
114
 
113
 
.. option:: -B, --databases
 
115
.. option:: --databases, -B
114
116
 
115
117
Dump several databases.  The databases do not need to follow on after this
116
118
option, they can be anywhere in the command line.
117
119
 
118
 
.. option:: -K, --skip-disable-keys
 
120
.. option:: --skip-disable-keys, -K
119
121
 
120
 
Do not dump the statements `ALTER TABLE ... DISABLE KEYS` and
121
 
`ALTER TABLE ... ENABLE KEYS`
 
122
Do not dump the statements ``ALTER TABLE ... DISABLE KEYS`` and
 
123
``ALTER TABLE ... ENABLE KEYS``
122
124
 
123
125
.. option:: --ignore-table table
124
126
 
125
 
Do not dump specified table, needs to be in the format `database.table`.
 
127
Do not dump specified table, needs to be in the format ``database.table``.
126
128
Can be specified multiple times for multiple tables.
127
129
 
128
130
.. option:: --insert-ignore
129
131
 
130
 
Add the `IGNORE` keyword into every `INSERT` statement.
 
132
Add the ``IGNORE`` keyword into every ``INSERT`` statement.
131
133
 
132
134
.. option:: --no-autocommit
133
135
 
134
 
Make the dump of each table a single transaction by wrapping it in `COMMIT`
 
136
Make the dump of each table a single transaction by wrapping it in ``COMMIT``
135
137
statements.
136
138
 
137
 
.. option:: -n, --no-create-db
 
139
.. option:: --no-create-db, -n
138
140
 
139
 
Do not dump the `CREATE DATABASE` statements when using
 
141
Do not dump the ``CREATE DATABASE`` statements when using
140
142
:option:`--all-databases` or :option:`--databases`.
141
143
 
142
 
.. option:: -t, --skip-create
143
 
 
144
 
Do not dump the `CREATE TABLE` statements.
145
 
 
146
 
.. option:: -d, --no-data
 
144
.. option:: --skip-create, -t
 
145
 
 
146
Do not dump the ``CREATE TABLE`` statements.
 
147
 
 
148
.. option:: --no-data, -d
147
149
 
148
150
Do not dump the data itself, used to dump the schemas only.
149
151
 
150
152
.. option:: --replace
151
153
 
152
 
Use `REPLACE INTO` statements instead of `INSERT INTO`
 
154
Use ``REPLACE INTO`` statements instead of ``INSERT INTO``
153
155
 
154
156
.. option:: --destination-type type (=stdout)
155
157
 
206
208
mangled data.  This is because MySQL will convert the data to UTF8 on the way
207
209
out to drizzledump and you effectively get a double-conversion to UTF8.
208
210
 
209
 
This typically happens with PHP apps that do not use 'SET NAMES'.
 
211
This typically happens with PHP apps that do not use ``SET NAMES``.
210
212
 
211
213
In these cases setting this option will retrieve the data as you see it in your
212
214
application.
213
215
 
214
216
.. versionadded:: 2011-01-31
215
217
 
216
 
.. option:: -h, --host hostname (=localhost)
 
218
.. option:: --host, -h hostname (=localhost)
217
219
 
218
220
The hostname of the database server.
219
221
 
220
 
.. option:: -u, --user username
 
222
.. option:: --user, -u username
221
223
 
222
224
The username for the database server.
223
225
 
224
 
.. option:: -P, --password password
 
226
.. option:: --password, -P password
225
227
 
226
228
The password for the database server.
227
229
 
228
 
.. option:: -p, --port port (=3306,4427)
 
230
.. option:: --port, -p port (=4427)
229
231
 
230
 
The port number of the database server.  Defaults to 3306 for MySQL protocol
231
 
and 4427 for Drizzle protocol.
 
232
The port number of the database server.
232
233
 
233
234
.. option:: --protocol protocol (=mysql)
234
235
 
243
244
Backups using Drizzledump
244
245
-------------------------
245
246
 
246
 
Backups of a database can be made very simply by running the following::
247
 
 
248
 
$ drizzledump --all-databases > dumpfile.sql
249
 
 
250
 
This can then be re-imported into drizzle at a later date using::
251
 
 
252
 
$ drizzle < dumpfile.sql
 
247
Backups of a database can be made very simply by running the following:
 
248
 
 
249
.. code-block:: bash
 
250
 
 
251
  $ drizzledump --all-databases > dumpfile.sql
 
252
 
 
253
This can then be re-imported into drizzle at a later date using:
 
254
 
 
255
.. code-block:: bash
 
256
 
 
257
  $ drizzle < dumpfile.sql
253
258
 
254
259
MySQL Migration using Drizzledump
255
260
---------------------------------
264
269
 
265
270
.. warning::
266
271
 
267
 
   :program:`drizzledump` will by default try to connect via port 4427. To
268
 
   connect to a MySQL server, a port (such as 3306) must be specified.
 
272
   :program:`drizzledump` will by default try to connect via. port 4427 so to
 
273
   connect to a MySQL server a port (such as 3306) must be specified.
269
274
 
270
275
So, simply connecting to a MySQL server with :program:`drizzledump` as follows
271
 
will give you a Drizzle compatible output::
272
 
 
273
 
$ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password > dumpfile.sql
 
276
will give you a Drizzle compatible output:
 
277
 
 
278
.. code-block:: bash
 
279
 
 
280
  $ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password > dumpfile.sql
274
281
 
275
282
Additionally :program:`drizzledump` can now dump from MySQL and import directly
276
 
into a Drizzle server as follows::
277
 
 
278
 
$ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password --destination-type=database --desination-host=drizzle-host
 
283
into a Drizzle server as follows:
 
284
 
 
285
.. code-block:: bash
 
286
 
 
287
  $ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password --destination-type=database --desination-host=drizzle-host
279
288
 
280
289
.. note::
281
290
 
302
311
 * mediumblob -> blob
303
312
 * longblob -> blob
304
313
 * year -> int
305
 
 * set -> text
306
 
 * date/datetime default 0000-00-00 -> default NULL (Currently, ALL date columns have their DEFAULT set to NULL on migration)
307
 
 * date/datetime NOT NULL columns -> NULL
308
 
 * any date data containing 0000-00-00 -> NULL
309
 
 * time -> int of the number of seconds [1]_
310
 
 * enum-> DEFAULT NULL
 
314
 * set -> text [1]_
 
315
 * date/datetime default 0000-00-00 -> default NULL [2]_
 
316
 * date/datetime NOT NULL columns -> NULL [2]_
 
317
 * any date data containing 0000-00-00 -> NULL [2]_
 
318
 * time -> int of the number of seconds [3]_
 
319
 * enum-> DEFAULT NULL [4]_
311
320
 
312
321
.. rubric:: Footnotes
313
322
 
314
 
.. [1] This prevents data loss since MySQL's TIME data type has a range of
 
323
.. [1] There is currently no good alternative to SET, this is simply to preserve
 
324
       the data in the column.  There is a new alternative to SET to be included
 
325
       at a later date.
 
326
 
 
327
.. [2] Currently, ALL date columns have their DEFAULT set to NULL on migration.
 
328
       This is so that any rows with 0000-00-00 dates can convert to NULL.
 
329
 
 
330
.. [3] This prevents data loss since MySQL's TIME data type has a range of
315
331
       -838:59:59 - 838:59:59, and Drizzle's TIME type has a range of
316
 
       00:00:00 - 23:59:61.999999.
 
332
       00:00:00 - 23:59:59.
 
333
 
 
334
.. [4] This is so that empty entries such as '' will convert to NULL.