Chao's Blog Chao's Blog
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)

~chao

永远菜鸟,不断努力~
首页
  • vue

    • vue路由
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • java
  • spring
  • springboot
  • springcloud
  • git
  • maven
  • nginx
  • tomcat
  • springmvc
  • jvm
  • 图数据库
  • mysql数据库
  • redis数据库
  • windows下docker安装nginx并挂载目录
  • linux命令
  • linux安装软件
  • linux脚本
  • idea
  • vscode
  • 归档
  • 综合项目

    • 若依项目
    • mall项目
  • java
  • mybatis
  • xxl-job
  • mybatis
GitHub (opens new window)
  • cypher图数据

  • mysql数据库

    • mysql尚硅谷宋红康

    • 总结

    • mysql数据库备份与恢复

      • Mysql备份类型
      • 冷备份
      • 冷备份需要的物理文件
        • 热备份
        • 实际应用中,如何将MySQL数据库迁移到其它机器
        • MySQL mysqldump备份数据库(附带实例)
        • MySQL恢复数据库(mysql命令)
        • MySQL使用SELECTI...INTO OUTFILE导出表数据
        • MySQL数据库恢复(LOAD DATA)
      • mysql日志

      • mysql性能优化

    • redis数据库

    • oracle数据库

    • 数据库
    • mysql数据库
    • mysql数据库备份与恢复
    ~chao
    2023-01-29
    目录

    冷备份需要的物理文件

    # 冷备份需要的物理文件

    在《MySQL冷备份 (opens new window)》一节我们介绍了冷备份主要通过复制相关数据文件来实现,下面主要介绍 MyISAM 和 InnoDB 存储引擎需要备份什么物理文件。

    # MyISAM存储引擎

    MyISAM 存储引擎的所有数据默认存放在 C:/ProgramData/MySQL/MySQL Server 5.7/Data 路径下,即配置文件(my.ini或my.cnf)中 datadir 参数的值。

    实际上不管我们使用的是 MyISAM 存储引擎还是其他存储引擎,每一个数据库都会在“datadir”目录下有一个文件夹(包括系统信息的数据库 mysql 也是一样)。

    在各个数据库中每一个 MyISAM 存储引擎的表都会有 3 个文件存在,即记录表结构元数据的“.frm”文件,存储表数据的“.MYD”文件,存储索引数据的“.MYI”文件。

    MyISAM 属于非事务性存储引擎,它没有自己的日志文件。所以 MyISAM 存储引擎的物理备份除了需要备份 MySQL 系统共有的物理文件之外,还需要备份上面的 3 种文件。

    # Innodb 存储引擎

    Innodb 存储引擎属于事务性存储引擎,存放数据的位置也可能与 MyISAM 存储引擎有所不同,这主要取决于 Innodb 的相关配置。

    指定 Innodb 存放数据和日志文件的位置参数为 innodb_data_home_dir、innodb_data_file_path 和 innodb_log_group_home_dir。以及决定 Innodb 的表空间存储方式参数 innodb_file_per_table,它决定 Innodb 是以共享表空间存放数据还是以独享表空间方式存储数据。

    以上几个参数的相关使用说明我们在《MySQL InnoDB存储引擎 (opens new window)》一节中做了相应的解释,在 MySQL 的官方手册中也有较为详细的说明,这里就不再赘述了。

    如果使用的是共享表空间的存储方式,那么需要备份 innodb_data_home_dir 和 innodb_data_file_path 参数设定的所有数据文件,以及 datadir 中相应数据库目录下的所有 Innodb 存储引擎表的 .frm 文件。

    而如果使用的是独享表空间,那么除了需要备份上面共享表空间方式所需要备份的所有文件之外,我们还需要备份 datadir 中相应数据库目录下的所有 .idb 文件,该文件中存放的才是独享表空间方式下 Innodb 存储引擎表的数据。

    那么既然是使用独享表空间,为什么还要备份共享表空间“才使用到”的数据文件呢?其实这是很多人的一个共性误区,以为使用独享表空间的时候 Innodb 的所有信息就都存放在“datadir”所设定数据库目录下的“.ibd”文件中。实际上并不是这样的,“.ibd”文件中所存放的仅仅只是我们的表数据而已。

    大家都很清楚,Innodb 是事务性存储引擎,它需要 undo 和 redo 信息,而不管 Innodb 使用的是共享还是独享表空间的方式来存储数据。与事务相关的 undo 信息以及其他的一些元数据信息,都是存放在 innodb_data_home_dir 和 innodb_data_file_path 这两个参数所设定的数据文件中的。所以要想 Innodb 的物理备份有效,就必须备份 innodb_data_home_dir 和 innodb_data_file_path 参数所设定的数据文件。

    此外,除了上面所说的数据文件之外,Innodb 还有存放自己的 redo 信息和相关事务信息的日志文件在 innodb_log_group_home_dir 参数所设定的位置。所以要想 Innodb 物理备份能够有效使用,我们还必须要备份 innodb_log_group_home_dir 参数所设定的位置的所有日志文件。

    编辑 (opens new window)
    上次更新: 2024/01/26, 05:03:22
    冷备份
    热备份

    ← 冷备份 热备份→

    最近更新
    01
    python使用生成器读取大文件-500g
    09-24
    02
    Windows环境下 Docker Desktop 安装 Nginx
    04-10
    03
    使用nginx部署多个前端项目(三种方式)
    04-10
    更多文章>
    Theme by Vdoing | Copyright © 2022-2024 chaos | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式