mysql中数据的备份有以下几种方式:
1、直接在数据库文件夹中复制对应的表结构以及数据文件进行数据备份
2、将每一张表中的数据进行备份
3、使用mysqldump.exe 进行备份
4、增量数据备份
接下来就详细的介绍一下每一种备份的具体操作
直接在数据库文件夹中复制对应的表结构以及数据文件进行数据备份
这一种备份的方式比较适用于myISAM引擎 的数据库,只需要将对应数据库下的想要备份的表对应的 .frm 文件(存储表结构)、.MYD文件(存储表数据)和 .MYI文件(存储索引)进行复制即可实现备份,这种方式备份数据方便数据库的迁移,但是不方便备份,因为太浪费磁盘空间。
通过备份每一张表的数据进行备份(仅仅是备份了数据,并没有备份表结构)
这一种备份方式的思路就是将每一张数据表中的数据备份到磁盘上指定对应的文件中,在使用的时候,直接通过存储的备份文件将数据导入到数据表中即可,这里注意的是由于备份的只有数据并没有表结构,所以使用备份文件时必须创建对应的数据表,其基本语法如下:
// 备份语法
select 字段列表 into outfile ‘文件存储路径’ [fields字段处理] [lines行处理] from 表名;-- 将user表中的数据备份到e:/data/user.txt中
select * from user into outfile ‘e:/data/user.txt’; // 还原语法 格式上怎么备份怎么还原
load data infile ‘文件存储路径’ into table 表明[字段列表] [fields 字段处理] [lines 行处理] ;-- 将 e:/data/user.txt 中的数据还原到user表中
load data infile ‘e:/data/user.txt’ into table user;
解释一下fields和lines的含义:
fields字段处理参数 | |
fields可取值 | 功能 |
enclosed by | 数据使用什么符号包裹,默认是 ‘’ ,空字符串 |
terminated by | 字段以什么符号结束,默认是‘\t’ |
escaped by | 特殊符号用什么方式处理,默认是‘\\’ |
lines行处理参数 | |
lines可取值 | 功能 |
starting by | 每行以什么开始,默认‘’,空字符串 |
terminated by | 每行以什么结束,默认是‘\r\n’ |
使用mysqldump.exe 进行备份
直接使用mysqldump.exe进行备份,其语法如下:
-- 备份数据库czpdb下的表user到e:/czp/user.sql中
mysqldump -u root -p czpdb user > e:/czp/user.sql -- 此处不要分号,回车输入密码-- 还原文件到数据库
-- 1、连接上mysql,切换到对应的数据库下,通过source命令恢复
mysql -u root -p 123456;
use czpdb;
source e:/czp/user.sql;-- 2、使用mysql命令
mysql -u root -p czpdb < e:/czp/user.sql -- 此处不要分号,回车输入密码
此方式可以备份数据和表结构,比较实用
增量数据备份
当数据库太大,数据更迭的速度比较快时,备份所有数据有点不现实,有的时候也没有必要,这个时候便可以使用数据的增量备份。针对特定的时间段,根据数据库中mysql-bin日志生成增量数据进行数据备份。下边介绍一下增量备份的使用:
1、必须使用log-bin
启用二进制日志记录的选项启动服务器,配置一个路径用来存储日志文件(用于还原)
2、还原时使用命令 mysqlbinlog 日志文件 | mysql -u root -p 数据库 即可
3、日志文件有可能被加密,可以查看mysql官网的增量备份的具体使用方式(https://dev.mysql.com/doc/refman/8.0/en/point-in-time-recovery.html)