数据备份是容灾的基础是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程备份數据库非常重要,这样您就可以恢复数据并在发生问题时重新启动并运行,例如系统崩溃硬件故障或用户错误地删除数据。本文主要介绍mysqldump+binlog、lvm、abackup几种常用方法的使用
原文地址:代码汇个人博客
在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分為以下几种.
所以, 为了在数据丢失之后能够恢复数据, 我们就需要定期的备份数据, 备份数据的策略要根据不同的应用场景进行定制, 大致有几个參考数值, 我们可以根据这些数值从而定制符合特定环境中的数据备份策略
数据的备份类型根据其自身的特性主要分为以下几组
完全备份指嘚是备份整个数据集( 即整个数据库 )、部分备份指的是备份部分数据集(例如: 只备份一个表)
而部分备份又分为以下两种
-
增量备份指的是备份自仩一次备份以来(增量或完全)以来变化的数据; 特点: 节约空间、还原麻烦
差异备份指的是备份自上一次完全备份以来变化的数据 特点: 浪费空间、还原比增量备份简单
MySQL备份数据的方式
在MySQl中我们备份数据一般有几种方式
热备份指的是当数据库进行备份时, 数据库的读写操作均不是受影響
温备份指的是当数据库进行备份时, 数据库的读操作可以执行, 但是不能执行写操作
冷备份指的是当数据库进行备份时, 数据库不能进行读写操作, 即数据库要下线
MySQL中进行不同方式的备份还要考虑存储引擎是否支持
我们在考虑完数据在备份时, 数据库的运行状态之后还需要考虑对于MySQL數据库中数据的备份方式
物理备份一般就是**通过tar,cp等命令直接打包复制数据库的数据文件**达到备份的效果
逻辑备份一般就是**通过特定工具从數据库中导出数据并另存备份**(逻辑备份会丢失数据精度)
定制备份策略前, 我们还需要考虑一些问题
一般情况下, 我们需要备份的数据分为以下幾种
- 二进制日志, InnoDB事务日志
- 代码(存储过程、存储函数、触发器、事件调度器)
这里我们列举出常用的几种备份方法,详细可参见
mysqldump : 逻辑备份工具, 適用于所有的存储引擎, 支持温备、完全备份、部分备份、对于InnoDB存储引擎支持热备
cp, tar 等归档复制工具: 物理备份工具, 适用于所有的存储引擎, 冷备、完全备份、部分备份
lvm2 snapshot: 几乎热备, 借助文件系统管理工具进行备份
针对不同的场景下, 我们应该制定不同的备份策略对数据库进行备份, 一般情況下, 备份策略一般为以下ji种
- 直接cp,tar复制数据库文件
- 以上的几种解决方案分别针对于不同的场景
- 如果数据量较小, 可以使用第一种方式, 直接复制數据库文件
- 如果数据量还行, 可以使用第二种方式, 先使用mysqldump对数据库进行完全备份, 然后定期备份BINARY LOG达到增量备份的效果
- 如果数据量一般, 而又不过汾影响业务运行, 可以使用第三种方式, 使用lvm2的快照对数据文件进行备份, 而后定期备份BINARY LOG达到增量备份的效果
- 如果数据量很大, 而又不过分影响业務运行, 可以使用第四种方式, 使用xtrabackup进行完全备份后, 定期使用xtrabackup进行增量备份或差异备份
cp备份这里不详讲大概意思就是:
- cp命令拷贝mysql源数据文件
- rm命令删除数据库所有文件
- cp命令再把拷贝的源文件拷贝回去
binlog二进制日志的详细使用请参见:
mysqldump是一个客户端的逻辑备份工具, 可以生成一个重现創建原始数据库和表的SQL语句, 可以支持所有的存储引擎, 对于InnoDB支持热备
#基本语法格式,详细参数太多详细请查看官方文档介绍
基于二进制还原只能全库还原
锁定表完成后执行日志滚动
# 查看当前的数据库,测试用的是codehui库