文章目录
前言
- 随着办公自动化和电子商务的飞速发展,企业对信息系统的依赖性越来越高,数据库作为信息系统的核心,担当者重要的角色
- 数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段
- 一个合理的数据库备份方案,能够在数据丢失时,有有效地恢复数据,而且也需要考虑技术实现难度和有效地利用资源
一、MySQL 完全备份
1.数据库备份方式精讲
1.1 数据库备份的重要性
生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果
数据库备份的重要性主要体现在:
- 提高系统的高可用性和灾难可恢复性,在数据库系统崩溃时,没有数据库备份就没法找到数据
- 使用数据库备份还原数据库,是数据库崩溃时提供数据恢复最小代价的最优方案,如果让用户重新添加数据,代价未免太大
- 没有数据就没有一切,数据库备份是一种防范灾难的强力手段
使用数据库的过程中,有多种原因造成数据的丢失:
- 程序错误:指对数据库操作的程序难免有些错误,造成数据丢失
- 人为错误:指由于使用人员的误操作造成的数据被破坏,还有可能是黑客对系统攻击造成的数据丢失等
- 计算机失败:指运行数据库的服务器操作系统或软件损坏,有可能造成数据的损坏
- 磁盘失败:指硬盘等存储数据的硬件设备,长时间运行后可能损坏,造成数
据丢失- 灾难(如火灾、地震)和偷窃:指自然灾害等的发生,有可能造成数据丢失
- 数据丢失会造成严重的经济损失,如携程网2015年5月28日数据库崩溃,每小时损失大概106万美元
- 所以在企业信息系统建设中,数据库的备份管理是非常重要的内容
1.2 数据库备份的分类
备份方式分很多种,从物理与逻辑的角度,备份可分为以下几类:
1.2.1 物理备份
- 指对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
- 物理备份又可以分为脱机备份(冷备份)和联机备份(热备份)
- 冷备份(脱机备份):在关闭数据库时进行的备份操作,能够较好地保证数据库的完整性
- 热备份(联机备份):在数据库运行状态中进行操作,这种备份方法依赖于数据库的日志文件
1.2.2 逻辑备份
- 指对数据库逻辑组件(如表等数据库对象)的备份
从数据库的备份策略角度来看,备份又可分为完全备份、差异备份和增量备份
1.2.3 完全备份
- 每次对数据进行完整的备份
- 可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象
- 但它需要花费更多的时间和空间,所以,做一次完全备份的周期要长些
1.2.4 差异备份
- 备份那些自从上次完全备份之后被修改过的文件,即只备份数据库部分的内容
- 它比最初的完全备份小,因为只包含自上次完全备份以来所改变的数据库
- 它的优点是存储和恢复速度快
1.2.5 增量备份
- 只有那些在上次完全备份或者增量备份后被修改的文件才会被备份
1.2.6 备份方式比较
备份方式 | 完全备份 | 差异备份 | 增量备份 |
---|---|---|---|
完全备份时的状态 | 表1、表2 | 表1、表2 | 表1、表2 |
第1次添加内容 | 创建表3 | 创建表3 | 创建表3 |
备份内容 | 表1、表2、表3 | 表3 | 表3 |
第2次添加内容 | 创建表4 | 创建表4 | 创建表4 |
备份内容 | 表1、表2、表3、表4 | 表3、表4 | 表4 |
- 完全备份每次都是把整个数据库中的内容进行备份
- 差异备份在第1次添加内容后备份,即备份新添加的内容;第2次添加内容后备份,把第1次添加的内容也进行了备份,它是根据完全备份时的状态决定的
- 差异备份每次都是把完全备份之后所有的修改进行备份,而不管之前是否做过差异备份
- 增量备份只备份每次新修改的内容,第1次创建表3,就对表3备份,第2次添加表4后,因为之前已经备份过表3,所以只备份表4的内容
1.3 MySQL 完全备份概念解读
- MySQL 的备份方式主要有完全备份与增量备份
- 完全备份是对整个数据库的备份、数据库结构和文件结构的备份,保存的是备份完成时刻的数据库,是增量备份的基础
- 完全备份的优点是备份与恢复操作简单方便,缺点是数据存在大量重复,占用大量的备份空间,备份的时间长
- 在生产环境中,这两种备份方式都会使用,需要制定合理高效的方案达到备份数据的目的,避免数据丢失造成严重的后果
2.mysqldump 备份演练
- MySQL 数据库的备份可以采用两种方式
- 因为数据库实际上就是文件,直接打包数据库文件夹,或者是使用专用备份工具 mysqldump 都可以进行备份工作
2.1 使用 tar 打包文件夹备份
- MySQL 的数据库文件默认都是保存在安全目录的 data 文件夹下,可以直接保存 data 文件夹,因为占用空间较大,可以使用data 打包压缩进行保存
yum -y install xz
#数据库文件很大,可以使用压缩率较大的xz格式压缩,首选需要安装xz压缩格式工具
tar Jcvf /opt/mysql-$(date +%F).tar.xz /usr/local/mysql/data/
#对数据库文件夹进行打包操作
ls /opt
#查看打包命令是否运行成功,已经生成了备份文件
du -sh /opt/