mysqldump工具的使用

来源:互联网 发布:java从键盘赋值 编辑:程序博客网 时间:2024/04/30 01:53
mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。
运行mysqldump需一定的权限。如,备份表的最低权限为select,备份视图需show view权限,备份触发器需trigger权限。mysqldump的输出可能包含alter database语句,如,用于保持备份库的字符集,此时需要有备份库上的alter权限。若不使用—single-transaction选项则还需lock tables权限,不同的选项可能需要对应的不同的权限。相应的,载入备份文件也至少需与创建备份文件时相同的权限。
如果上述权限你觉得麻烦,直接用root就可以了。

1、常用mysqldump备份命令:
(1)导出单个数据库(包括数据库中的表、数据、视图、触发器,但是不包含存储过程、事件)

    mysqldump -u username -ppassword dbname > dbname.sql


(2)导出单个数据库(包括数据库中的表、数据、视图、触发器,包含存储过程、事件)
    
    mysqldump -u username -ppassword dbname  -R -E> dbname.sql
    注意:R和E必须是大写,不同的大小写代表的意思不同。

(3)导出多个数据库
    mysqldump -u username -ppassword  --databases dbname dbname1 dbname2> dbname.sql

(4)导出数据库中的某张数据表
    mysqldump -u username -ppassword  dbname tablename > tablename.sql   

(5)导出数据库结构、表(不含数据)
    mysqldump -u username -ppassword  -d dbname > dbname.sql   
    mysqldump -u username -ppassword  --no-data dbnametablename > dbname.sql   
    注意:-d和--no-data,简称和全称,效果相同

(6)导出表数据(不含结构)
    mysqldump -u username -ppassword  -t dbname tablename> dbname.sql  

(7)导出数据库中的某张数据表并带有条件
    mysqldump -u username -ppassword  dbname tablename--where="xxx"> dbname.sql 


(8)备份位于其他服务器的远程数据库
    mysqldump  -h 192.168.10.13 -u username -ppassword dbname > dbname.sql
 

(9)导出数据库时使用压缩备份
    
    mysqldump -u username -ppassword  dbname tablename| gzip> dbname.sql   
    说明:使用压缩备份是讲文件转换成二进制文件,文件占用大大减少,但同时也占用CPU、延长了备份时间,如果说,你在生产环境能接受以时间换空间,那么这是个不错的办法。

说明:备份时,后缀不一定是sql,只要被视为文本文件,txt也可以,哪怕你随便起个后缀都可以,当然,后缀还是sql正常点。
       
           mysqldump备份默认对表带有drop table操作,对数据库不带有drop database操作。

           在每次备份后,都应该习惯性的查看备份内容是否正确。


2、常用mysqldump还原命令:
(1)还原数据库备份
    mysql -u username -ppassword dbname < dbname.sql

(2)还原数据库压缩备份
    gunzip < dbname.sql.gz | mysql -u username -ppassword dbname

(3)进入数据库执行命令  
    source dbname.sql

注意:无论是-R,-d,--no-data这些参数的位置不是固定的,但是只能在mysqldump之后,并且不能在 root -p之间。
   mysqldump -u username -ppassword -d dbname tablename> dbname.sql
   mysqldump-d -u username -ppassword  dbname tablename> dbname.sql

    mysqldump -u username -ppassword dbname tablename -d> dbname.sql
  当-d 在最后时,如果是采用压缩备份,那么命令不会成功,因为在“| gzip”之后被视于压缩命令,不被适用。
  所以,为了规范、避免错误,参数最好还是按下面的的位置,如下
  mysqldump -u username -ppassword -d dbname tablename> dbname.sql


mysqldump常用参数说明:

–all-databases , -A 导出全部数据库
–all-tablespaces , -Y导出全部表空间。
  mysqldump -uroot -p –all-databases –all-tablespaces–no-tablespaces , -y不导出任何表空间信息。mysqldump -uroot -p –all-databases –no-tablespaces
–add-drop-database每个数据库创建之前添加drop数据库语句。
  mysqldump -uroot -p –all-databases –add-drop-database
–add-drop-table每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用–skip-add-drop-table取消选项)mysqldump -uroot -p –all-databases (默认添加drop语句)
  mysqldump -uroot -p –all-databases –skip-add-drop-table (取消drop语句)
–add-locks在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE。(默认为打开状态,使用–skip-add-locks取消选项)
   mysqldump -uroot -p –all-databases (默认添加LOCK语句)
   mysqldump -uroot -p –all-databases –skip-add-locks (取消LOCK语句)
–comments附加注释信息。默认为打开,可以用–skip-comments取消
  mysqldump -uroot -p –all-databases (默认记录注释)mysqldump -uroot -p –all-databases –skip-comments (取消注释)
–compact导出更少的输出信息(用于调试)。去掉注释和头尾等结构。
   可以使用选项:–skip-add-drop-table –skip-add-locks –skip-      
   comments –skip-disable-keysmysqldump -uroot -p –all-databases –compact
–default-character-set设置默认字符集,默认值为utf8
  mysqldump -uroot -p –all-databases –default-character-set=latin1
–delayed-insert采用延时插入方式(INSERT DELAYED)导出数据
  mysqldump -uroot -p –all-databases –delayed-insert
–flush-logs开始导出之前刷新日志。请注意:假如一次导出多个数据库(使用选项–databases或者–all-databases),将会逐个数据库刷新日志。除使用–lock-all-tables或者–master-data外。在这种情况下,日志将会被刷新一次,相应的所以表同时被锁定。因此,如果打算同时导出和刷新日志应该使用–lock-all-tables 或者–master-data 和–flush-logs。
   mysqldump -uroot -p –all-databases–flush-logs
–ignore-table不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:–ignore-table=database.table1 –ignore-table=database.table2 ……
  mysqldump -uroot -p –host=localhost –all-databases –ignore-table=mysql.user
–lock-all-tables, -x提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭–single-transaction 和–lock-tables 选项。
  mysqldump -uroot -p –host=localhost –all-databases –lock-all-tables
–lock-tables, -l开始导出前,锁定所有表。用READ LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,–single-transaction是一个更好的选择,因为它根本不需要锁定表。请注意当导出多个数据库时,–lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。         
   mysqldump -uroot -p –host=localhost –all-databases –lock-tables


    
0 0