mysql数据备份与导入(一)

1.备份概述:

备份:能够防止机械故障以及人为操作失误带来的数据丢失,例如将数据库文件保存在其他地方。

冗余:数据有多份冗余,但不等于备份,只能防止机械故障带来的数据丢失,例如主备模式、数据库集群。

1.备份内容:

1.数据文件

2.配置文件 =》 my.cnf

3.日志文件(主要是二进制文件)

2.扩展:mysql体系结构

1.存储引擎层(MYISAM与INNODB区别):

MYISAM:查询速度快,支持表级锁,支持全文索引

INNODB:支持事务,支持行级锁,支持外键

2. 存储层(MYISAM与INNODB区别):

MYISAM 在data目录对应数据库里生成三个文件

.frm :表结构框架文件

.MYD:表数据文件

.MYI:表索引文件

INNODB在该目录下生成两个文件并且在data目录下生成了一个文件

.ibd :表索引以及表数据文件

ibdata1:此文件是innodb引擎生成的数据库中所有表的共享的一个公共文件

综上:MYISAM可以直接保存以上三个文件去做备份 ,INNODB不可以,需要专业工具去做备份

2.日志文件

此处主要记录两种类型:

error错误日志:存放数据库的启动,停止或运行时的错误信息 ,一般存放在/data下 文件名为 主机名.err或者mysql.err

binlog二进制日志:1.记录数据库的所有更改操作,2.主要应用于主从复制中,master将二进制日志中的更改操作发送个slave,保证主从一致。3.其次可以用于数据恢复,4.默认关闭 5.通过

2.备份必须考虑的因素

 3.备份类型

 4.备份方法

全量备份:备份所有数据

增量备份:基于全量备份,备份变化部分

 5.mysql逻辑备份

1.mysql表级备份

导出的是sql语句文件,优点是无论什么引擎都可以使用mysqldump备成sql文件,缺点就是速度慢不支持增量备份,导入时可能格式不兼容

基本语法:

单表备份

mysqldump 数据库名 表名 > 目标路径线下的备份文件 -p 密码

单表恢复

mysql 数据库名 < .sql文件位置  -p 密码
或者进入mysql某个库中
source sql文件路径

2.mysql库级备份

mysqldump --databases  库名 > 备份文件全路径 -p 密码

还原与单表一样

3.mysql全库备份

前提:需要开启二进制日志

语法

mysqldump --all-databases  --master-data --single-transaction > 备份文件全路径 -p 密码

还原:

mysql < 备份文件  -p 密码

4.mysqldump + binlog实现增量备份

核心思路:1.要有全量备份 2.增删查该数据 3.再次需要备份时,不需要进行全量备份,只需要备份binlog日志文件即可(binlog记录数据库增删改的所有sql)

1.准备数据,开启二进制日志(默认关闭)

2.做全量备份

mysqldump --all-databases  --master-data=2 --flush-logs --single-transaction > 备份文件全路径 -p 密码

加入--flush-logs 参数刷新了二进制日志文件(刷新后的二进制文件记录此次全量备份后的增删改sql记录)

3.做完备份后做增删改操作

4.模拟故障(类似于删库)

drop database 库名

5.立即备份二进制binlog文件,并全库恢复(此时恢复的不全)

1.复制二进制文件
cp binlog路径/binlog.00001.log  目标路径
2.全库恢复(此时恢复的不全)
mysql < 备份文件  -p 密码

6.通过binlog增量备份

先分析 mysqlbinlog binlog文件 ,如下图at对应的数值是备份后对数据库操作的起始位置,寻找事故位置对应的临界点的at数值(可根据故障时间或者drop类似的操作来判断)

还原方法:

mysqlbinlog --start-position=4 --stop-position=xxx 备份文件 |mysql -p 密码

经验分享 程序员 微信小程序 职场和发展