[原创]MySql 学习系列之数据的备份与恢复_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2324 | 回复: 0   主题: [原创]MySql 学习系列之数据的备份与恢复        下一篇 
panpan.nie
注册用户
等级:大校
经验:4754
发帖:217
精华:2
注册:1970-1-1
状态:离线
发送短消息息给panpan.nie 加好友    发送短消息息给panpan.nie 发消息
发表于: IP:您无权察看 2015-2-17 20:21:48 | [全部帖] [楼主帖] 楼主

很多时候我们需要将电脑上的数据库备份或者多台电脑上同步数据库上的数据,mysqldump命令可以帮助我们解决这个问题。

mysqldump常用于MySQL数据库逻辑备份,可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。转储包含创建表和装载表的SQL语句,对于备份整个数据库或所有数据库是非常不错的,可以通过参数导出满足不同需求的备份文件,如,带drop语句的备份,只备份出表结构等。

使用命令方式运行mysqldump,即在cmd命令行下,进入于mysqlbin下。如:C:/Program Files/MySQL/MySQL Server 5.6/bin>mysqldump -p --where="id > 10" mydatabase mytable > buckup.txt

sqldump的几种常用方法:

1、备份数据

1)导出整个数据库(包括数据库中的数据)

    mysqldump -u 用户名 -p 数据库名 > 导出的文件名

这个时候会提示要你输入用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中,当然,你可以指定文件导出的路径.

C:\Program Files\MySQL\MySQL Server 5.6\bin>mysqldump -uppnie -p ppniedb>D:/ppniedb.sql

北京联动北方科技有限公司

执行命令后,你会发现D:盘多了个ppnie.sql 文件,其中既有有所有表的创建语句又有对应表中的数据。

2)导出数据库结构(不含数据)

 mysqldump -u 用户名 -p -d数据库名 > 导出的文件名

C:\Program Files\MySQL\MySQL Server 5.6\bin>mysqldump -uppnie -p -d ppniedb>D:/ppni

Edb01.sql

执行命令后,你会发现D:盘多了个ppnie01.sql 文件,其中只有创建表的语句

3)导出数据库中的某张数据表(包含数据)

 mysqldump -u 用户名 -p -d数据库名表名> 导出的文件名

C:\Program Files\MySQL\MySQL Server 5.6\bin>mysqldump -uppnie -p ppniedb person>D:/ppnie02.sql

执行命令后,你会发现D:盘多了个ppnie01.sql 文件,其中只有创建表person的语句和该表中的数据

    mysqldump -u username -p dbname tablename > tablename.sql    

4)导出数据库中的某张数据表的表结构(不含数据)

 mysqldump -u 用户名 -p -d数据库名表名> 导出的文件名

C:\Program Files\MySQL\MySQL Server 5.6\bin>mysqldump -uppnie -p -d ppniedb person>D:/ppnie02.sql

执行命令后,你会发现D:盘多了个ppnie01.sql 文件,其中只有创建表person的语句

2、恢复数据

1)将备份的数据还原

备份的脚本没有创建数据库,所以在还原的时候应使用已经存在的数据库

A )用户登陆后,进入到数据库下,然后使用命令”source备份脚本

北京联动北方科技有限公司

北京联动北方科技有限公司

由图可知,导入之前导出的数据库脚本ppnie02.sql,新数据库testdb2中新增了表personperson中包含数据。

B )使用命令mysql -u 用户名 -p 数据库名 < 备份脚本

mysql -u ppnie -p test < D:/ppniedb.sql


3、其他备份表数据和还原数据

SELECT INTO…OUTFILE语句把表数据导出到一个文本文件中,并用LOAD DATA …INFILE语句恢复数据。但是这种方法只能导出或导入数据的内容,不包括表的结构,如果表的结构文件损坏,则必须先恢复原来的表的结构。

3.1SELECT INTO…OUTFILE语法:

select * from Table into outfile '/path/filename'
fields terminated by ','
enclosed by '"'
lines terminated by '\r\n'


例:

mysql> select * from person into outfile 'd:/person1.txt';


北京联动北方科技有限公司


