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,提升查询性能以及节约系统开销;
- 增加冗余,提高可用性。
- 读写分离常用
代理方式
来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器