mysqlmysql 导出数据库表mysqldump命令备份的一个问题

//以下是在程序中进行测试

备份MySQL数据库的命令

备份MySQL数据库为带删除表的格式

备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。

直接将MySQL数据库压缩备份

备份MySQL数据库某个(些)表

同时备份多个MySQL数据库

备份服务器上所有数据库

还原MySQL数据库的命令

还原压缩的MySQL数据库

将数据库转移到新服务器

这个时候会提示要你输入root用户名的密码,输入密码后dataname数据库就成功备份在mysql/bin/目录中.

3.导出一个数据库结构

进入mysql数据库控制台,

然后使用source命令,后面参数为脚本文件(如这里用到的.sql)

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

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

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

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

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

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

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

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

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

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

为开始导出锁定所有表。

不写入表的任何行信息。如果你只想得到一个表的结构的导出,这是很有用的。

应该给你为读入一个MySQL服务器的尽可能最快的导出。

与服务器连接时使用的口令。如果你不指定“=your_pass”部分,mysqldump需要来自终端的口令。

与一台主机连接时使用的TCP/IP端口号。(这用于连接到localhost以外的主机,因为它使用 Unix套接字。)

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

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

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

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

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

打印版本信息并且退出。

只导出被选择了的记录;注意引号是强制的。

最常见的mysqldump使用可能制作整个数据库的一个备份:

但是它对用来自于一个数据库的信息充实另外一个MySQL数据库也是有用的:

由于mysqldump导出的是完整的SQL语句,所以用mysql客户程序很容易就能把数据导入了:

以上是互联网用户为您的的内容,在阿里云内部有更多的关于mysql数据库备份及恢复命令 mysqldump,source的用法_Mysql的内容,欢迎继续使用右上角搜索按钮进行搜索mysql、数据库备份、恢复命令、以便于您获取更多的相关信息。

这篇文章包含了很多知识点,而这些知识点在之前的文章中都已经总结过,所以,如果阅读时遇到障碍请参考之前的文章。

mysql系列文章列表直达链接:

如果你只是想找一些mysqldump语句进行参考,那么,直接查看本文章下方的"mysqldump备份操作小结"部分即可。

如果你想学习怎样使用mysqldump,以及一些常用选项的含义,请按部就班的阅读这篇文章。

之前的文章已经描述了与数据库备份有关的常用术语并且简单介绍了mysql中常用的备份工具,如果你还不了解这些知识,请参考如下文章:

之前说过,最好用也最常用的备份工具就是mysqldump和xtrabackup,此处,我们就来总结一下mysqldump的用法。

它的备份原理是,通过协议连接到mysql数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert语句,当我们需要还原这些数据时,只要执行这些insert语句,即可将对应的数据还原。

可以直接使用文本处理工具处理对应的备份数据,因为备份数据已经被mysqldump转换为了对应的insert语句,所以,我们可以借助文件系统中的文本处理工具对备份数据进行直接处理。

无法备份索引等信息(因为它只是单纯的将需要备份的数据查询出来,还原后需要重建索引)

当数据为浮点类型时,会出现精度丢失

mysqldump的备份过程属于逻辑备份,备份速度、恢复速度与物理备份工具相比较慢,而且mysqldump备份的过程是串行化的,不会并行的进行备份,如果想要并行备份,可以使用mydumper,但是此处我们不考虑这些,只考虑mysqldump,当数据量较大时,一般不会使用mysqldump进行备份,因为效率较低。

mysqldump对innodb存储引擎支持热备,innodb支持事务,我们可以基于事务通过mysqldump对数据库进行热备。

mysqldump对myisam存储引擎只支持温备,通过mysqldump对使用myisam存储引擎的表进行备份时,最多只能实现温备,因为在备份时会对备份的表请求锁,当备份完成后,锁会被释放。

mysqldump是一个客户端工具,所以当mysqldump连接到数据库时,也会读取mysql数据库的配置文件,加载跟客户端相关的配置。

我们先通过一些最简单的实验,来了解一下mysqldump,但是这些操作过于简陋,不足以满足我们的备份需求,备份的数据也有可能出现问题,所以不要使用简单示例中的语句进行备份,我们只是通过它们去了解mysqldump命令罢了,等我们掌握了它,再总结一些实用的备份命令,先来做个小示例。

假设,我们现在想要通过mysqldump备份zsythink数据库,那么,我们可以通过如下mysqldump命令

(注意,如下命令只会显示mysqldump的备份过程,并没有将数据备份,我们慢慢聊)

我们说过mysqldump是一个客户端命令,所以,就像使用mysql命令连接数据库一样,我们需要指定连接的用户名,需要连接的数据库服务IP,以及使用-p选项提示我们输入密码,这些用法都与我们的mysql命令一致,上图中,我们指定要备份zsythink数据库,此时,提示我们输入root用户的密码。

输入正确的密码以后,会看到类似如下模样的输出

首先,输出的信息中包含一些注释,这些注释信息中包括mysqldump的版本,mysql的版本,以及主机IP,数据库信息等信息。

