数据库的备份和修复是确保数据的完整性,安全性的重要功能,MySQL数据库提供了以下备份和修复工具:
根据备份时是否停止MySQL数据库服务,备份数据库分为在线备份和离线备份。
1 在线备份和恢复:
select into outfile | dumpfile备份文件
利用select的into outfile 或dumpfile,可以将查询的结果导入到一个文件,起语法格式如下:
select ... into (outfile | dumpfile) 'file_name'
[fields [terminated by '\t'] [optionally] enclosed by ' '] [lines terminated by '\n']
 
load data infile 恢复文件
其语法格式如下:
load data infile 'file_name.txt' [replace | ignore] into table tbl_name
[fields [terminated by '\t'] [optionally] enclosed by ' '] [lines terminated by '\n']
 
mysqldump备份文件
利用select into 导出数据时,只能导出数据的值,导出后,就失去了数据与结构间的关联。导入数据时,只能依据自然序将各(字段)对应起来,如果用户导出数据后修改了数据结构或数据项的位置,那么导入的数据就会发生错误。
使用mysqldump能实现带结构的备份,从而克服上述问题,mysqldump是一个MySQL自带的标准在线导出工具,导出后数据将以SQL语句的形式存在,可以选择导出数据结构(建表SQL语句)或数据(数据插入SQL语句)。
利用mysqldump(带-c或-complete_insert)可避免select into/load data 结构与数据分离所带来的问题,mysqldump存在于mysql/bin  下,其使用方法如下:
第一种导出指定数据库的表,如不指定tables,将导出这个数据库的所有表:
mysqldump [options] database [tables]
第二种可导出多个数据库:
mysqldump [options] --database [option] db1 [, db2, db3...]
第三种导出当前服务器的所有的数据库:
mysqldump [options] -all -database [options]
 
mysqlhotcopy备份
对于MyISAM型数据表,mysqlhotcopy是备份数据库和单个表的最快的途径,但只能运行在数据库目录所在的机子上。mysqlhotcopy是一个Perl脚本,使用LOCK TABLES ,
FLUSH TABLES 和cp 或scp来快速的备份数据库。
mysqlhotcopy 可方便的将某个数据库复制成另外个数据库而不中止服务。其语法格式如下:
mysqlhotcopy db_name
 
 
 
离线备份:
即MySQL数据库关闭后,直接用命令行复制数据库,优点是一定会保持备份前的数据的一致性。
可通过如下命令将MySQL目录下的数据库采用gzip方式压缩进行备份:
tar cvfz /tmp/mysql.tgz /var/lib/mysql