注意:路径目录必须有读写权限,文件名必须唯一

文件person1.txt 的内容如下

北京联动北方科技有限公司

●  fields子句:在FIELDS子句中有三个亚子句:TERMINATED BY [OPTIONALLY] ENCLOSED BYESCAPED BY。如果指定了FIELDS子句,则这三个亚子句中至少要指定一个。

1TERMINATED BY用来指定字段值之间的符号,例如,“TERMINATED BY ','”指定了逗号作为两个字段值之间的标志。

2ENCLOSED BY子句用来指定包裹文件中字符值的符号,例如,“ENCLOSED BY ' " '”表示文件中字符值放在双引号之间,若加上关键字OPTIONALLY表示所有的值都放在双引号之间。

3ESCAPED BY子句用来指定转义字符,例如,“ESCAPED BY '*'”“*”指定为转义字符,取代“\”,如空格将表示为“*N”

●   LINES子句:在LINES子句中使用TERMINATED BY指定一行结束的标志,如“LINES TERMINATED BY '?'”表示一行以“?”作为结束标志。

3.2LOAD DATA …INFILE语句是SELECT INTO…OUTFILE语句的补语,该语句可以将一个文件中的数据导入到数据库中。

mysql> load data local infile 'd:/person1.txt' into table person;


北京联动北方科技有限公司

4mysqldump常用参数说明

导出要用到MySQLmysqldump工具,基本用法是:

mysqldump [OPTIONS] database [tables]   


如果你不给定任何表,整个数据库将被导出。

通过执行mysqldump --help,你能得到你mysqldump的版本支持的选项表。

注意,如果你运行mysqldump没有--quick--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。

mysqldump支持下列选项:

--add-locks


在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE(为了使得更快地插入到MySQL)

--add-drop-table


在每个create语句之前增加一个drop table

--allow-keywords


允许创建是关键词的列名字。这由表名前缀于每个列名做到。

-c, --complete-insert


使用完整的insert语句(用列名字)

-C, --compress


如果客户和服务器均支持压缩,压缩两者间所有的信息。

--delayed


INSERT DELAYED命令插入行。

-e, --extended-insert


使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)

-#, --debug[=option_string]


跟踪程序的使用(为了调试)

--help


显示一条帮助消息并且退出。

--fields-terminated-by=...
--fields-enclosed-by=...
--fields-optionally-enclosed-by=...
--fields-escaped-by=...
--fields-terminated-by=...


这些选择与-T选择一起使用,并且有相应的LOAD DATA INFILE子句相同的含义。
LOAD DATA INFILE
语法。

-F, --flush-logs


在开始导出前,洗掉在MySQL服务器中的日志文件。

-f, --force,


即使我们在一个表导出期间得到一个SQL错误,继续。

-h, --host=..


从命名的主机上的MySQL服务器导出数据。缺省主机是localhost

-l, --lock-tables.


为开始导出锁定所有表。

-t, --no-create-info


不写入表创建信息(CREATE TABLE语句)
-d, --no-data   
不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的!
--opt   
--quick --add-drop-table --add-locks --extended-insert --lock-tables
应该给你为读入一个MySQL服务器的尽可能最快的导出。
-pyour_pass, --password[=your_pass]   
与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。
-P port_num, --port=port_num   
与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)
-q, --quick   
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。

-S /path/to/socket, --socket=/path/to/socket


localhost连接时(它是缺省主机)使用的套接字文件。

-T, --tab=path-to-some-directory


对于每个给定的表,创建一个table_name.sql文件,它包含SQL CREATE 命令,和一个table_name.txt文件,它包含数据。注意:这只有在mysqldump运行在mysqld守护进程运行的同一台机器上的时候才工作。.txt文件的格式根据--fields-xxx--lines--xxx选项来定。

-u user_name, --user=user_name


与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。

-O var=option, --set-variable var=option


设置一个变量的值。可能的变量被列在下面。

-v, --verbose


冗长模式。打印出程序所做的更多的信息。

-V, --version


打印版本信息并且退出。

-w, --where='where-condition'


只导出被选择了的记录




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论