除了这些信息,还会输出一些看似注释的可执行意见,比如如下信息。

那么上述信息有什么用呢?我们来了解一下,因为,mysqldump备份出的信息为可执行的sql,所以,当我们使用这些sql进行数据还原的时候,则必须执行它们,而上述信息表示当mysql版本大于等于/archives/1246)。

好了,万事俱备只欠东风,我们现在就开始备份。

在备份innodb存储引擎的表时,如果想让备份操作基于"独立的事务"进行,则需要使用 --single-transaction选项,示例如下。

从日志中可以看到如下信息,mysqldump自动将备份会话中的事务隔离级别设置为了"可重读",并且开启了一个事务,而且,开始事务时,使用了"WITH CONSISTENT SNAPSHOT",表示事务开始的那一刻,同时创建了快照,以保证备份事务中的"一致性读"。

从上图可以看出,在备份innodb存储引擎的表时,如果使用了--single-transaction选项,mysqldump会自动开启一个"可重读"的事务,基于这个独立的"事务",备份出一个满足一致性的数据备份。

所以,如果你的数据库中的所有的表都是使用innodb存储引擎,而且你要对数据库进行热备,那么,则一定要添加上--single-transaction选项,如果开启了二进制日志,也不要忘了设置--master-data选项。

如果你数据库中的表使用了myisam存储引擎,那么,在备份时最多只能达到温备的程度,因为myisam存储引擎不支持事务,即使我们使用--single-transaction选项对myisam表进行备份,也不会有任何作用,我们只能通过锁表的方式进行,即在备份开始到备份结束期间,备份的表会被加上读锁,以保证数据的一致性,但是如果你的mysql环境是主从环境,则可以在从服务器上进行备份操作,此处不考虑那么多,我们只要记住,对myisam表进行备份时,需要加锁以保证数据一致性即可。

对所有数据备份时,可以使用--lock-all-tables选项,对所有库的所有表加读锁,--lock-all-tables对应的短选项为-x,而且,此选项与--single-transaction选项不能同时存在,示例如下。

对指定的数据库进行备份时,可以使用--lock-tables选项,对指定库的所有表加锁,--lock-tables对应的短选项为-l,注意,此选项与--single-transaction选项同时存在时,此选项将失效,示例如下

当然,我们也可以使用上述语句对innodb存储引擎的表进行备份,不过这样就不是热备了,而是温备。

我知道你很懒,好吧,那我就把上文中的常用选项整理成一些常用的sql语句,方便你参考吧。

表使用innodb存储引擎时常用的备份语句

如果未开启二进制日志,备份指定的zsythink数据库,可以使用如下语句。

在开启二进制日志的情况下,备份指定的zsythink数据库,通常使用如下语句。

在开启二进制日志的情况下,备份所有数据库,通常使用如下语句。

表使用myisam存储引擎时常用的备份语句

如果未开启二进制日志,备份指定的zsythink数据库,可以使用如下语句。

在开启二进制日志的情况下,备份指定的zsythink数据库,通常使用如下语句。

在开启二进制日志的情况下,备份所有数据库,通常使用如下语句。

使用mysqldump备份出的数据进行恢复

假设,管理员误操作数据库,drop了zsythink数据库,现在需要回复,那么,可以参考如下过程。

通过管理员账号登录mysql

因为恢复数据时会执行大量的insert语句,如果没有特殊要求,还原时没有必要将这些操作记录到二进制日志中,所以关闭当前会话的二进制日志记录。

注意:所有恢复操作完成后,最好将当前会话中的sql_log_bin再次开启。

假设,通过mysqldump备份的出的zsythink数据库的数据文件存放在/testdir目录下,那么,可以在mysql提示符中使用如下命令,执行对应的sql文件。

上述备份sql文件执行完毕后,zsythink数据库已经恢复到了备份sql对应的时间点,如果不进行时间点恢复,那么做到这一步就算完成了恢复工作,但是我们往往需要进行时间点还原。

进行时间点恢复时,备份时间点之后的数据则需要通过二进制日志进行还原,首先,要从二进制日志中提取对应的sql,提取sql的起始位置为备份开始时那一刻二进制文件对应的position,因为在使用mysldump备份时,我们推荐使用--master-data=2选项,所以在对应的数据库备份sql文件中应该存在对应的position,提取sql的结束位置应该是drop语句对应的位置,因为咱们模拟的场景是有人误操作drop了数据库,所以结束位置应该是drop语句的位置。注意,不要把误操作的drop语句提取出来,否则重放对应sql时又会将对应的数据删除,如果是那样就前功尽弃了。我们会对上述过程单独总结为一篇文章,所以此处就不详细描述了。

好了,mysqldump的相关总结就到这里,希望这篇文章能对你有所帮助,求评论、求点赞、求收藏、求推荐,常来光顾呦,亲,么么哒~~~


专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。

阅读已结束,下载本文需要

我要回帖

更多关于 php备份mysql数据库 的文章

 

随机推荐