数据备份与恢复
一:对数据库的基本备份操作
MySqldump是MySql提供的数据库备份工具,执行时,可以将数据库备份成一个文本文件(sql)。
所有操作都是在不登录的情况实现的,如果导出的文件名 不是绝对路径,那么文件会保存在当前目录下。
这里有几个常用参数要说一下:
1.-d 或者 --no-data 代表只导出结构,不包含任何 数据
2.-t或者--no--create-info 代表只导出数据,不包含结构。
还有很多参数,理解一下等到需要的时候自行查看就好。
解释一下这里的导出结构和导出数据是怎么实现的,因为生成的文件实际上包含了多个create和insert语句,当恢复时使用这些语句时可以重新创建表和插入数据,
所以只导出结构的话,就没有数据没有insert语句,这样恢复就不会产生数据,而只导出数据是只有数据而没有create语句,这样恢复时就没法建结构所以只有数据。
1.备份整个数据库:mysqldump -u用户名-p密码 数据库名 > 导出的文件名 .sql
将数据库实例zoo保存在e盘下的my.sql文件里,在e盘里找到打开看一下
2.备份一个数据库结构: mysqldump -u用户名 -p 密码 -d数据库名 表名> 导出的文件名 .sql
3.备份多个数据库,使用--databases参数: mysqldump -u用户名 -p 密码 --databases 数据库名... >导出的文件名 .sql
导出zoo和mysql两个数据库。
4.备份所有数据库,使用 --all--databases参数:mysqldump -u用户名 -p 密码 --all-databases > 导出的文件名 .sql
5,备份一个数据库数据:mysqldump -u用户名-p密码 -t 数据库名 > 导出的文件名 .sql
6.备份数据库中的表:mysqldump -u用户名-p密码 数据库名 表名||表名||表名... > 导出的文件名 .sql
二:数据表的导入与导出
导出
1.使用select ... into outfile 导出数据
语法为:select 查询数据 from 表名 where 条件 into outfile 文件名
下面还有几个可选选项
fields terminated by 'value' 设置字段之间分隔符
fields enclosed by 'value' 设置字段的包围符
fields escaped by 'value' 设置转义字符,默认值为'\'
lines starting by 'value' 设置每行数据开头的字符
lines terminateding by 'value' 设置每行数据结尾的字符
这里必须要含有文件写入权限,才能使用该语法。
导出显示错误,查看一下权限,发现为null,在my.ini里面配置一下
但是配置以后文件只能导出到这个路径中,另外文件名必须不存在
2.使用MySqldump命令导出文本文件
MySqldump除了可以将数据导出为包含create、insert的sql文件,也可以导出为纯文本文件
语法为:mysqldump -T 路径名 -uroot -p 数据库名 表名
只有使用-T参数才可以导出纯文本文件。
后面还有几个可选项
--fields-terminated-by =value 设置字段之间分隔符
--fields-enclosed-by=value 设置字段的包围符
--fields-escaped-by=value 设置转义字符,默认值为'\'
--lines-starting-by =value 设置每行数据开头的字符
--lines-terminateding-by =value 设置每行数据结尾的字符
导出数据表中的记录到文本文件
可以看到e盘下会有一个sql文件(create语句),一个text文件(数据)
3.使用mysql命令导出文本文件
语法为:mysql -uroot -p --execute="select语句" 数据库名 > 文件名.txt
查询表tb中所有数据,并保存到my.sql中
查询表tb中所有数据,保存到文本文件,使用-vertical参数显示结构
可以看到参数格式发生了变化
导入
1.使用load data infile方式导入文本文件,登录之后使用
语法:load data infile "文件名.txt" into table 表名
后面依旧有可选项
fields terminated by 'value' 设置字段之间分隔符
fields enclosed by 'value' 设置字段的包围符
fields escaped by 'value' 设置转义字符,默认值为'\'
lines starting by 'value' 设置每行数据开头的字符
lines terminateding by 'value' 设置每行数据结尾的字符
2.使用mysqlimport导入
语法:mysqlimport -u root -p 数据库名 文件名.txt
后面可选项为
--fields-terminated-by =value 设置字段之间分隔符
--fields-enclosed-by=value 设置字段的包围符
--fields-escaped-by=value 设置转义字符,默认值为'\'
--lines-terminated-by =value 设置每行数据结尾的字符
--ignore-lines=n 忽略开头n行
三、数据恢复
数据恢复使用MySql命令。
语法为:mysql -u 用户名 -p 数据库名 < 文件名
这里的用户名是导出时使用的用户,另外注意如果要恢复的文件含有创建数据库语句的文件,那么就不需要数据库名
如果已经登录进入了mysql,那么就可以使用source 文件名来导入
四、数据库迁移
简单了解一下:数据库迁移是把数据从一个系统移动到另一个系统上
1.如果是相同版本的mysql数据库之间的迁移 可以使用管道符|连接:
mysqldump -h 主机A -u 用户 -p 密码 数据库名 | mysql -h 主机B -u 用户 -p 密码
2.不同版本的mysql数据库之间的迁移:先保存,再添加吧
3.不同数据库:借助工具MyOBDC,以后再了解。