MySQL备份和恢复数据表的方法(1)(3)
3、有关生成SQL语句的优化控制
--add-locks 生成的SQL 语句中,在每个表数据恢复之前增加LOCK TABLES并且之后UNLOCK TABLE。(为了使得更快地插入到MySQL)。
--add-drop-table 生成的SQL 语句中,在每个create语句之前增加一个drop table。
-e, --extended-insert 使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
下面两个选项能够加快备份表的速度:
-l, --lock-tables. 为开始导出数据前,读锁定所有涉及的表。
-q, --quick 不缓冲查询,直接倾倒至stdout。
理论上,备份时你应该指定上诉所有选项。这样会使命令行过于复杂,作为代替,你可以简单的指定一个--opt选项,它会使上述所有选项有效。
例如,你将导出一个很大的数据库:
shell> mysqldump --opt db_name > db_name.txt
当然,使用--tab选项时,由于不生成恢复数据的SQL语句,使用--opt时,只会加快数据导出。
4、恢复mysqldump备份的数据
由于备份文件是SQL语句的集合,所以需要在批处理模式下使用客户机
如果你使用mysqldump备份单个数据库或表,即:
shell>mysqldump --opt db_name > db_name.sql
由于db_name.sql中不包括创建数据库或者选取数据库的语句,你需要指定数据库
shell>mysql db2 < db_name.sql
如果,你使用--databases或者--all-databases选项,由于导出文件中已经包含创建和选用数据库的语句,可以直接使用,不比指定数据库,例如:
shell>mysqldump --databases db_name > db_name.sql 如果你使用--tab选项备份数据,数据恢复可能效率会高些 例如,备份数据库db_name后在恢复: shell>mysqldump --tab=/path/to/dir --opt test 如果要恢复表的结构,可以这样: shell>mysql < /path/to/dir/tbl1.sql 如果要恢复数据,可以这样 shell>mysqlimport -l db /path/to/dir/tbl1.txt 如果是在Unix平台下使用(推荐),就更方便了: shell>ls -l *.sql | mysql db shell>mysqlimport --lock-tables db /path/to/dir/*.txt
shell>mysql
- 上一篇:深入MySQL数据库的索引(1)
- 下一篇:使用MySQL内建复制功能