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 来查看详细帮助。