数据损坏类型

物理损坏:磁盘、文件损坏。比如磁盘被格式化、数据库文件损坏。
逻辑损坏:错误sql导致脏数据、错误数据,比如错误的drop、truncate、delete、insert、update。

DBA在备份、恢复的职责

  1. 设计备份、容灾策略
    备份策略:备份工具的选择,备份周期设计,备份监控方法
    容灾策略:用什么备份;设计架构,如高可用、演示从库、灾备库等
  2. 定期的备份、容灾检查
    人工检查备份、容灾工作是否正常,备份空间是否足够
  3. 定期的故障恢复演练
  4. 数据损坏时快速准确恢复
  5. 数据迁移工作

备份类型

热备:在数据库正常业务时,备份数据,并且能够一致性恢复(只能是innodb),对业务影响非常小
温备:锁表备份,只能查询不能修改(myisam),影响到写入操作
冷备:关闭数据库业务,数据库没有任何变更的情况下,进行备份数据,业务停止

备份工具

逻辑备份备份的是sql语句,物理备份备份的是数据库文件

1. 逻辑备份方式

mysqldump(mdp)
replication
mydumper
load date in file

2. 物理备份方式

mysql enterprise backup
percona xtrabackup(pbk)

mysqldump使用

介绍:逻辑备份工具,备份的是sql语句

备份的内部逻辑过程:

  • innodb表:采取快照备份的方式,开启一个独立的事务,获取当前最新的一致性快照,将快照数据放到临时表中,转换成sql(create database,create table,insert),保存到sql文件中
  • 非innodb表:需要锁表备份,触发FTWRL,全局锁表,转换成sql(create database,create table,insert),保存到sql文件中

mysqldump的使用:

全备(全部数据库备份):# mysqldump -uroot -p123 -A >/data/backup/full.sql

备份一个或多个库:# mysqldump -uroot -p123 -B db1 db2 >/data/backup/db.sql

备份一个库中的一个或多个表:# mysqldump -uroot -p123 db1 table1 table2 >/data/backup/table.sql

以下两条备份命令的区别:
mysqldump -uroot -p123 -B db1 >/data/backup/db.sql
mysqldump -uroot -p123 db1 >/data/backup/db.sql
前者备份数据库+数据库内的表,会包含建库语句和use db1语句;后者只备份表,没有建库语句,在执行前需要手动建库,并手动use db1,再执行sql恢复数据。

其他的备份高级参数:
-F 
在备份开始时,刷新一个新binlog日志

--master-data=2
(1)在备份时,会自动记录,二进制日志文件名和位置号
0 默认值
1  以change master to命令形式,可以用作主从复制
2  以注释的形式记录,备份时刻的文件名+postion号
(2) 自动锁表
(3)如果配合--single-transaction,只对非InnoDB表进行锁表备份,InnoDB表进行“热“”备,实际上是实现快照备份。

--single-transaction
innodb 存储引擎开启热备(快照备份)功能       
master-data可以自动加锁
(1)在不加--single-transaction ,启动所有表的温备份,所有表都锁定
(1)加上--single-transaction ,对innodb进行快照备份,对非innodb表可以实现自动锁表功能

-R -E --triggers
-R            备份存储过程及函数
--triggers  备份触发器
-E             备份事件

--max_allowed_packet=64M

小数据量的系统的数据库恢复思路:

  1. 系统挂上维护页面,让用户明确系统正在升级维修
  2. 找测试库
  3. 恢复最近的一个全备
  4. 截取全备到故障前这段时间的binlog,并恢复
  5. 测试业务功能是否正常
  6. 恢复业务(把测试库导回到生产or直接用测试库先充当着生产库)

总结:mysqldump mysql自带,可读性高,压缩比高,但是备份时间(尤其恢复时间)比较长。mysqldump适合数据量小的时候备份(100G内),大了就不合适了。分布式备份也可选择mysqldump。

Percona Xtrabackup(xbk)使用

介绍:物理备份工具,拷贝数据文件。速度快。支持全备和增量备份。

备份内部过程(这个可以查看xbk官网介绍):
innodb表:支持热备。先checkpoint,将已提交的数据页刷新到磁盘,记录一个LSN;拷贝innodb表文件(ibdata1 frm ibd等);备份期间产生的数据变化的redo也会备份。
非innodb表:温备(锁表)。FTWRL,触发全局锁表;拷贝表的数据;解锁。
全部备份以后,再次统计LSN,写入到专用文件;记录二进制日志位置。最终将所有备份文件统一存放到一个目录下。

xbk暂时用不到,先了解到这里了,后续需要再安装实操一下吧。