~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/clients/drizzledump.rst

  • Committer: Brian Aker
  • Date: 2010-12-30 08:28:31 UTC
  • mto: This revision was merged to the branch mainline in revision 2041.
  • Revision ID: brian@tangent.org-20101230082831-lofg2cf2bhpiaqd1
Update assert test, additional my_error.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
The :program:`drizzledump` tool has several available options:
31
31
 
32
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.
 
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
37
 
38
38
.. option:: -f, --force
39
39
 
40
 
Continue even if we get an sql-error.
 
40
   Continue even if we get an sql-error.
41
41
 
42
42
.. option:: -?, --help
43
43
 
44
 
Show a message with all the available options.
 
44
   Show a message with all the available options.
45
45
 
46
46
.. option:: -x, --lock-all-tables
47
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`.
 
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
51
 
52
52
.. option:: --single-transaction
53
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.
 
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
65
 
66
66
.. option:: --skip-opt
67
67
 
68
 
A shortcut for :option:`--skip-drop-table`, :option:`--skip-create`, 
69
 
: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`
70
70
 
71
71
.. option:: --tables t1 t2 ...
72
72
 
73
 
Dump a list of tables.
 
73
   Dump a list of tables.
74
74
 
75
75
.. option:: --show-progress-size rows (=10000)
76
76
 
77
 
Show progress of the dump every *rows* of the dump.  Requires
78
 
:option:`--verbose`
 
77
   Show progress of the dump every *rows* of the dump.  Requires
 
78
   :option:`--verbose`
79
79
 
80
80
.. option:: -v, --verbose
81
81
 
82
 
Sends various verbose information to stderr as the dump progresses.
 
82
   Sends various verbose information to stderr as the dump progresses.
83
83
 
84
84
.. option:: --skip-create
85
85
 
86
 
Do not dump the CREATE TABLE / CREATE DATABASE statements.
 
86
   Do not dump the CREATE TABLE / CREATE DATABASE statements.
87
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
91
 
92
 
        INSERT INTO `t1` VALUES (1,'hello');
93
 
        INSERT INTO `t1` VALUES (2,'world');
 
92
     INSERT INTO `t1` VALUES (1,'hello');
 
93
     INSERT INTO `t1` VALUES (2,'world');
94
94
 
95
95
.. option:: --skip-dump-date
96
96
 
97
 
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.
98
98
 
99
99
.. option:: --no-defaults
100
100
 
101
 
Do not attempt to read configuration from configuration files.
 
101
   Do not attempt to read configuration from configuration files.
102
102
 
103
103
.. option:: --add-drop-database
104
104
 
105
 
Add `DROP DATABASE` statements before `CREATE DATABASE`.
 
105
   Add `DROP DATABASE` statements before `CREATE DATABASE`.
106
106
 
107
107
.. option:: --compact
108
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`.
 
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
112
 
113
113
.. option:: -B, --databases
114
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.
 
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
117
 
118
118
.. option:: -K, --skip-disable-keys
119
119
 
120
 
Do not dump the statements `ALTER TABLE ... DISABLE KEYS` and
121
 
`ALTER TABLE ... ENABLE KEYS`
 
120
   Do not dump the statements `ALTER TABLE ... DISABLE KEYS` and
 
121
   `ALTER TABLE ... ENABLE KEYS`
122
122
 
123
123
.. option:: --ignore-table table
124
124
 
125
 
Do not dump specified table, needs to be in the format `database.table`.
126
 
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.
127
127
 
128
128
.. option:: --insert-ignore
129
129
 
130
 
Add the `IGNORE` keyword into every `INSERT` statement.
 
130
   Add the `IGNORE` keyword into every `INSERT` statement.
131
131
 
132
132
.. option:: --no-autocommit
133
133
 
134
 
Make the dump of each table a single transaction by wrapping it in `COMMIT`
135
 
statements.
 
134
   Make the dump of each table a single transaction by wrapping it in `COMMIT`
 
135
   statements.
136
136
 
137
137
.. option:: -n, --no-create-db
138
138
 
139
 
Do not dump the `CREATE DATABASE` statements when using
140
 
:option:`--all-databases` or :option:`--databases`.
 
139
   Do not dump the `CREATE DATABASE` statements when using
 
140
   :option:`--all-databases` or :option:`--databases`.
141
141
 
142
142
.. option:: -t, --skip-create
143
 
 
144
 
Do not dump the `CREATE TABLE` statements.
 
143
   
 
144
   Do not dump the `CREATE TABLE` statements.
145
145
 
146
146
.. option:: -d, --no-data
147
147
 
148
 
Do not dump the data itself, used to dump the schemas only.
 
148
   Do not dump the data itself, used to dump the schemas only.
149
149
 
150
150
.. option:: --replace
151
151
 
152
 
Use `REPLACE INTO` statements instead of `INSERT INTO`
 
152
   Use `REPLACE INTO` statements instead of `INSERT INTO`
153
153
 
154
154
.. option:: --destination-type type (=stdout)
155
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
 
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
165
 
166
166
.. option:: --destination-host hostname (=localhost)
167
167
 
168
 
The hostname for the destination database.  Requires
169
 
:option:`--destination-type` `= database`
 
168
   The hostname for the destination database.  Requires
 
169
   :option:`--destination-type` `= database`
170
170
 
171
 
.. versionadded:: 2010-09-27
 
171
   .. versionadded:: 2010-09-27
172
172
 
173
173
.. option:: --destination-port port (=3306)
174
174
 
175
 
The port number for the destination database.  Requires
176
 
:option:`--destination-type` `= database`
 
175
   The port number for the destination database.  Requires
 
176
   :option:`--destination-type` `= database`
177
177
 
178
 
.. versionadded:: 2010-09-27
 
178
  .. versionadded:: 2010-09-27
179
179
 
180
180
.. option:: --destination-user username
181
181
 
182
 
The username for the destinations database.  Requires
183
 
:option:`--destination-type` `= database`
 
182
   The username for the destinations database.  Requires
 
183
   :option:`--destination-type` `= database`
184
184
 
185
 
.. versionadded:: 2010-09-27
 
185
  .. versionadded:: 2010-09-27
186
186
 
187
187
.. option:: --destination-password password
188
188
 
189
 
The password for the destination database.  Requires
190
 
:option:`--destination-type` `= database`
 
189
   The password for the destination database.  Requires
 
190
   :option:`--destination-type` `= database`
191
191
 
192
 
.. versionadded:: 2010-09-27
 
192
  .. versionadded:: 2010-09-27
193
193
 
194
194
.. option:: --destination-database database
195
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
 
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
215
201
 
216
202
.. option:: -h, --host hostname (=localhost)
217
203
 
218
 
The hostname of the database server.
 
204
   The hostname of the database server.
219
205
 
220
206
.. option:: -u, --user username
221
207
 
222
 
The username for the database server.
 
208
   The username for the database server.
223
209
 
224
210
.. option:: -P, --password password
225
211
 
226
 
The password for the database server.
 
212
   The password for the database server.
227
213
 
228
214
.. option:: -p, --port port (=3306,4427)
229
215
 
230
 
The port number of the database server.  Defaults to 3306 for MySQL protocol
231
 
and 4427 for Drizzle protocol.
 
216
   The port number of the database server.  Defaults to 3306 for MySQL protocol
 
217
   and 4427 for Drizzle protocol.
232
218
 
233
219
.. option:: --protocol protocol (=mysql)
234
220
 
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.
 
221
   The protocol to use when connecting to the database server.  Options are:
 
222
 
 
223
   **mysql**
 
224
      The standard MySQL protocol.
 
225
 
 
226
   **drizzle**
 
227
      The Drizzle protocol.
242
228
 
243
229
Backups using Drizzledump
244
230
-------------------------
245
231
 
246
232
Backups of a database can be made very simply by running the following::
247
233
 
248
 
$ drizzledump --all-databases > dumpfile.sql
 
234
     $ drizzledump --all-databases > dumpfile.sql
249
235
 
250
236
This can then be re-imported into drizzle at a later date using::
251
237
 
252
 
$ drizzle < dumpfile.sql
 
238
     $ drizzle < dumpfile.sql
253
239
 
254
240
MySQL Migration using Drizzledump
255
241
---------------------------------
260
246
:program:`drizzledump` will automatically detect whether it is talking to a
261
247
MySQL or Drizzle database server.  If it is connected to a MySQL server it will
262
248
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.
 
249
format.
265
250
 
266
251
So, simply connecting to a MySQL server with :program:`drizzledump` as follows
267
252
will give you a Drizzle compatible output::
268
253
 
269
 
$ drizzledump --all-databases --host=mysql-host --port=3306 --user=mysql-user --password > dumpfile.sql
 
254
     $ drizzledump --all-databases --host=mysql-host --user=mysql-user --password > dumpfile.sql
270
255
 
271
256
Additionally :program:`drizzledump` can now dump from MySQL and import directly
272
257
into a Drizzle server as follows::
273
258
 
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.
 
259
     $ drizzledump --all-databases --host=mysql-host --user=mysql-user --password --destination-type=database --desination-host=drizzle-host
282
260
 
283
261
When you migrate from MySQL to Drizzle, the following conversions are required:
284
262
 
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.
 
263
MyISAM -> InnoDB
 
264
FullText -> drop it (with stderr warning)
 
265
int unsigned -> bigint
 
266
tinyint -> int
 
267
smallint -> int
 
268
mediumint -> int
 
269
tinytext -> text
 
270
mediumtext -> text
 
271
longtext -> text
 
272
tinyblob -> blob
 
273
mediumblob -> blob
 
274
longblob -> blob
 
275
time -> int (of seconds)
 
276
year -> int
 
277
set -> text
 
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
 
281
enum-> DEFAULT NULL
 
 
b'\\ No newline at end of file'