~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/clients/drizzledump.rst

  • Committer: Brian Aker
  • Date: 2009-08-17 01:44:23 UTC
  • mto: This revision was merged to the branch mainline in revision 1118.
  • Revision ID: brian@gaz-20090817014423-jxi2qonsumm8mndf
Remove SQL level reference for DELAY (just now done correctly by default in
engine).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Drizzledump Backup Tool
2
 
=======================
3
 
 
4
 
Synopsis
5
 
--------
6
 
 
7
 
**drizzledump** [*OPTIONS*] *database* [*tables*]
8
 
 
9
 
**drizzledump** [*OPTIONS*] *--databases* [*OPTIONS*] *DB1* [*DB2* *DB3*...]
10
 
 
11
 
**drizzledump** [*OPTIONS*] *--all-databases* [*OPTIONS*]
12
 
 
13
 
Description
14
 
-----------
15
 
 
16
 
:program:`drizzledump` is used for backing up and
17
 
restoring logical backups of a Drizzle database, as well as for migrating
18
 
from *MySQL*. 
19
 
 
20
 
When connecting to a Drizzle server it will do a plain dump of the server.  It
21
 
will, however, automatically detect when it is connected to a *MySQL* server and
22
 
will convert the tables and data into a Drizzle compatible format.
23
 
 
24
 
Any binary data in tables will be converted into hexadecimal output so that it
25
 
does not corrupt the dump file.
26
 
 
27
 
Drizzledump options
28
 
-------------------
29
 
 
30
 
The :program:`drizzledump` tool has several available options:
31
 
 
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`.
51
 
 
52
 
.. option:: --single-transaction
53
 
 
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
 
 
59
 
        ALTER TABLE
60
 
        DROP TABLE
61
 
        RENAME TABLE
62
 
        TRUNCATE TABLE
63
 
 
64
 
Only works with InnoDB.
65
 
 
66
 
.. option:: --skip-opt
67
 
 
68
 
A shortcut for :option:`--skip-drop-table`, :option:`--skip-create`, 
69
 
:option:`--skip-extended-insert` and :option:`--skip-disable-keys`
70
 
 
71
 
.. option:: --tables t1 t2 ...
72
 
 
73
 
Dump a list of tables.
74
 
 
75
 
.. option:: --show-progress-size rows (=10000)
76
 
 
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.
87
 
 
88
 
.. option:: --skip-extended-insert
89
 
 
90
 
Dump every row on an individual line.  For example::
91
 
 
92
 
        INSERT INTO `t1` VALUES (1,'hello');
93
 
        INSERT INTO `t1` VALUES (2,'world');
94
 
 
95
 
.. option:: --skip-dump-date
96
 
 
97
 
Do not display the date/time at the end of the dump.
98
 
 
99
 
.. option:: --no-defaults
100
 
 
101
 
Do not attempt to read configuration from configuration files.
102
 
 
103
 
.. option:: --add-drop-database
104
 
 
105
 
Add `DROP DATABASE` statements before `CREATE DATABASE`.
106
 
 
107
 
.. option:: --compact
108
 
 
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`
122
 
 
123
 
.. option:: --ignore-table table
124
 
 
125
 
Do not dump specified table, needs to be in the format `database.table`.
126
 
Can be specified multiple times for multiple tables.
127
 
 
128
 
.. option:: --insert-ignore
129
 
 
130
 
Add the `IGNORE` keyword into every `INSERT` statement.
131
 
 
132
 
.. option:: --no-autocommit
133
 
 
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.
149
 
 
150
 
.. option:: --replace
151
 
 
152
 
Use `REPLACE INTO` statements instead of `INSERT INTO`
153
 
 
154
 
.. option:: --destination-type type (=stdout)
155
 
 
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
165
 
 
166
 
.. option:: --destination-host hostname (=localhost)
167
 
 
168
 
The hostname for the destination database.  Requires
169
 
:option:`--destination-type` `= database`
170
 
 
171
 
