MySQL数据备份

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。

http://www.cnblogs.com/shijiaqi1066/p/3830007.html

 

 

 

1 mysqldump命令备份

mysqldump命令备份将数据库中的数据备份成一个文本文件。mysqldump命令备份的文件后缀名一般为".sql",其他后缀名也可以。

mysqldump命令通过表结构生成create table语句;将表中数据生成insert语句。

注:mysqldump命令实在shell环境下使用的。非数据库环境下的命令。

 

1.1 备份数据表

备份表生成的备份脚本是不包含create table语句的。

基本语法:

mysqldump -u 用户名 -p [密码] 数据库 表1 表2 ... > 脚本名称

例:root用户备份test数据库下的student表。

mysqldump -u root -p test student > D:\student.sql

 

 

1.2 备份数据库

使用--databases选项用于备份数据库。

基本语法:

mysqldump -u用户名 -p[密码] --databases 库1 库2 ... > 脚本名称

例:使用root用户备份test数据库和mysql数据库。

mysqldump -u root -p --databases test mysql  >D:\backup.sql

 

 

1.3 备份所有数据库

使用--all-databases选项用于备份所有数据库。

基本语法:

mysqldump -u 用户名 -p [密码] --all-databases ... > 脚本名称

例:使用root用户备份当前连接的所有数据库。

mysqldump -u root -p --all-databases  > D:\all.sql

 

 

1.4 数据还原

使用mysql命令来还原备份的数据。

基本语法:

mysql -u 用户名 -p 密码 [数据库] < 备份脚本

 

 

1.5 通过MySQL存储文件备份

对于MyISAM引擎的数据库,可以通过复制MySQL的存储文件来实现备份数据库。使用这种方式备份数据库请保证数据库主版本号相同

在Linux使用这种方式备份数据需要注意文件权限。

 

 

1.6 读锁

在备份期间,不允许写数据库操作。此时应当将数据库读锁,禁止写入操作

只需要为mysqldump命令添加 -l 选项,即可。

 

1.7 刷新日志 

若使用了日志,特别是二进制日志。在备份之后,最好重新生成最新的二进制数据文件。使用-F可以使命令自动刷新日志。

例:备份test数据库

mysqldump -uroot -p test -l -F > temp.sql

 

 

 

 

2 数据库迁移

数据库迁移即将数据库从一个系统移动到另一个系统上。

数据库迁移大致分为三类:

  • MySQL相同版本的数据库之间迁移。
  • 迁移到MySQL其他版本的数据库中。
  • 迁移到其他类型的数据库中。

 

对于相同版本的MySQL数据库,使用MySQL备份和还原技术即可完成数据库迁移。

例:使用mysqldump命令备份并使用mysql命令在另一个数据库中还原。

mysqldump -h host1 -u user1 -p password1 -all-database |
mysql -h host2 -u user2 -p password2

 

 

对于不同的数据库,由于SQL标准定义的区别,使用如上类似方法可能会导致错误。可以选择使用工具完成这些工作。

 

 

 

3 表的导入和导出

3.1 用SELECT...INTO OUTFILE导出文本文件

语法:

SELECT [列名] FROM[WHERE 语句] INTO OUTFILE '目标文件' [选项];

说明:

SELECT子句用于查询数据。

INTO OUTFILE用于导出数据。

目标文件为导出数据的备份文件。

选项

字段选项:

fields terminated by ’字符串’ :设置字段分隔符,默认为’\t’。

fields enclosed by ’字符’ :设置括起字段的字符。默认不使用任何字符。

fields optionally enclosed by ’字符’ :设置字符串括上CHAR,VARCHAR,TEXT等字符型字段。默认不使用任何字符。

fields escaped by ’字符’ :设置转义字符,默认值’/’。

行选项:

lines starting by ‘字符串’ :设置每行开头的字符,默认不使用任何字符。

lines terminated by ‘字符串’  :设置每行结束的字符,默认不使用任何字符。

 

例:导出test库下student表的记录。其中,字段之间用“,”隔开,字符型数据用双引号括起来。每条记录以“>”开头。

SELECT * FROM .student INTO OUTFILE 'D:\student1.txt'
FIELDS TERMINATED BY '\,'
       OPTIONALLY ENCLOSED BY '\'
LINES STARTING BY '\>'
       TERMINATED BY '\r\n';

 

 

3.2 用mysqldump命令导出文本文件

基本语法:

mysqld -u 用户名 -p 密码 -T 目标目录 数据库 表 [选项]

说明:

-T选项的参数是导出文件的路径。

选项

--fields-terminated-by=字符串 :设置字段分隔符。

--fields-enclosed-by=字符 :设置字符串括上字段的值。

--fields-optionally-enclosed-by=字符 :设置字符串括上字段的值。只能用于CHAR,VERCHAR和TEXT类型的字段。

--fields-escaped-by=字符 :设置转义字符。

--lines-terminated-by=字符串 :行记录分隔符。

 

例:导出test库下student表的记录。其中字段之间用“,”隔开,字符型数据用双引号括起来。

mysqldump -u root -p111 -T d:\test student
        --fields-terminated-by =,
        --fields-optionally-enclosed-by =\"

 

 

用mysqldump命令导出XML格式的文件

基本语法:

mysqldump -u 用户名 -p 密码 --xml  数据库 表 > 目标文件

说明:--xml表示导出为xml格式的文件,也可以使用-X代替--xml。

例:导出test库下student表的记录为xml文件。

mysqldump -u root -p111 --xml test student > d:\name.xml;

 

 

3.3 用mysql命令导出文本文件

mysql命令可以用于登录MySQL服务器,备份数据,也可用于导出文本文件。

基本语法:

mysql -u 用户 -p 密码 -e "select语句" 数据库 > 目标文件

说明:-e选项的参数为select语句,用于查找数据。

例:导出test数据库下的student表

mysql -u root -p111 -e "SELECT * FROM student" test > D:/student2.txt

 

 

用mysql命令导出XML与HTML格式的文件

导出xml基本语法:

mysql -u 用户名 -p 密码 --xml -e "select语句" 数据库 表 > 目标文件

说明:--xml表示导出为xml格式的文件,也可以使用-X代替--xml。

 

导出html基本语法:

mysql -u 用户名 -p 密码 --html -e "select语句" 数据库 表 > 目标文件

说明:--html表示导出为html格式的文件,也可以使用-H代替--html。

 

 

 

 

 

更多mysqldump的选项请参考官方文档,或使用搜索引擎查询。

 

 

 

 

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。

http://www.cnblogs.com/shijiaqi1066/p/3830007.html

posted @ 2014-07-07 16:50  LaplaceDemon  阅读(556)  评论(0编辑  收藏  举报