~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/clients/drizzledump.rst

  • Committer: Lee Bieber
  • Date: 2011-02-24 03:20:47 UTC
  • mfrom: (2196.1.4 build)
  • Revision ID: kalebral@gmail.com-20110224032047-avmw06iwww3m73cw
Merge Andrew - 723653: Docs day first pass fixes 
Merge Brian - Puts back in support for COM_KILL, Also adds back in the INTERACTIVE flag, and creates a DD to track sessions/check on usage
Merge Olaf - Use List::size()

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
39
 
 
40
 
Continue even if we get an sql-error.
41
 
 
42
 
.. option:: -?, --help
43
 
 
44
 
Show a message with all the available options.
45
 
 
46
 
.. option:: -x, --lock-all-tables
47
 
 
48
 
Locks all the tables for all databases with a global read lock.  The lock is
49
 
released automatically when :program:`drizzledump` ends.
50
 
Turns on :option:`--single-transaction` and :option:`--lock-tables`.
 
34
.. program:: drizzledump 
 
35
 
 
36
.. option:: --all-databases, -A
 
37
 
 
38
   Dumps all databases found on the server apart from ``information_schema`` and
 
39
   ``data_dictionary`` in Drizzle and ``information_schema``,
 
40
   ``performance_schema`` and ``mysql`` in MySQL.
 
41
 
 
42
.. option:: --force, -f
 
43
 
 
44
   Continue even if we get an sql-error.
 
45
 
 
46
.. option:: --help, -?
 
47
 
 
48
   Show a message with all the available options.
 
49
 
 
50
.. option:: --lock-all-tables, -x
 
51
 
 
52
   Locks all the tables for all databases with a global read lock.  The lock is
 
53
   released automatically when :program:`drizzledump` ends.
 
54
   Turns on :option:`--single-transaction` and :option:`--lock-tables`.
51
55
 
52
56
.. option:: --single-transaction
53
57
 
54
 
Creates a consistent snapshot by dumping the tables in a single transaction.
55
 
During the snapshot no other connected client should use any of the
56
 
following as this will implicitly commit the transaction and prevent the
57
 
consistency::
 
58
   Creates a consistent snapshot by dumping the tables in a single transaction.
 
59
   During the snapshot no other connected client should use any of the
 
60
   following as this will implicitly commit the transaction and prevent the
 
61
   consistency:
 
62
 
 
63
   .. code-block:: mysql
58
64
 
59
65
        ALTER TABLE
60
66
        DROP TABLE
61
67
        RENAME TABLE
62
68
        TRUNCATE TABLE
63
69
 
64
 
Only works with InnoDB.
 
70
   Only works with InnoDB.
65
71
 
66
72
.. option:: --skip-opt
67
73
 
68
 
A shortcut for :option:`--skip-drop-table`, :option:`--skip-create`, 
69
 
:option:`--skip-extended-insert` and :option:`--skip-disable-keys`
 
74
   A shortcut for :option:`--skip-drop-table`, :option:`--skip-create`, 
 
75
   :option:`--skip-extended-insert` and :option:`--skip-disable-keys`
70
76
 
71
77
.. option:: --tables t1 t2 ...
72
78
 
73
 
Dump a list of tables.
 
79
   Dump a list of tables.
74
80
 
75
81
.. option:: --show-progress-size rows (=10000)
76
82
 
77
 
Show progress of the dump every *rows* of the dump.  Requires
78
 
:option:`--verbose`
79
 
 
80
 
.. option:: -v, --verbose
81
 
 
82
 
Sends various verbose information to stderr as the dump progresses.
83
 
 
84
 
.. option:: --skip-create
85
 
 
86
 
Do not dump the CREATE TABLE / CREATE DATABASE statements.
 
83
   Show progress of the dump every *rows* of the dump.  Requires
 
84
   :option:`--verbose`
 
85
 
 
86
.. option:: --verbose, -v
 
87
 
 
88
   Sends various verbose information to stderr as the dump progresses.
87
89
 
88
90
.. option:: --skip-extended-insert
89
91
 
90
 
Dump every row on an individual line.  For example::
 
92
   Dump every row on an individual line.  For example:
 
