在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
MySQL 备份 冷备份: 热备份: mysql 的 MyIsam 引擎只支持冷备份,InnoDB 支持热备份,原因: InnoDB引擎是事务性存储引擎,每一条语句都会写日志,并且每一条语句在日志里面都有时间点,那么在备份的时候,mysql可以根据这个日志来进行redo和undo,将备份的时候没有提交的事务进行回滚,已经提交了的进行重做。但是MyIsam不行,MyIsam是没有日志的,为了保证一致性,只能停机或者锁表进行备份。 InnoDB不支持直接复制整个数据库目录和使用mysqlhotcopy工具进行物理备份: 1、直接复制整个数据库目录 2、使用mysqlhotcopy工具快速备份 mysqldump 备份简述 mysqldump可产生两种类型的输出文件,取决于是否选用- -tab=dir_name选项。 不使用- -tab=dir_name选项,mysqldump产生的数据文件是纯文本的SQL文件,又CREATE(数据库、表、存储路径等)语句和INSERT(记录)语句组成。输出结果以一个文件保存,可以用mysql命令去恢复备份文件。 使用- -tab=dir_name选项,mysqldump对于每一个需备份的数据表产生两个输出文件:一个是带分隔符的文本文件,备份的数据表中的每行存储为文本中的一行,以“表名.txt”保存;另一个输出文件为数据表的CREATE TABLE语句,以“表名.sql”保存。 mysqldump 语法和选项 【命令】
- -all-databases 表示备份系统中所有数据库,使用- -databases参数之后,必须指定至少一个数据库的名称,多个数据库名称之间用空格隔开 常用的选项 - -add-drop-table - -add-locks - -tab - -quick或者- -opt - -skip-comments - -compact 以SQL格式备份数据 如果备份文件名.sql没有指定所放置的路径,则默认放在~\MySQL\MySQL Server 5.6\bin目录下。 指定数据备份路径: 调用mysqldump带有- -all-databases选项备份所有的数据库 调用mysqldump带有- -databases选项备份指定的数据库 调用mysqldump备份一个指定的数据库: 用mysqldump不带有- -databases选项备份指定的一个数据库,生成的备份文件中是没有CREATE DATABASE和USE语句的: 注意: 当对一个数据库进行备份时- -databases允许省略,但是省略后导致的是备份文件名.sql中没有CREATE DATABASE 和USE语句,那么恢复备份文件时,必须指定一个默认的数据库名,由此服务器才知道备份文件恢复到哪个数据库中;由此可以导致你可以使用一个和原始数据库名称不同的数据库名。 调用mysqldump备份某个数据库中的某几张表: 恢复SQL格式的备份文件 通过mysqldump备份的文件,如果用了- -all-databases或- -databases选项,则在备份文件中包含CREATE DATABASE和USE语句,故并不需要指定一个数据库名去恢复备份文件。 在Shell命令下: shell> mysql –u 用户名 –p < 备份文件.sql 在mysql命令下,用source命令导入备份文件: mysql> source备份文件.sql; //已登录mysql,用source命令 如果通过mysqldump备份的是单个数据库,且没有使用- -databases选项,则备份文件中不包含CREATE DATABASE和USE语句,那么在恢复的时候必须先创建数据库。 在shell命令下: shell> mysqladmin –u 用户名 –p create 数据库名 //创建数据库 shell> mysql –u 用户名 –p数据库名 < 备份文件.sql 在mysql命令下: mysql> CREATE DATABASE IF NOT EXIST 数据库名; mysql> USE 数据库名; mysql> source备份文件.sql; 注意: 只能在cmd界面下执行source命令,不能在mysql工具里面执行source命令,会报错,因为cmd是直接调用mysql.exe来执行命令的。 以带分隔符的文本文件格式备份数据 调用mysqldump带有- -tab=dir_name选项去备份数据库,则dir_name表示输出文件的目录,在这个目录中,需备份的每个表将会产生两个文件。如对于一个名为t1的表,包含两个文件:t1.sql和t1.txt。.sql文件中包含CREATE TABLE语句,.txt文件中一行为数据表中的一条记录,列值与列值之间以‘tab'分隔。 注意: 使用带- -tab=dir_name选项的mysqldump最好只被用于本地服务器上。因为如果用在远程服务器上,- -tab产生的目录将会既存在本地主机也会存在于远程主机上,.txt文件将会被服务器写在远程主机的目录中,而.sql文件将会被写在本地主机目录中。 调用mysqldump带有- -tab=dir_name选项备份数据库 【例子】用mysqldump带有- -tab=dir_name选项备份数据库test,放在D盘下: 数据库test中的表: 执行备份命令: 所输出的结果: 恢复带分隔符的文本文件格式的备份文件 用mysql命令处理.sql文件去还原表结构,然后处理.txt文件去载入记录。 shell> mysql –u 用户名 –p 数据库名 < 表名.sql //还原表结构 shell> mysqlimport –u 用户名 –p 数据库名 表名.txt //还原记录 或者:可用LOAD DATA INFILE 去代替mysqlimport命令,不过此时得在mysql命令下: mysql> use 数据库名; //选中数据库 mysql> LOAD DATA INFILE ‘表名.txt' INTO TABLE表名; //还原记录 【例子】 恢复数据库test里面的数据表stucou表: 查看test数据库里面的表,没有stucou表: 用stucou.sql文件恢复stucou表结构: stucou数据表恢复成功: stucou数据表中没有任何记录: 用stucou.txt文件恢复stucou表记录:
用mysql命令将查询的中间结果导出 将查询结果导入到文本文件中 mysql是一个功能丰富的工具命令,使用mysql还可以在命令行模式下执行SQL指令,将查询结果导入到文本文件中。相比mysqldump,mysql工具导出的结果可读性更强。如果mysql服务器是单独的机器,用户是在一个client上进行操作,用户要把数据结果导入到client机器上,可以使用mysql -e语句。 【命令】: 该命令使用–execute 选项,表示执行该选项后面的语句并退出,后面的语句必须用双引号括起来 dbname为要导出的数据库名称,导出的文件中不同列之间使用制表符分隔,第一行包含了字段名称 【例子】使用mysql命令,导出test库的person表记录到文本文件: person3.txt的内容如下 ID Name Age job 1 green 29 lawer 2 suse 26 dancer 3 evans 27 sports man 4 mary 26 singer 可以看到,person3.txt文件中包含了每个字段的名称和各条记录,如果某行记录字段很多,可能一行不能完全显示,可以使用 - -vertical参数,将每条记录分为多行显示 【例子】使用mysql命令导出test库的person表使用–vertical参数显示: *************************** 1. row *************************** ID: 1 Name: green Age: 29 job: lawer *************************** 2. row *************************** ID: 2 Name: suse Age: 26 job: dancer *************************** 3. row *************************** ID: 3 Name: evans Age: 27 job: sports man *************************** 4. row *************************** ID: 4 Name: mary Age: 26 job: singer
将查询结果导入到html文件中 使用mysql命令导出test库的person表记录到html文件,输入语句如下 shell> mysql -u root -p --html --execute="SELECT * FROM PERSON;" test > C:\person5.html 将查询结果导入到xml文件中 如果要导出为xml文件,那么使用–xml选项 shell> mysql -u root -p --xml --execute="SELECT * FROM PERSON;" test > C:\person6.xml <?xml version="1.0"?> <resultset statement="SELECT * FROM PERSON" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <row> <field name="ID">1</field> <field name="Name">green</field> <field name="Age">29</field> <field name="job">lawer</field> </row> <row> <field name="ID">2</field> <field name="Name">suse</field> <field name="Age">26</field> <field name="job">dancer</field> </row> <row> <field name="ID">3</field> <field name="Name">evans</field> <field name="Age">27</field> <field name="job">sports man</field> </row> <row> <field name="ID">4</field> <field name="Name">mary</field> <field name="Age">26</field> <field name="job">singer</field> </row> </resultset> 到此这篇关于MySQL5.7 mysqldump备份与恢复的实现的文章就介绍到这了,更多相关MySQL mysqldump备份恢复内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论