导出mysql某个库的全部存储过程
mysqldump -t -d -R dbname>xx.sql
Mysql备份语句及参数说明
mysqldump -umysql -ppassword -P 3308 -h 127.0.0.1 --default-character-set=utf8 -c --triggers -R --hex-blob -x --opt vtms3000 qdevices > 3000.sql
-- 简化
mysqldump -umysql -ppassword -P 3308 -h 127.0.0.1 --default-character-set=utf8 -c --hex-blob -x --opt test > test.sql
-- 只导出数据
mysqldump -umysql -ppassword -P 3308 -h 127.0.0.1 --default-character-set=utf8 -c -i -t --opt vtms3000 qdevices > 3000.sql
-- mysqldump -h 10.30.4.89 -umysql -ppassword --default-character-set=utf8 --opt --extended-insert=false --triggers -R -d --hex-blob -x vtms3000_new > vtms3000.sql
--triggers 同时导出触发器
--routines,-R 导出存储过程以及自定义函数
--no-data,-d 不导出任何数据,只导出数据库表结构。
--lock-all-tables,-x 在开始导出之前,提交请求锁定所有数据库中的所有表,以保证数据的一致性。
--hex-blob 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用本选项。影响到的字段类型有 BINARY、VARBINARY、BLOB。
--no-create-info,-t 只导出数据,而不添加 CREATE TABLE 语句。
-P,--port=# 端口(必须是大写的端口)
--default-character-set=charset 指定导出数据时采用何种字符集
--complete-insert,-c 导出的数据采用包含字段名的完整 INSERT 方式,也就是把所有的值都写在一行。
这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。
因此,需要谨慎使用该参数,至少我不推荐。
经过测试,无以上问。测试qregkey100w条,qtablelog321.9w条,max_allowed_packet=25165824,net_buffer_length,备份,在还原(备份文件221 MB)。无存在以上问题
--single-transaction 该选项在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。
本选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。
要想导出大表的话,应结合使用 --quick 选项。
-opt 这只是一个快捷选项,等同于同时添加
--add-drop-tables
--add-locking
--create-option
--disable-keys 告诉 mysqldump 在 INSERT 语句的开头和结尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。
--extended-insert 默认情况下,mysqldump 开启 --complete-insert 模式,因此不想用它的的话,就使用本选项,设定它的值为 false 即可。
--lock-tables 不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 --single-transaction 选项
--quick
--set-charset 选项。
本选项能让 mysqldump 很快的导出数据,并且导出的数据能很快导回。该选项默认开启,但可以用 --skip-opt 禁用。
-i, --comments Write additional information.
--ignore-table=name Do not dump the specified table. To specify more than one
table to ignore, use the directive multiple times, once
for each table. Each table must be specified with both
database and table names, e.g.,
--ignore-table=database.table.
注意,如果运行 mysqldump 没有指定 --quick 或 --opt 选项,则会将整个结果集放在内存中。如果导出大数据库的话可能会出现问题。
--log-error=name Append warnings and errors to given file.
-T, --tab=name Create tab-separated textfile for each table to given
path. (Create .sql and .txt files.) NOTE: This only works
if mysqldump is run on the same machine as the mysqld
server.
Mysqldump的帮助文档导出来:
mysqldump --help > a.sql
请注意:文档的最后说明了mysqldump一些默认参数的配置,如果默认参数不符合要求,则必须进行人工重新赋予参数。如Port默认3306,而实际要3308。
参考文献
- mysqldump的常用语句及各参数详解 非常详细
- mysqldump备份还原和mysqldump导入导出语句大全详解 转 简化版
- 关于java调用mysqldump的问题 唯一有价值的是使用LineNumberReader读取返回的结果