MySQL的备份与恢复_gw

MySQL的备份与恢复

  • 数据备份的重要性
  • 数据库备份的分类
    • 常见的备份方法
  • MySQL完全备份
    • 分类
      • 物理冷备份与恢复
      • 案例:
      • mysqldump备份与恢复
  • MySQL增量备份与恢复
    • MySQL数据库增量备份
      • MySQL二进制日志对备份的意义
    • MySQL数据库增量恢复
      • 一般恢复
      • 基于时间点恢复
      • 基于位置恢复

数据备份的重要性

1、在生产环境中,数据的安全性至关重要
2、任何数据的丢失都可能产生严重的后果
3、造成数据丢失的原因

(1)程序错误
(2)人为操作错误
(3)运算错误
(4)磁盘故障
(5)灾难(如火灾、地震)和盗窃

数据库备份的分类

从物理与逻辑的角度,备份可分为

1、物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份
物理备份方法:
a、冷备份(脱机备份):是在关闭数据库的时候进行的
b、热备份(联机备份)︰数据库处于运行状态,依赖于数据库的日志文件。
c、温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作
2、逻辑备份:对数据库逻辑组件(如表等数据库对象)的
备份

从数据库的备份策略角度,备份可分为

(1)完全备份:每次对数据库进行完整的备份
(2)差异备份:备份自从上次完全备份之后被修改过的文件
(3)增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份

常见的备份方法

(1)物理冷备 (冷备份)

备份时数据库处于关闭状态,直接打包数据库文件
备份速度快,恢复时也是最简单的

(2)专用备份工具mydump或mysqlhot (命令备份)

mysqldump常用的逻辑备份工具
mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

(3)启用二进制日志进行增量备份(日志备份)

进行增量备份,需要刷新二进制日志

(4)第三方工具备份

免费的MySQL热备份软件Percona XtraBackup

MySQL完全备份

1、是对整个数据库、数据库结构和文件结构的备份
2、保存的是备份完成时刻的数据库
3、是差异备份与增量备份的基础
4、优点:备份与恢复操作简单方便
5、缺点:

(1)数据存在大量的重复
(2)占用大量的备份空间
(3)备份与恢复时间长

分类

物理冷备份与恢复

(1)关闭MySQL数据库
(2)使用tar命令直接打包数据库文件夹
(3)直接替换现有MySQL目录即可

案例:

1、创建一个“aaa”的数据库,里面写入一个“a”表
MySQL的备份与恢复_gw_第1张图片

2、先关掉msql数据库!然后把数据库的内容进行打包
MySQL的备份与恢复_gw_第2张图片
MySQL的备份与恢复_gw_第3张图片

2、启动数据库,把数据库里的“aaa”数据库删掉(模拟数据库丢失文件)
MySQL的备份与恢复_gw_第4张图片
MySQL的备份与恢复_gw_第5张图片

4、再次关掉数据库!把之前压缩的文件包内容导入到数据库对应的目录下进行恢复
MySQL的备份与恢复_gw_第6张图片
MySQL的备份与恢复_gw_第7张图片

5、启动数据库,进入数据库查看是否数据库已恢复如前
MySQL的备份与恢复_gw_第8张图片
MySQL的备份与恢复_gw_第9张图片

mysqldump备份与恢复

(1)MySQL自带的备份工具,可方便实现对MySQL的备份
(2)可以将指定的库、表导出为SQL脚本(以“.sql”结尾的文件)
(3)使用命令mysql导入备份的数据

备份:
可以对单个、多个或全部数据库进行备份,也可以对数据库的某个表甚至表的结构进行备份
例:

mysqldump -u root -p auth > auth- ( d a t a + m y s q l d u m p − u r o o t − p − d a t a b a s e s a u t h m y s q l > a u t h − m y s q l − (data +%F).sql #备份auth数据库 mysqldump -u root -p -databases auth mysql > auth-mysql- (data+mysqldumpurootpdatabasesauthmysql>authmysql(data +%F).sql #备份auth和mysql库
mysqldump -u root -p --all-databses > all-data- ( d a t e + m y s q l d u m p − u r o o t − p m y s q l u s e r > m y s q l − u s e r − (date +%F).sql #备份所有数据库 mysqldump -u root -p mysql user > mysql-user- (date+mysqldumpurootpmysqluser>mysqluser(date +%F).sql #备份mysql的user表
mysqldump -u root -p -d mysql user > /tmp/desc-mysql-user-$(data +%F).sql #备份mysql库user表的结构

恢复:

方法1、数据库外:mysql -u root -p bbb < bbb-2020-12-22.sql
方法2、 数据库内:source /root/bbb-2020-12-22.sql;

MySQL增量备份与恢复

MySQL的日志文件记录了详细的操作过程,千万不能随便删

MySQL数据库增量备份

1、使用mysqldump进行完全备份存在的问题

(1)备份数据中有重复数据
(2)备份时间与恢复时间过长

2、MySQL增量备份是自上一次备份后增加/变化的文件或者内容

3、特点

(1)没有重复数据,备份量不大,时间短
(2)恢复需要上次完全备份及完全备份之后所有的增量备份才能恢复,而且要对所有增量备份进行逐个反推恢复

4、MySQL没有提供直接的增量备份方法

可通过MySQL提供的二进制日志间接实现增量备份

MySQL二进制日志对备份的意义

1、二进制日志保存了所有更新或者可能更新数据库的操作
2、二进制日志在启动MySQL服务器后开始记录,并在文件达到max_binlog_size所设置的大小或者接收到flush logs命令后重新创建新的日志文件
3、只需定时执行flush logs方法重新创建新的日志,生成二进制文件序列,并及时把这些日志保存到安全的地方就完成了一个时间段的增量备份

MySQL数据库增量恢复

一般恢复

将所有备份的二进制日志内容全部恢复
命令:

mysqlbinlog [–no-defaults] 增量备份文件 | mysql -u 用户名 -p

基于时间点恢复

(1)跳过某个发生错误的时间点实现数据恢复
(2)在错误时间点停止,在下一个正确时间点开始

基于位置恢复

(1)数据库在某一时间点可能既有错误的操作也有正确的操作
(2)可以基于精准的位置跳过错误的操作
(3)发生错误节点之前的一个节点(上一次正确操作的位置点)停止

你可能感兴趣的:(mysql)