1. 备份的方法

  • 热备份:在数据库运行中备份,不会对数据库造成影响
  • 冷备份:在数据库关闭后备份,直接拷贝即可
  • 温备份:在数据库运行中备份,需要加一个全局锁以保证数据的一致性

2. 备份的内容

  • 完全备份: 对数据库进行一个完整的备份
  • 增量备份:在上次备份的基础上,对更新的内容进行备份
  • 日志备份:对MySQL数据库二进制文件的备份,可以通过该备份进行重做来完成恢复

大多数情况下还是通过日志备份进行的,但是效率低

3. 冷备份

优点

  • 简单,只需拷贝即可
  • 恢复简单,直接将文件恢复到指定位置即可
  • 可以在不同的操作系统和MySQL版本上进行恢复
  • 恢复速度快,不需要任何SQL语句,也不需要重建索引

缺点

  • 文件大,因为有很多Undo页还有插入缓存等

3. 逻辑备份

  • mysqldump命令实现
  • 文件就是SQL语句,直接执行即可(但是不能备份视图)

4. 二进制日志的备份与恢复

  • 默认情况下不启动

5. 热备份

  • ibbackup工具,可以备份InnoDB和MyISAM引擎的表

优点:

  • 在线备份。不阻塞其他SQL语句
  • 备份性能好。实质是复制数据库文件和重做日志
  • 支持压缩备份。可以进行不同级别的压缩

恢复过程

  • 恢复表空间
  • 应用重做日志恢复InnoDB存储引擎表

7. 主从复制

过程

  • 主服务器把数据更新到二进制文件中
  • 从服务器吧主服务器的二进制日志拷贝到自己的中继日志中
  • 从服务器重做中继日志中的时间,把更新应用到自己的数据库中

工作原理

  • 主服务器和从服务器直接存在时延,如果主服务器压力过大,时延会边长
  • 主服务器的binlog 线程 :负责将主服务器上的数据更改写入二进制日志(Binary log)中
  • 从服务器有两个线程:一个是I/O线程,负责读取主服务器的二进制日志,并将其保存在中继日志(Relay log)中;另一个是SQL线程,负责读取并执行中继日志

复制可以用来作为备份,但其功能不仅限于备份,其主要功能如下:

  • 数据分布。由于MySQL数据库提供的复制并不需要很大的带宽,因此可以在不同的数据中心之间实现数据的拷贝。
  • 读取的负载平衡。通过建立多个从服务器,可将读取平均地分布到这些从服务器中,从而减少主服务器的压力。一般可以通过DNS的Round-Robin和Linux的LVS功能实现负载平衡。
  • 数据库备份。复制对备份很有帮助,但是从服务器不是备份,不能完全代替备份。
  • 高可用性和故障转移。通过复制建立的从服务器有助于故障转移,减少故障的停机时间和恢复时间

原理

  • 基于语句的复制:将主库执行的语句在从库执行。
  • 基于行的复制:将数据准确的复制到从库。

对比
基于语句的复制

  • 优点:服务的数据的变更出现问题后很容易定位到
  • 缺点;有些语句无法正确的复制

基于行的复制

  • 优点:数据能准确度保存到从库,可以减少锁的使用
  • 缺点:由于找不到SQL语句,很难定位数据

8. 读写分离

主服务器处理写操作以及实时性要求比较高的读操作,而从服务器处理读操作。
读写分离能提高性能的原因在于:

  • 主从服务器负责各自的读和写,极大程度缓解了锁的争用;
  • 从服务器可以使用 MyISAM,提升查询性能以及节约系统开销;
  • 增加冗余,提高可用性。
  • 读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器