数据库备份和恢复

 前期准备

  至少准备两台虚拟机完成Mysql的相关操作!

在生产环境中,数据的安全性至关重要,任何数据的丢失都可能产生严重的后果。

  造成数据丢失的原因:

  • 程序错误
  • 人为操作错误
  • 运算错误
  • 磁盘故障
    • 解决措施:raid5、raid10,上传云,复制备份
  • 灾难和盗窃
    • 容灾(了解):是一个旨在确保业务连续性的系统工程,它涉及IT系统的设计和实施,以防止用户业务系统受到各种灾难的影响和破坏。

一、数据库备份的分类

  1.1 从物理和逻辑上来划分

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

  1.1.1 逻辑备份的格式

mysqldump -u -p --databases 库1 库2 > xxx.sql

mysqldump -u -p --all-databases > xxx.sql

mysqldump -u -p 库1 表1 标2 > xxx.sql


  1.2 数据库备份策略划分

  • 完全备份:每次对数据库进行完整的备份
    • 完全备份过程:每次都进行完全备份,会导致备份文件占用巨大的空间,并且有大量的重复数据;恢复时,直接把文件导入进去即可。
  • 差异备份:每次自从上次完全备份之后被修改过的文件
    • 差异备份过程:上一次差异备份都会备份上一次完全备份之后的数据,可能会出现备份重复数据,也会导致占用额外的磁盘空间;恢复时,先恢复完全备份,之后再导入差异备份的数据
  • 增量备份:只有在上次完全备份或者增量备份后被修改的文件才会被备份
    • 增量备份过程:每次增量备份的数据都是备份在上一次完全备份或者增量备份之后的数据,不会出现重复数据,也不会占用额外的磁盘空间;恢复时,需要完全恢复然后再做增量恢复

  1.3 常见的备份方法

  • 物理冷备

    • 备份时数据库处于关闭状态,直接打包数据库文件

    • 备份速度开,恢复时也是最简单的

  • 专用备份工具mydump或mysqlhotcopy

    • mysqldump常用的逻辑备份工具

    • mysqlhotcopy仅拥有备份MyISAM和ARCHIVE表

  • 启用二进制日志进行增量备份

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

  • 第三方工具备份

    • 免费的MySQL热备份软件

二、MySQL完全备份与恢复

  格式:

mysql -u -p < xxx.sql 恢复库

mysql -u -p 库名 < xxx.sql 恢复表

  2.1 数据库完全备份分类

  2.1.1 物理冷备份与恢复

  • 关闭mysql数据库

  • 使用tar命令直接打包数据库文件夹

  • 直接替换现有mysql目录即可

  2.1.2 mysqldump备份与恢复

  • mysql自带的备份工具,可方便实现对mysql的备份

  • 可以将指定的库、表导出为SQL脚本

  • 可以命令mysql导入备份的数据

  2.1.2.1 完全备份 MySQL 服务器中所有的库

   2.1.2.2 完全备份一个或多个完整的库

  2.1.2.3 完全备份指定库中的部分表

  2.1.2.4 查看备份文件

  2.2  使用mysqldump导出的文件,可使用导入的方法

  • source命令
  • mysql命令

三、mysql增量备份与恢复

  3.1 MySQL数据库增量恢复

  1. 一般恢复
  2. 基于位置恢复
  3. 基于时间点恢复

  3.2 实际操作

    3.2.1 开启二进制日志功能

  二进制日志(binlog)有3种不同的记录格式: STATEMENT (基于SQL语句)、ROW(基于行)、MIXED(混合模式),默认格式是STATEMENT

  3.2.2 查看二进制日志文件内容

  3.2.3 二进制日志中需要关注的部分

  1. at :开始的位置点 
  2. end_log_pos:结束的位置
  3. 时间戳
  4. SQL语句

  3.2.3.1 模拟丢失所有数据的恢复步骤

  3.2.3.2 生成新的二进制日志文件 

  3.2.3.3 基于位置点恢复

  3.2.3.4 基于时间点恢复  

  3.3 总结

 mysql增量备份和恢复过程:

  1. 开启二进制日志,设置二进制日志格式MIXED
  2. 进行一次完全备份,可每周备份一次,通过crontab -e
  3. 使用mysqladmin -uroot -p,flush-logs刷新分割出二进制日志,由于刷新之前的数据都会记录在老的二进制日志里
  4. 可以通过msqlbinlog --no-defaults --base64-output=decode-rows -v 二进制日志文件名查看日志内容
  5. 可以通过mysqlbinlog --no-defaults 二进制日志文件名 mysql -uroot -p恢复丢失的数据库位置恢复 start开始(之后的数据可以使用start) stop结束(单独使用假设你要恢复之前的数据可以使用stop) 单独使用假设你要恢复之前的数据可以使用stop
  • 28
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值