MySQL备份与恢复:全量备份、增量备份和恢复操作指南

目录

一、MySQL数据库备份概述

1.数据库造成数据丢失的原因

2.数据库备份类型

3.常见的备份方法

二、数据库完全备份操作

1.物理冷备份与恢复

2.mysqldump备份与恢复

3.MySQL增量备份与恢复


一、MySQL数据库备份概述

1.数据库造成数据丢失的原因

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

2.数据库备份类型

     1.从备份方式分类

  • 物理备份
    • 定义:对数据库操作系统物理文件(如数据文件、日志文件)的备份
    • 适用场景:适用于在出现问题时需要快速恢复的大型数据库
    • 分类

      • 冷备份(脱机备份):在数据库关闭的状态下进行备份操作

      • 热备份(联机备份):在数据库处于运行状态时进行备份操作,该方法依赖数据库的日志文件

      • 温备份:数据库锁定表格(不可写入但可读)的状态下进行备份操作

  • 逻辑备份
    • 定义:对数据库逻辑组件的备份

    • 适用场景:适用于可以编辑数据值或表结构较小的数据量或者需要在不同的机器体系结构上重新创建数据

     2.从备份策略角度分类

  • 完全备份:每次对数据进行完整备份

    • 优点:操作简单

    • 缺点:占用大量磁盘空间,备份时间长

  • 差异备份:备份那些自从上次完全备份后被修改的所有文件

    • 恢复方式:只需恢复上次的完全备份与最近一次的差异备份

  • 增量备份:只有那些在上次完全备份或增量备份后被修改的文件才会被备份

    • 优点:备份数据量小,占用空间小,备份速度快

    • 缺点:恢复时需要依次恢复所有增量备份,如果中间备份数据损坏,将会导致数据丢失

3.常见的备份方法

     1.物理冷备份

  • 适用场景:一般用于非核心业务,允许短时间中断

  • 特点:备份速度快,恢复简单

  • 实现方式:直接打包数据库文件夹(如 /var/lib/mysql

     2.MySQL专用备份工具

  •  mysqldump(逻辑备份)

    • 特点

      • 客户端常用的逻辑备份工具

      • 生成可重现数据库结构和数据的SQL语句

      • 适用于所有存储引擎(InnoDB、MyISAM等)

      • 支持全库、单库、单表备份

  • mysqlhotcopy(物理备份)

    • 特点

      • 仅适用于 MyISAM 和 ARCHIVE 表

      • 只能在 UNIX/Linux 系统上运行

      • 备份速度快,但不如 mysqldump 通用

     3.二进制日志增量备份

  • 适用场景:需要增量备份,仅备份自上次备份后的数据变更

  • 特点

    • 二进制日志记录所有数据库更改操作

    • 支持 时间点恢复(PITR, Point-In-Time Recovery)

  • 操作方式

    • 启用 log-bin 配置

    • 定期执行 FLUSH LOGS 切换日志文件

二、数据库完全备份操作

1.物理冷备份与恢复

  • 备份数据库(创建一个/backup目录作为备份数据存储路径,使用tar创建备份文件)

    systemctl stop mysqld
    mkdir /backup
    cd /usr/local/mysql/
    tar zcf mysql-all.tar.gz data/
    mv mysql-all.tar.gz /backup/
    ls /backup/
  • 恢复数据库
    cd /usr/local/mysql/
    systemctl stop mysqld
    rm -rf data
    tar zxf /backup/mysql-all.tar.gz 
    chown -R mysql:mysql data
    systemctl start mysqld
    mysql -uroot -p'aptech1!' -e 'show databases;'

2.mysqldump备份与恢复

  • 备份数据库

    • 格式1:备份指定库中的部分表

      mysqldump [选项] 库名 [表名1] [表名2]……> /备份路径/备份文件名
      
      例: 备份:mysqldump -uroot -p kgc t1 > /backup/kgc_t1.sql
      恢复:mysqldump -uroot -p'aptech1!' kgc < /backup/kgc_t1.sql
    • 格式2:备份一个或多个完整的库(包括其中所有的表)

      mysqldump [选项] --databases 库名1[库名2]……> /备份路径/备份文件名
      
      例:备份:mysqldump -uroot -p'aptech1!'  --databases kgc > /backup/kgc.sql 
      恢复:mysqldump -uroot -p'aptech1!' < /backup/kgc.sql
    • 格式3:备份MySQL服务器中的所有库

      mysqldump [选项] --all-daabases > /备份路径/备份文件名
      
      例: 备份:mysqldump -uroot -p'aptech1!'  --all-databases > /backup/mysql-all.sql
      恢复:mysqldump -uroot -p'aptech1!' < /backup/mysql-all.sql
  • 恢复数据库

    mysql [选项] [库名] [表名] 

3.MySQL增量备份与恢复

1.MySQL增量备份(自定义binlog配置)

vi /etc/my.cnf

[mysqld]
log-bin=/usr/local/mysql/data/mysql-bin    #启用二进制日志并指定其存储路径
binlog_format = MIXED    #定义二进制日志的记录格式为混合模式
server-id=1    #为mysql实例分配一个唯一的服务器标识符

systemctl restart mysqld

2.MySQL增量恢复

  • 一般恢复:将所有备份的二进制日志内容全部恢复

    mysqlbinlog [--no-defaulets] 增量备份文件 | mysql -u 用户名 -p 密码
  • 基于位置恢复

    • 恢复数据到指定位置

      mysqlbinlog --stop-position='操作 id' 二进制日志 | mysql -u 用户名  -p 密码 
    • 从指定位置开始恢复数据

      mysqlbinlog --start-position='操作 id' 二进制日志 | mysql -u 用户名  -p 密码 
  • 基于时间点恢复:跳过某个发生错误的时间点实现数据恢复

    • 从日志开头截止到某个时间点的恢复

      mysqlbinlog [ -- no-defaults] -- stop-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql-u 用户名-p 密码
    • 从某个时间点到日志结尾的恢复

      mysqlbinlog [ -- no-defaults] -- start-datetime='年-月-日 小时:分钟:秒'二进制日志 | mysql-u 用户名-p 密码
    • 从某个时间点到某个时间点的恢复

      mysqlbinlog [ -- no-defaults] -- start-datetime='年-月-日 小时:分钟:秒' '-- stop-datetime='年-月-日小时:分钟:秒’二进制日志 | mysql-u 用户名 -p 密码

你可能感兴趣的:(mysql,mysql,adb,数据库)