MYSQLDUMP基本使用

1. 导出所有数据库:
mysqldump -uroot -p -S /tmp/mysql3306.sock --add-drop-database  --complete-insert --extended-insert --single-transaction --all-database  
--default-character-set=utf8  --triggers -R  >alldb.sql

--add-drop-database: 在CREATE DATABASE之前增加DROP DATABASE语句

--complete-insert:导出数据采用包含字段名的完整INSERT方式,如:INSERT INTO `help_keyword` (`help_keyword_id`, `name`) VALUES (0,'JOIN'),(1,'HOST'),(2,'REPEAT'),(3,'SERIALIZABLE')
会自动将--extended-insert的功能带进去。同样也请注意max_allowed_packet参数

--extended-insert: 将数据都放在一行处理,如:insert into t values(6),(8),(9); 这样就扩大了一个事务的大小, 注意配置中的max_allowed_packet参数,这个参数会引起主从问题
以上两个参数在单表数据量小的时候,有加快导入的功能,优化了导入时间,但如果有大表的话,请谨慎使用。

--single-transaction: InnoDB 表在备份时,通常启用选项 --single-transaction 来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:REPEATABLE READ。

--all-database: 导出所有数据库。

--default-character-set=utf8: 指定字符集。

--triggers: 导出触发器。

-R: 导出存储过程。



2. 导出单个数据库:
mysqldump -uroot -p -S /tmp/mysql3306.sock --add-drop-database  
--complete-insert --extended-insert --single-transaction --default-character-set=utf8  --triggers -R  --database test >test.sql

--database test: 指定指出的数据库。

3. 导出单个数据库的所有表结构:
mysqldump -uroot -p -S /tmp/mysql3306.sock --add-drop-database --single-transaction --default-character-set=utf8 -d  --triggers -R --database test >test1.sql
-d: --no-data 不导出数据。

4. 导出单个表:
mysqldump -uroot -p -S /tmp/mysql3306.sock --add-drop-table --extended-insert --complete-insert  --single-transaction  --default-character-set=utf8  --triggers -R --database test --tables t1 test >t1.sql
--tables t1 test: t1, test都是表名,这个数据可以指定表来导。
--add-drop-table: 在创建表之前添加删除表的语句。

5. 导出备份来做主从:
mysqldump -uroot -p -S /tmp/mysql3306.sock --complete-insert --extended-insert  --single-transaction --add-drop-database --master-data=1 --database test >test_backup.sql
--master-data: 这个参数有三个值,分别是:
0  不用加任何东西
1  导出SQL文件中,明显指定命令CHANGE MASTER TO,SQL文件中可以看得到BINLOG号与POS号。
2  导出SQL文件中,隐式CHANGE MASTER TO,例如 -- CHANGE MASTER TO,这个不会执行的意思。

6. 根据条件来导出单表:
mysqldump -uroot -p -S /tmp/mysql3306.sock --add-drop-table --extended-insert --complete-insert  --single-transaction  --default-character-set=utf8  --triggers -R --database test --tables test --where='id=9240929' >test3.sql
--where: 指定导出条件。

--no-create-db
在导出时不带创建库的语句。
如果目标库已有所要导入的数据库,在导出时可以指定不要创建数据库的语句。


--no-create-info
Do not write CREATE TABLE statements that re-create each dumped table
在导出时不带创建表的语句。

--delete-master-logs
在mysql复制环境中,备份完后,会在master上执行删除(刷新)binlog操作。

--disable-keys
For each table, surround the INSERT statements with disable and enable keys statements
在导入时先关闭索引等,这样可以加快导入的速度, 待导入完成后需去重建索引。

MYSQLDUMP的选项还有很多, 有不明白的可以使用  mysqldump --help  来查看详细帮助。

  

posted @ 2014-06-09 00:28 SMALL-D 阅读(...) 评论(...) 编辑 收藏