MySQL数据库备份

课程目标:

一、MySQL备份概述

####1. 关于备份你要知道的

思考:备份和冗余有什么区别?

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

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

2.备份什么

DB BINLOG my.cnf

3.备份过程须考虑的因素

4.备份类型

4.1 逻辑备份
4.2 物理备份
4.3 在线热备

5.备份工具

  1. mysqldump

    1)企业版和社区版都包含

    2)本质上使用SQL语句描述数据库及数据并导出

    3)在MYISAM引擎上锁表,Innodb引擎上锁行

    4)数据量很大时不推荐使用

  2. mysqlhotcopy

    1)企业版和社区版都包含

    2)perl写的一个脚本,本质上是使用锁表语句后再拷贝数据

    3)只支持MYISAM数据引擎

6.备份方法

增量备份

7.需要重点掌握的

mysqldump工具

逻辑数据的导入导出(into outfile)

xtrabackup和innobackupex

lvm-snapshot

二、MySQL的逻辑备份

1. 了解binary log

1.1 二进制日志格式

In MySQL 5.6, the default binary logging format is STATEMENT.

1.2 二进制日志的用途
1.3 开启二进制日志
1.4 redo log日志作用
1.5 日志记录过程

日志记录过程

2. mysqldump备份

本质:导出的是sql语句文件

优点:无论是什么存储引擎,都可以用mysqldump备成sql语句

缺点:速度较慢,导入时可能会出现格式不兼容的突发状况.无法直接做增量备份和累计增量备份.

提供三种级别的备份,表级,库级和全库级

2.1 示例1:

使用mysqldump工具进行表、库、全库级别备份恢复

2.2 示例2:

完全备份(mysqldump)+增量备份(binlog)

 

demo1:先做全量备份,然后更新数据并误操作,binlog进行数据恢复

课堂练习1:

使用mysqldump备份整个数据库,做一些更新后在新的机器上进行恢复

3. 逻辑导入导出

课堂练习2:

需求:把用户登录系统的信息存放到数据库里 要求如下显示: 用户名 登录终端 来源IP

三、MySQL的物理备份

1. lvm-snapshot备份

优点:

缺点:

备份流程:

  1. flush table with read locak;
  2. create snapshot;
  3. show master status; show slave status;
  4. unlock tables;
  5. copy data from cow to backup
  6. remove snapshot
1.1 环境准备:
1.2 手动基于LVM快照实现备份:

#####1.3 mylvmbackup工具基于LVM自动备份

功能:利用LVM快照实现物理备份,即LVM快照备份的自动版

2. xtrabackup备份

xtrabackup|innobackupex的优点:

  1. 备份过程快速、可靠(因为是物理备份);
  2. 支持增量备份,更为灵活
  3. 备份过程不会打断正在执行的事务;
  4. 能够基于压缩等功能节约磁盘空间和流量;
  5. 自动实现备份检验;
  6. 还原速度快;

缺点:

  1. 只能对innodb表增量备份,myisam表增量备份时是全备
  2. innobackupex备份MyISAM表之前要对全库进行加READ LOCK,阻塞写操作,若备份是在从库上进行的话会影响主从同步,造成延迟。对InnoDB表备份不会阻塞读写。

innobackupex全备原理:

innobackupex备份原理图

图片来自网络

全备恢复原理

画图讲解

具体文字描述如下: