1 概述

根据备份的方法:

  • 热备
  • 冷备
  • 温备。在数据库运行时进行,对当前数据库操作有影响,如加全局读锁以保证备份数据的一致性。

根据备份后文件的内容:

  • 逻辑备份
  • 裸文件备份

根据备份数据库的内容:

  • 完全备份
  • 增量备份。大部分通过二进制日志完成增量备份。
  • 日志备份。备份 MySQL 数据库的二进制日志。

2 冷备

对 InnoDB 的冷备, 备份:

  • MySQL 数据库的 frm 文件
  • 共享表空间文件
  • 独立表空间文件(*.ibd)
  • 重做日志文件
  • 数据库配置文件 my.cnf(定期)

最好另外将本地的备份存放到远程的服务器中

3 逻辑备份

备份

  1. mysqldump 备份工具(但不能导出视图)
  2. SELECT…INTO OUTFILE 语句

恢复

  1. mysqldump
  2. LOAD DATA INFILE(可以导入通过 mysqldump-tab 或 SELECT INTO OUTFILE 导出的数据)
  3. mysqlimport

4 二进制日志备份与恢复

先启用二进制日志。并且还需要启用一些其他参数来保证安全和正确地记录二进制日志。
推荐的二进制日志的服务器配置:

  1. [mysqld]
  2. log-bin = mysql-bin
  3. sync_binlog = 1
  4. innodb_support_xa = 1

5 热备

  • ibbackup 热备工具
  • XtraBackup 备份工具(可以增量备份)

6 快照备份

MySQL 本身不支持快照功能,因此快照备份是指通过文件系统支持的快照功能对数据库进行备份。
支持快照功能的文件系统和设备包括 FreeBSD 的 UFS 文件系统,Solaris 的 ZFS 文件系统,GNU/Linux 的逻辑管理器(Logical Volume Manager,LVM

7 复制

复制的工作原理

复制(replication)
其工作原理本质上是一个完全备份加上二进制日志备份的还原。是异步实时的。

  1. 主服务器把数据更改记录到二进制日志 binlog
  2. 从服务器把主服务器的二进制日志 binlog 复制到自己的中继日志 relay log
  3. 从服务器重做中继日志,把更改应用到自己的数据库上,达到数据的最终一致性。

image.png

从服务器有 2 个线程:I/O 线程和 SQL 线程。

查看当前复制的延迟:

  • 命令 SHOW SLAVE STATUS 查看当前复制的运行状态
  • 命令 SHOW MASTER STATUS 查看主服务器中二进制日志的状态

快照+复制的备份架构

复制不仅可用作备份,还可以:

  • 数据分布
  • 读取的负载平衡
  • 数据库备份。复制对备份有帮助,但从服务器不是备份。
  • 高可用性和故障转移