93
 
 
94
.. code-block:: mysql
91
95
 
92
96
        INSERT INTO `t1` VALUES (1,'hello');
93
97
        INSERT INTO `t1` VALUES (2,'world');
94
98
 
95
99
.. option:: --skip-dump-date
96
100
 
97
 
Do not display the date/time at the end of the dump.
 
101
   Do not display the date/time at the end of the dump.
98
102
 
99
103
.. option:: --no-defaults
100
104
 
101
 
Do not attempt to read configuration from configuration files.
 
105
   Do not attempt to read configuration from configuration files.
102
106
 
103
107
.. option:: --add-drop-database
104
108
 
105
 
Add `DROP DATABASE` statements before `CREATE DATABASE`.
 
109
   Add ``DROP DATABASE`` statements before ``CREATE DATABASE``.
106
110
 
107
111
.. option:: --compact
108
112
 
109
 
Gives a more compact output by disabling header/footer comments and enabling
110
 
:option:`--skip-add-drop-table`, :option:`--skip-disable-keys` 
111
 
and :option:`--skip-add-locks`.
112
 
 
113
 
.. option:: -B, --databases
114
 
 
115
 
Dump several databases.  The databases do not need to follow on after this
116
 
option, they can be anywhere in the command line.
117
 
 
118
 
.. option:: -K, --skip-disable-keys
119
 
 
120
 
Do not dump the statements `ALTER TABLE ... DISABLE KEYS` and
121
 
`ALTER TABLE ... ENABLE KEYS`
 
113
   Gives a more compact output by disabling header/footer comments and enabling
 
114
   :option:`--skip-add-drop-table`, :option:`--skip-disable-keys` 
 
115
   and :option:`--skip-add-locks`.
 
116
 
 
117
.. option:: --databases, -B
 
118
 
 
119
   Dump several databases.  The databases do not need to follow on after this
 
120
   option, they can be anywhere in the command line.
 
121
 
 
122
.. option:: --skip-disable-keys, -K
 
123
 
 
124
   Do not dump the statements ``ALTER TABLE ... DISABLE KEYS`` and
 
125
   ``ALTER TABLE ... ENABLE KEYS``
122
126
 
123
127
.. option:: --ignore-table table
124
128
 
125
 
Do not dump specified table, needs to be in the format `database.table`.
126
 
Can be specified multiple times for multiple tables.
 
129
   Do not dump specified table, needs to be in the format ``database.table``.
 
130
   Can be specified multiple times for multiple tables.
127
131
 
128
132
.. option:: --insert-ignore
129
133
 
130
 
Add the `IGNORE` keyword into every `INSERT` statement.
 
134
   Add the ``IGNORE`` keyword into every ``INSERT`` statement.
131
135
 
132
136
.. option:: --no-autocommit
133
137
 
134
 
Make the dump of each table a single transaction by wrapping it in `COMMIT`
135
 
statements.
136
 
 
137
 
.. option:: -n, --no-create-db
138
 
 
139
 
Do not dump the `CREATE DATABASE` statements when using
140
 
:option:`--all-databases` or :option:`--databases`.
141
 
 
142
 
.. option:: -t, --skip-create
143
 
 
144
 
Do not dump the `CREATE TABLE` statements.
145
 
 
146
 
.. option:: -d, --no-data
147
 
 
148
 
Do not dump the data itself, used to dump the schemas only.
 
138
   Make the dump of each table a single transaction by wrapping it in ``COMMIT``
 
139
   statements.
 
140
 
 
141
.. option:: --no-create-db, -n
 
142
 
 
143
   Do not dump the ``CREATE DATABASE`` statements when using
 
144
   :option:`--all-databases` or :option:`--databases`.
 
145
 
 
146
.. option:: --skip-create, -t
 
147
 
 
148
   Do not dump the ``CREATE TABLE`` statements.
 
149
 
 
150
.. option:: --no-data, -d
 
151
 
 
152
   Do not dump the data itself, used to dump the schemas only.
149
153
 
150
154
.. option:: --replace
151
155
 
152
 
Use `REPLACE INTO` statements instead of `INSERT INTO`
 
156
   Use ``REPLACE INTO`` statements instead of ``INSERT INTO``
153
157
 
154
158
.. option:: --destination-type type (=stdout)
155
159
 
156
 
Destination of the data.
157
 
 
158
 
**stdout**
159
 
The default.  Output to the command line
160
 
 
161
 
**database**
162
 
Connect to another database and pipe data to that.
163
 
 
164
 
.. versionadded:: 2010-09-27
 
160
   Destination of the data.
 
161
 
 
162
   **stdout**
 
163
   The default.  Output to the command line
 
164
 
 
165
   **database**
 
166
   Connect to another database and pipe data to that.
 
167
 
 
168
   .. versionadded:: Drizzle7 2010-09-27
165
169
 
166
170
.. option:: --destination-host hostname (=localhost)
167
171
 
168
 
The hostname for the destination database.  Requires
169
 
:option:`--destination-type` `= database`
 
172
   The hostname for the destination database.  Requires
 
173
   :option:`--destination-type` `= database`
170
174
 
171
 
.. versionadded:: 2010-09-27
 
175
   .. versionadded:: Drizzle7 2010-09-27
172
176
 
173
177
.. option:: --destination-port port (=3306)
174
178
 
175
 
The port number for the destination database.  Requires
176
 
:option:`--destination-type` `= database`
 
179
   The port number for the destination database.  Requires
 
180
   :option:`--destination-type` `= database`
177
181
 
178
 
.. versionadded:: 2010-09-27
 
182
   .. versionadded:: Drizzle7 2010-09-27
179
183
 
180
184
.. option:: --destination-user username
181
185
 
182
 
The username for the destinations database.  Requires
183
 
:option:`--destination-type` `= database`
 
186
   The username for the destinations database.  Requires
 
187
   :option:`--destination-type` `= database`
184
188
 
185
 
.. versionadded:: 2010-09-27
 
189
   .. versionadded:: Drizzle7 2010-09-27
186
190
 
187
191
.. option:: --destination-password password
188
192
 
189
 
The password for the destination database.  Requires
190
 
:option:`--destination-type` `= database`
 
193
   The password for the destination database.  Requires
 
194
   :option:`--destination-type` `= database`
191
195
 
192
 
.. versionadded:: 2010-09-27
 
196
   .. versionadded:: Drizzle7 2010-09-27
193
197
 
194
198
.. option:: --destination-database database
195
199
 
196
 
The database for the destination database, for use when only dumping a
197
 
single database.  Requires
198
 
:option:`--destination-type` `= database`
 
200
   The database for the destination database, for use when only dumping a
 
201
   single database.  Requires
 
202
   :option:`--destination-type` `= database`
199
203
 
200
 
.. versionadded:: 2010-09-27
 
204
   .. versionadded:: Drizzle7 2010-09-27
201
205
 
202
206
.. option:: --my-data-is-mangled
203
207
 
204
 
If your data is UTF8 but has been stored in a latin1 table using a latin1
205
 
connection then corruption is likely and drizzledump by default will retrieve
206
 
mangled data.  This is because MySQL will convert the data to UTF8 on the way
207
 
out to drizzledump and you effectively get a double-conversion to UTF8.
208
 
 
209
 
This typically happens with PHP apps that do not use 'SET NAMES'.
210
 
 
211
 
In these cases setting this option will retrieve the data as you see it in your
212
 
application.
213
 
 
214
 
.. versionadded:: 2011-01-31
215
 
 
216
 
.. option:: -h, --host hostname (=localhost)
217
 
 
218
 
The hostname of the database server.
219
 
 
220
 
.. option:: -u, --user username
221
 
 
222
 
The username for the database server.
223
 
 
224
 
.. option:: -P, --password password
225
 
 
226
 
The password for the database server.
227
 
 
228
 
.. option:: -p, --port port (=3306,4427)
229
 
 
230
 
The port number of the database server.  Defaults to 3306 for MySQL protocol
231
 
and 4427 for Drizzle protocol.
 
208
   If your data is UTF8 but has been stored in a latin1 table using a latin1
 
209
   connection then corruption is likely and drizzledump by default will retrieve
 