.. versionadded:: 2010-09-27
172
 
 
173
 
.. option:: --destination-port port (=3306)
174
 
 
175
 
The port number for the destination database.  Requires
176
 
:option:`--destination-type` `= database`
177
 
 
178
 
.. versionadded:: 2010-09-27
179
 
 
180
 
.. option:: --destination-user username
181
 
 
182
 
The username for the destinations database.  Requires
183
 
:option:`--destination-type` `= database`
184
 
 
185
 
.. versionadded:: 2010-09-27
186
 
 
187
 
.. option:: --destination-password password
188
 
 
189
 
The password for the destination database.  Requires
190
 
:option:`--destination-type` `= database`
191
 
 
192
 
.. versionadded:: 2010-09-27
193
 
 
194
 
.. option:: --destination-database database
195
 
 
196
 
The database for the destination database, for use when only dumping a
197
 
single database.  Requires
198
 
:option:`--destination-type` `= database`
199
 
 
200
 
.. versionadded:: 2010-09-27
201
 
 
202
 
.. option:: --my-data-is-mangled
203
 
 
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.
232
 
 
233
 
.. option:: --protocol protocol (=mysql)
234
 
 
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.
242
 
 
243
 
Backups using Drizzledump
244
 
-------------------------
245
 
 
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
253
 
 
254
 
MySQL Migration using Drizzledump
255
 
---------------------------------
256
 
 
257
 
As of version 2010-09-27 there is the capability to migrate databases from
258
 
MySQL to Drizzle using :program:`drizzledump`.
259
 
 
260
 
:program:`drizzledump` will automatically detect whether it is talking to a
261
 
MySQL or Drizzle database server.  If it is connected to a MySQL server it will
262
 
automatically convert all the structures and data into a Drizzle compatible 
263
 
format.  It will, however, by default try to connect via. port 4427 so to
264
 
connect to a MySQL server a port must be specified.
265
 
 
266
 
So, simply connecting to a MySQL server with :program:`drizzledump` as follows
267
 
will give you a Drizzle compatible output::
268
 
 
269
 
$ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password > dumpfile.sql
270
 
 
271
 
Additionally :program:`drizzledump` can now dump from MySQL and import directly
272
 
into a Drizzle server as follows::
273
 
 
274
 
$ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password --destination-type=database --desination-host=drizzle-host
275
 
 
276
 
Please take special note of :ref:`old-passwords-label` if you have connection
277
 
issues from :program:`drizzledump` to your MySQL server.
278
 
 
279
 
If you find your VARCHAR and TEXT data does not look correct in a drizzledump
280
 
output, it is likely that you have UTF8 data stored in a non-UTF8 table.  In
281
 
which case please check the :option:`--my-data-is-mangled` option.
282
 
 
283
 
When you migrate from MySQL to Drizzle, the following conversions are required:
284
 
 
285
 
 * MyISAM -> InnoDB
286
 
 * FullText -> drop it (with stderr warning)
287
 
 * int unsigned -> bigint
288
 
 * tinyint -> int
289
 
 * smallint -> int
290
 
 * mediumint -> int
291
 
 * tinytext -> text
292
 
 * mediumtext -> text
293
 
 * longtext -> text
294
 
 * tinyblob -> blob
295
 
 * mediumblob -> blob
296
 
 * longblob -> blob
297
 
 * time -> int (of seconds)
298
 
 * year -> int
299
 
 * set -> text
300
 
 * date/datetime default 0000-00-00 -> default NULL (Currently, ALL date columns have their DEFAULT set to NULL on migration)
301
 
 * date/datetime NOT NULL columns -> NULL
302
 
 * any date data containing 0000-00-00 -> NULL
303
 
 * TIME -> INT of the number of seconds*
304
 
 * enum-> DEFAULT NULL
305
 
 
306
 
* This prevents data loss since MySQL's TIME data type has a range of -838:59:59 - 838:59:59, and Drizzle's TIME type has a range of 00:00:00 - 23:59:61.999999.