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