其实 的这个问题是mysql中的一个核心问题,既mysql数据的备份和恢复
可以使用三种方式
1.使用sql语句导入导出
2.使用mysqldump 和mysqlimport 工具
3.直接copy 数据文件 既冷备份
说说的详细,就给积分,那 就说详细些
一.使用sql语句完成mysql的备份和恢复
可以使用select into outfile语句备份数据,并用load data infile语句恢复数据。这种方法只能导出数据的内容,不包括表的结构,如果表的结构文件损坏, 必须要先恢复原来的表的结构。
语法:
select * into {outfile | dumpfile} 'file_name' from tbl_name
load data [low_priority] [local] infile 'file_name.txt' [replace | ignore]
into table tbl_name
select ... into outfile 'file_name'格式的select语句将选择的行写入一个文件。文件在服务器主机上被创建,并且不能是已经存在的(不管别的,这可阻止数据库表和文件例如“/etc/passwd”被破坏)。select ... into outfile是load data infile逆操作。
load data infile语句从一个文本文件中以很高的速度读入一个表中。如果指定local关键词,从客户主机读文件。如果local没指定,文件必须位于服务器上。(local在mysql3.22.6或以后版本中可用。)
为了安全原因,当读取位于服务器上的文本文件时,文件必须处于数据库目录或可被所有人读取。另外,为了对服务器上文件使用load data infile,在服务器主机上 必须有file的权限。使用这种select into outfile语句,在服务器主机上 必须有file权限。
为了避免重复记录,在表中 需要一个primary key或unique索引。当在唯一索引值上一个新记录与一个老记录重复时,replace关键词使得老记录用一个新记录替代。如果 指定ignore,跳过有唯一索引的现有行的重复行的输入。如果 不指定任何一个选项,当找到重复索引值时,出现一个错误,并且文本文件的余下部分被忽略时。
如果 指定关键词low_priority,load data语句的执行被推迟到没有其他客户读取表后。
使用local将比让服务器直接存取文件慢些,因为文件的内容必须从客户主机传送到服务器主机。在另一方面, 不需要file权限装载本地文件。如果 使用local关键词从一个本地文件装载数据,服务器没有办法在操作的当中停止文件的传输,因此缺省的行为好像ignore被指定一样。
当在服务器主机上寻找文件时,服务器使用下列规则:
如果给出一个绝对路径名,服务器使用该路径名。
如果给出一个有一个或多个前置部件的相对路径名,服务器相对服务器的数据目录搜索文件。
如果给出一个没有前置部件的一个文件名,服务器在当前数据库的数据库目录寻找文件。
假定表tbl_name具有一个primary key或unique索引,备