/ 中存储网

mysqldump备份MYSQL数据库方法使用详解

2014-07-13 16:24:34 来源:中存储网
mysqldump可以到处MySQL中的数据和表结构。可以使用该实用工具备份数据库或将数据库丛一个服务器复制到另一个服务器。需要注意的是,mysqldump是个工具,不是mysql内部的命令,要在命令行模式下执行。
mysqldump有三种备份模式 全库备份、备份指定的库、备份指定的表。
 a)备份服务器上所有的数据库
  >mysqldump -h localhost -u root -p -A -x >E:/mysql/mysqldump/all_database.sql
  只备份数据库中的表结构,不导出任何表的行信息。
  >mysqldump -h localhost -u root -p -A -x -d >E:/mysql/mysqldump/all_no_data.sql
  两个文件的大小分别为224KB、16KB
 b)备份指定的数据库
  >mysqldump -u root -p -l db_test >E:/mysql/mysqldump/db_test.sql
  备份多个数据库 -B参数
  >mysqldump -u root -p -l -B db_test test >E:/mysql/mysqldump/db_test.sql
 note:使用mysqldump导出指定数据库时,并没有导出数据库级的SQL语句(创建数据库的SQL语句),只导出了表结构的相关语句,例如导出的库是db_test,然后drop database db_test,选择数据库use test,执行导入操作source e:mysqlmysqldumpdb_test.sql会把相关的表结构导入到test库中,而不是新建db_test库并将表导入其中。
 c)备份数据库中指定的表
  >mysqldump -u root -p -l db_test t_innodb >E:/mysql/mysqldump/db_test_t_innodb.sql
  备份一个库中多个表
  >mysqldump -u root -p -l db_test t_innodb t_myisam >E:/mysql/mysqldump/db_test_innodb_myisam.sql

Q:
1)执行备份命令过程中,在提示输入密码时系统就会创建数据库要导出的文件,如db_backup.sql,但是里面还没有记录,此时即使取消导出操作,db_backup.sql文件也不会被删除。问,如果重复将数据库导出到db_backup.sql文件中,是在所有OS系统中都会覆盖重名文件db_backup.sql,还是提示错误!此时可能发生备份数据丢失问题 -----实验。在windows xp中,提示输入密码时会创建新的db_backup.sql文件,大小为0KB,当密码验证成功时,会写入数据。
2)怎么备份多个库中的表
2.使用source导入mysqldump导出的数据库文件
 a)mysql> source e:/mysql/mysqldump/all_databases.sql
   会导入所有服务器上所有的数据库,即all_databases.sql的内容。
 b)导出指定的数据库db_test,然后drop database db_test,如果还要导入db_test,需要重新创建db_test库,然后use db_test,在执行source e:/mysql/mysqldump/db_test.sql
 c)向库中导入指定的表
  mysql> source e:/mysql/mysqldump/db_test_t_innodb.sql

Q: 
1)导出了db_test库,库中有表t_innodb,t_myisam,此时只导入db_test库中的t_innodb表,怎么完成?

NOTE:
1)如果没有use database_name就执行source导入操作,会报错error-1046,提示"query ok,0 row affected",不断发出警报声。
2)如果导出时使用了-d参数,即不导出数据,然后执行了导入操作会致使数据库重写表结构,而丢失数据记录信息。