数据库备份方案
一 为什么需要备份数据?
在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种.
- 硬件故障
- 软件故障
- 自然灾害
- 黑客攻击
- 误操作 (占比最大)
所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据, 备份数据的策略要根据不同的应用场景进行定制, 大致有几个参考数值, 我们可以根据这些数值从而定制符合特定环境中的数据备份策略
- 能够容忍丢失多少数据
- 恢复数据需要多长时间
- 需要恢复哪一些数据
二 数据的备份类型
数据的备份类型根据内容主要分为以下几组
- 完全备份
- 部分备份
完全备份指的是备份整个数据集( 即整个数据库 )、部分备份指的是备份部分数据集(例如: 只备份一个表)
而部分备份又分为以下两种
- 增量备份
- 差异备份
增量备份指的是备份自上一次备份以来(增量或完全)以来变化的数据; 特点: 节约空间、还原麻烦
差异备份指的是备份自上一次完全备份以来变化的数据 特点: 浪费空间、还原比增量备份简单
三 MySQL备份数据的方式
在MySQl
中我们备份数据一般有几种方式
- 热备份
- 温备份
- 冷备份
热备份指的是当数据库进行备份时, 数据库的读写操作均不是受影响
温备份指的是当数据库进行备份时, 数据库的读操作可以执行, 但是不能执行写操作
冷备份指的是当数据库进行备份时, 数据库不能进行读写操作, 即数据库要下线
MySQL
中进行不同方式的备份还要考虑存储引擎是否支持
- MyISAM
热备 ×
温备 √
冷备 √
- InnoDB
热备 √
温备 √
冷备 √
我们在考虑完数据在备份时, 数据库的运行状态之后还需要考虑对于MySQL
数据库中数据的备份方式
物理备份一般就是通过tar
,cp
等命令直接打包复制数据库的数据文件达到备份的效果
逻辑备份一般就是通过特定工具从数据库中导出数据并另存备份(逻辑备份会丢失数据精度)
- 物理备份
- 逻辑备份
四 备份需要考虑的问题
定制备份策略前, 我们还需要考虑一些问题
我们要备份什么?
一般情况下, 我们需要备份的数据分为以下几种
- 数据
- 二进制日志, InnoDB事务日志
- 代码(存储过程、存储函数、触发器、事件调度器)
- 服务器配置文件
备份工具
这里我们列举出常用的几种备份工具 mysqldump
: 逻辑备份工具, 适用于所有的存储引擎, 支持温备、完全备份、部分备份、对于InnoDB存储引擎支持热备 cp, tar 等归档复制工具
: 物理备份工具, 适用于所有的存储引擎, 冷备、完全备份、部分备份 lvm2 snapshot
: 几乎热备, 借助文件系统管理工具进行备份 mysqlhotcopy
: 名不副实的的一个工具, 几乎冷备, 仅支持MyISAM存储引擎 xtrabackup
: 一款非常强大的InnoDB/XtraDB热备工具, 支持完全备份、增量备份, 由percona
提供
五 设计合适的备份策略
针对不同的场景下, 我们应该制定不同的备份策略对数据库进行备份, 一般情况下, 备份策略一般为以下三种
- 直接cp,tar复制数据库文件
- mysqldump+复制BIN LOGS
- lvm2快照+复制BIN LOGS
- xtrabackup
以上的几种解决方案分别针对于不同的场景
- 如果数据量较小, 可以使用第一种方式, 直接复制数据库文件
- 如果数据量还行, 可以使用第二种方式, 先使用mysqldump对数据库进行完全备份, 然后定期备份BINARY LOG达到增量备份的效果
- 如果数据量一般, 而又不过分影响业务运行, 可以使用第三种方式, 使用
lvm2
的快照对数据文件进行备份, 而后定期备份BINARY LOG达到增量备份的效果 - 如果数据量很大, 而又不过分影响业务运行, 可以使用第四种方式, 使用
xtrabackup
进行完全备份后, 定期使用xtrabackup
进行增量备份或差异备份 - 各大备份方法对比表
备份方法 | 备份速度 | 恢复速度 | 方便程度 | 功能性 | 实用场景 | 引擎支持 | 备份方式 |
Cp | 快 | 快 | 一般,灵活性不高 | 弱 | 数据量不大 | 所有 | 冷备 |
mysqldump | 慢 | 慢 | 一般、可无视存储引擎的差异 | 一般 | 少量数据 | 所有 | 温备,对于InnoDB存储引擎支持热备 |
lvm2快照 | 快 | 快 | 一般、支持几乎热备、速度快 | 一般 | 中小型数据量的备份 | 所有 | 热备, |
xtrabackup | 较快 | 较快 | 实现innodb热备、对存储引擎有要求 | 强大 | 较大规模的备份 | InnoDB | 热备 |
六数据库备份工具设计与实现
数据库备份工具属于软件附属工具,他应具有按计划,按任务,可配置,可存储,可长时间运行的能力。
6.1按计划
是指在规定的时间条件下执行指定的任务,并且周期性的执行
6.2 按任务
是指将要备份的数据库一些列操作的定义,他应包括要备份的数据库相关属性,如地址,端口,其他参数
6.3 可配置
是指该工具所有运行参数可修改,可增加,可删除
6.4 可存储
是指将备份好的数据库文件存储到指定地址,如本地或者是上传到远程主机
6.5 工具设计
开发一款windows桌面程序,他附属于配套的mssp平台,受控于看门狗程序管理。可独立部署,可以根据配置文件进行工作,并且有自己的工作目录。并且支持配置文件,mongodb数据库备份,对不同类型的数据库,配置文件备份采用插件式设计
6.6 备份方法
本次采用cp备份方法,因为他简单高效,非常适合公司的软件产品