210
   mangled data.  This is because MySQL will convert the data to UTF8 on the way
 
211
   out to drizzledump and you effectively get a double-conversion to UTF8.
 
212
 
 
213
   This typically happens with PHP apps that do not use ``SET NAMES``.
 
214
 
 
215
   In these cases setting this option will retrieve the data as you see it in
 
216
   your application.
 
217
 
 
218
   .. versionadded:: Drizzle7 2011-01-31
 
219
 
 
220
.. option:: --host, -h hostname (=localhost)
 
221
 
 
222
   The hostname of the database server.
 
223
 
 
224
.. option:: --user, -u username
 
225
 
 
226
   The username for the database server.
 
227
 
 
228
.. option:: --password, -P password
 
229
 
 
230
   The password for the database server.
 
231
 
 
232
.. option:: --port, -p port (=4427)
 
233
 
 
234
   The port number of the database server.
232
235
 
233
236
.. option:: --protocol protocol (=mysql)
234
237
 
235
 
The protocol to use when connecting to the database server.  Options are:
236
 
 
237
 
**mysql**
238
 
The standard MySQL protocol.
239
 
 
240
 
**drizzle**
241
 
The Drizzle protocol.
 
238
   The protocol to use when connecting to the database server.  Options are:
 
239
 
 
240
   **mysql**
 
241
   The standard MySQL protocol.
 
242
 
 
243
   **drizzle**
 
244
   The Drizzle protocol.
242
245
 
243
246
Backups using Drizzledump
244
247
-------------------------
245
248
 
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
 
249
Backups of a database can be made very simply by running the following:
 
250
 
 
251
.. code-block:: bash
 
252
 
 
253
  $ drizzledump --all-databases > dumpfile.sql
 
254
 
 
255
This can then be re-imported into drizzle at a later date using:
 
256
 
 
257
.. code-block:: bash
 
258
 
 
259
  $ drizzle < dumpfile.sql
 
260
 
 
261
.. _drizzledump-migration-label:
253
262
 
254
263
MySQL Migration using Drizzledump
255
264
---------------------------------
264
273
 
265
274
.. warning::
266
275
 
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.
 
276
   :program:`drizzledump` will by default try to connect via. port 4427 so to
 
277
   connect to a MySQL server a port (such as 3306) must be specified.
269
278
 
270
279
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
 
280
will give you a Drizzle compatible output:
 
281
 
 
282
.. code-block:: bash
 
283
 
 
284
  $ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password > dumpfile.sql
274
285
 
275
286
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
 
287
into a Drizzle server as follows:
 
288
 
 
289
.. code-block:: bash
 
290
 
 
291
  $ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password --destination-type=database --desination-host=drizzle-host
279
292
 
280
293
.. note::
281
294
 
302
315
 * mediumblob -> blob
303
316
 * longblob -> blob
304
317
 * 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
 
318
 * set -> text [1]_
 
319
 * date/datetime default 0000-00-00 -> default NULL [2]_
 
320
 * date/datetime NOT NULL columns -> NULL [2]_
 
321
 * any date data containing 0000-00-00 -> NULL [2]_
 
322
 * time -> int of the number of seconds [3]_
 
323
 * enum-> DEFAULT NULL [4]_
311
324
 
312
325
.. rubric:: Footnotes
313
326
 
314
 
.. [1] This prevents data loss since MySQL's TIME data type has a range of
 
327
.. [1] There is currently no good alternative to SET, this is simply to preserve
 
328
       the data in the column.  There is a new alternative to SET to be included
 
329
       at a later date.
 
330
 
 
331
.. [2] Currently, ALL date columns have their DEFAULT set to NULL on migration.
 
332
       This is so that any rows with 0000-00-00 dates can convert to NULL.
 
333
 
 
334
.. [3] This prevents data loss since MySQL's TIME data type has a range of
315
335
       -838:59:59 - 838:59:59, and Drizzle's TIME type has a range of
316
 
       00:00:00 - 23:59:61.999999.
 
336
       00:00:00 - 23:59:59.
 
337
 
 
338
.. [4] This is so that empty entries such as '' will convert to NULL.