24
24
Any binary data in tables will be converted into hexadecimal output so that it
25
25
does not corrupt the dump file.
27
.. _drizzledump-options-label:
29
27
Drizzledump options
30
28
-------------------
32
30
The :program:`drizzledump` tool has several available options:
34
.. option:: --all-databases, -A
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.
40
.. option:: --force, -f
42
Continue even if we get an sql-error.
44
.. option:: --help, -?
46
Show a message with all the available options.
48
.. option:: --lock-all-tables, -x
50
Locks all the tables for all databases with a global read lock. The lock is
51
released automatically when :program:`drizzledump` ends.
52
Turns on :option:`--single-transaction` and :option:`--lock-tables`.
32
.. option:: -A, --all-databases
34
Dumps all databases found on the server apart from *information_schema* and
35
*data_dictionary* in Drizzle and *information_schema*, *performance_schema*
38
.. option:: -f, --force
40
Continue even if we get an sql-error.
42
.. option:: -?, --help
44
Show a message with all the available options.
46
.. option:: -x, --lock-all-tables
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`.
54
52
.. option:: --single-transaction
56
Creates a consistent snapshot by dumping the tables in a single transaction.
57
During the snapshot no other connected client should use any of the
58
following as this will implicitly commit the transaction and prevent the
68
Only works with InnoDB.
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
64
Only works with InnoDB.
70
66
.. option:: --skip-opt
72
A shortcut for :option:`--skip-drop-table`, :option:`--skip-create`,
73
:option:`--skip-extended-insert` and :option:`--skip-disable-keys`
68
A shortcut for :option:`--skip-drop-table`, :option:`--skip-create`,
69
:option:`--skip-extended-insert` and :option:`--skip-disable-keys`
75
71
.. option:: --tables t1 t2 ...
77
Dump a list of tables.
73
Dump a list of tables.
79
75
.. option:: --show-progress-size rows (=10000)
81
Show progress of the dump every *rows* of the dump. Requires
84
.. option:: --verbose, -v
86
Sends various verbose information to stderr as the dump progresses.
77
Show progress of the dump every *rows* of the dump. Requires
80
.. option:: -v, --verbose
82
Sends various verbose information to stderr as the dump progresses.
84
.. option:: --skip-create
86
Do not dump the CREATE TABLE / CREATE DATABASE statements.
88
88
.. option:: --skip-extended-insert
90
Dump every row on an individual line. For example:
94
INSERT INTO `t1` VALUES (1,'hello');
95
INSERT INTO `t1` VALUES (2,'world');
90
Dump every row on an individual line. For example::
92
INSERT INTO `t1` VALUES (1,'hello');
93
INSERT INTO `t1` VALUES (2,'world');
97
95
.. option:: --skip-dump-date
99
Do not display the date/time at the end of the dump.
97
Do not display the date/time at the end of the dump.
101
99
.. option:: --no-defaults
103
Do not attempt to read configuration from configuration files.
101
Do not attempt to read configuration from configuration files.
105
103
.. option:: --add-drop-database
107
Add ``DROP DATABASE`` statements before ``CREATE DATABASE``.
105
Add `DROP DATABASE` statements before `CREATE DATABASE`.
109
107
.. option:: --compact
111
Gives a more compact output by disabling header/footer comments and enabling
112
:option:`--skip-add-drop-table`, :option:`--skip-disable-keys`
113
and :option:`--skip-add-locks`.
115
.. option:: --databases, -B
117
Dump several databases. The databases do not need to follow on after this
118
option, they can be anywhere in the command line.
120
.. option:: --skip-disable-keys, -K
122
Do not dump the statements ``ALTER TABLE ... DISABLE KEYS`` and
123
``ALTER TABLE ... ENABLE KEYS``
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`.
113
.. option:: -B, --databases
115
Dump several databases. The databases do not need to follow on after this
116
option, they can be anywhere in the command line.
118
.. option:: -K, --skip-disable-keys
120
Do not dump the statements `ALTER TABLE ... DISABLE KEYS` and
121
`ALTER TABLE ... ENABLE KEYS`
125
123
.. option:: --ignore-table table
127
Do not dump specified table, needs to be in the format ``database.table``.
128
Can be specified multiple times for multiple tables.
125
Do not dump specified table, needs to be in the format `database.table`.
126
Can be specified multiple times for multiple tables.
130
128
.. option:: --insert-ignore
132
Add the ``IGNORE`` keyword into every ``INSERT`` statement.
130
Add the `IGNORE` keyword into every `INSERT` statement.
134
132
.. option:: --no-autocommit
136
Make the dump of each table a single transaction by wrapping it in ``COMMIT``
139
.. option:: --no-create-db, -n
141
Do not dump the ``CREATE DATABASE`` statements when using
142
:option:`--all-databases` or :option:`--databases`.
144
.. option:: --skip-create, -t
146
Do not dump the ``CREATE TABLE`` statements.
148
.. option:: --no-data, -d
150
Do not dump the data itself, used to dump the schemas only.
134
Make the dump of each table a single transaction by wrapping it in `COMMIT`
137
.. option:: -n, --no-create-db
139
Do not dump the `CREATE DATABASE` statements when using
140
:option:`--all-databases` or :option:`--databases`.
142
.. option:: -t, --skip-create
144
Do not dump the `CREATE TABLE` statements.
146
.. option:: -d, --no-data
148
Do not dump the data itself, used to dump the schemas only.
152
150
.. option:: --replace
154
Use ``REPLACE INTO`` statements instead of ``INSERT INTO``
152
Use `REPLACE INTO` statements instead of `INSERT INTO`
156
154
.. option:: --destination-type type (=stdout)
158
Destination of the data.
161
The default. Output to the command line
164
Connect to another database and pipe data to that.
166
.. versionadded:: 2010-09-27
156
Destination of the data.
159
The default. Output to the command line
162
Connect to another database and pipe data to that.
164
.. versionadded:: 2010-09-27
168
166
.. option:: --destination-host hostname (=localhost)
170
The hostname for the destination database. Requires
171
:option:`--destination-type` `= database`
168
The hostname for the destination database. Requires
169
:option:`--destination-type` `= database`
173
.. versionadded:: 2010-09-27
171
.. versionadded:: 2010-09-27
175
173
.. option:: --destination-port port (=3306)
177
The port number for the destination database. Requires
178
:option:`--destination-type` `= database`
175
The port number for the destination database. Requires
176
:option:`--destination-type` `= database`
180
.. versionadded:: 2010-09-27
178
.. versionadded:: 2010-09-27
182
180
.. option:: --destination-user username
184
The username for the destinations database. Requires
185
:option:`--destination-type` `= database`
182
The username for the destinations database. Requires
183
:option:`--destination-type` `= database`
187
.. versionadded:: 2010-09-27
185
.. versionadded:: 2010-09-27
189
187
.. option:: --destination-password password
191
The password for the destination database. Requires
192
:option:`--destination-type` `= database`
189
The password for the destination database. Requires
190
:option:`--destination-type` `= database`
194
.. versionadded:: 2010-09-27
192
.. versionadded:: 2010-09-27
196
194
.. option:: --destination-database database
198
The database for the destination database, for use when only dumping a
199
single database. Requires
200
:option:`--destination-type` `= database`
202
.. versionadded:: 2010-09-27
204
.. option:: --my-data-is-mangled
206
If your data is UTF8 but has been stored in a latin1 table using a latin1
207
connection then corruption is likely and drizzledump by default will retrieve
208
mangled data. This is because MySQL will convert the data to UTF8 on the way
209
out to drizzledump and you effectively get a double-conversion to UTF8.
211
This typically happens with PHP apps that do not use ``SET NAMES``.
213
In these cases setting this option will retrieve the data as you see it in your
216
.. versionadded:: 2011-01-31
218
.. option:: --host, -h hostname (=localhost)
220
The hostname of the database server.
222
.. option:: --user, -u username
224
The username for the database server.
226
.. option:: --password, -P password
228
The password for the database server.
230
.. option:: --port, -p port (=4427)
232
The port number of the database server.
196
The database for the destination database, for use when only dumping a
197
single database. Requires
198
:option:`--destination-type` `= database`
200
.. versionadded:: 2010-09-27
202
.. option:: -h, --host hostname (=localhost)
204
The hostname of the database server.
206
.. option:: -u, --user username
208
The username for the database server.
210
.. option:: -P, --password password
212
The password for the database server.
214
.. option:: -p, --port port (=3306,4427)
216
The port number of the database server. Defaults to 3306 for MySQL protocol
217
and 4427 for Drizzle protocol.
234
219
.. option:: --protocol protocol (=mysql)
236
The protocol to use when connecting to the database server. Options are:
239
The standard MySQL protocol.
242
The Drizzle protocol.
221
The protocol to use when connecting to the database server. Options are:
224
The standard MySQL protocol.
227
The Drizzle protocol.
244
229
Backups using Drizzledump
245
230
-------------------------
247
Backups of a database can be made very simply by running the following:
251
$ drizzledump --all-databases > dumpfile.sql
253
This can then be re-imported into drizzle at a later date using:
257
$ drizzle < dumpfile.sql
232
Backups of a database can be made very simply by running the following::
234
$ drizzledump --all-databases > dumpfile.sql
236
This can then be re-imported into drizzle at a later date using::
238
$ drizzle < dumpfile.sql
259
240
MySQL Migration using Drizzledump
260
241
---------------------------------
267
248
automatically convert all the structures and data into a Drizzle compatible
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.
275
251
So, simply connecting to a MySQL server with :program:`drizzledump` as follows
276
will give you a Drizzle compatible output:
280
$ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password > dumpfile.sql
252
will give you a Drizzle compatible output::
254
$ drizzledump --all-databases --host=mysql-host --user=mysql-user --password > dumpfile.sql
282
256
Additionally :program:`drizzledump` can now dump from MySQL and import directly
283
into a Drizzle server as follows:
287
$ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password --destination-type=database --desination-host=drizzle-host
291
Please take special note of :ref:`old-passwords-label` if you have connection
292
issues from :program:`drizzledump` to your MySQL server.
295
If you find your VARCHAR and TEXT data does not look correct in a drizzledump
296
output, it is likely that you have UTF8 data stored in a non-UTF8 table. In
297
which case please check the :option:`--my-data-is-mangled` option.
257
into a Drizzle server as follows::
259
$ drizzledump --all-databases --host=mysql-host --user=mysql-user --password --destination-type=database --desination-host=drizzle-host
299
261
When you migrate from MySQL to Drizzle, the following conversions are required:
302
* FullText -> drop it (with stderr warning)
303
* int unsigned -> bigint
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]_
321
.. rubric:: Footnotes
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
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.
330
.. [3] This prevents data loss since MySQL's TIME data type has a range of
331
-838:59:59 - 838:59:59, and Drizzle's TIME type has a range of
334
.. [4] This is so that empty entries such as '' will convert to NULL.
264
FullText -> drop it (with stderr warning)
265
int unsigned -> bigint
275
time -> int (of seconds)
278
date/datetime default 0000-00-00 -> default NULL *(Currently, ALL date columns have their DEFAULT set to NULL on migration)
279
date/datetime NOT NULL columns -> NULL
280
any date data containing 0000-00-00 -> NULL
b'\\ No newline at end of file'