博客
关于我
MySQL 备份 Xtrabackup
阅读量:797 次
发布时间:2023-02-10

本文共 2055 字,大约阅读时间需要 6 分钟。

MySQL 备份与恢复(基于 XtraBackup)

1. XtraBackup 简介

XtraBackup 是 Percona 开发的一款高性能 InnoDB 数据库热备份工具,支持在线热备份(即在备份过程中,不会影响数据库的读写操作)。它成为替代传统的 mysqldump 工具,特别适用于需要高效、可靠的热备份场景。

XtraBackup 的主要特点

  • 无需停止数据库:XtraBackup 能够在数据库运行时进行备份,不会对业务造成影响。
  • 支持增量备份:可以仅备份自上次完整备份以后的数据变化。
  • 高效的数据传输:将备份数据流(Redo Log)实时压缩并传输,减少网络开销。
  • 易于创建主从复制:支持基于 XtraBackup 的主从同步,简化数据库的高冗备份方案。
  • 服务器负载小:备份过程不会对数据库造成额外的负载压力。

  • 2. 了解备份方式

    MySQL 的备份方式主要有以下几种:

  • 热备份(Full Backup):基于 InnoDB 的热备份,支持在线操作。
  • 温备份(Warm Backup):仅针对 MyISAM 存储引擎,备份过程中允许读操作。
  • 冷备份(Cold Backup):需要对数据库进行全停,备份过程中不允许读写操作。
  • 逻辑备份(Logical Backup):通过 mysqldump 将数据导出为文本文件。
  • 物理备份(Physical Backup):直接复制数据库文件,包括 InnoDB 的数据文件和相关配置。

  • 3. XtraBackup 的工作原理

    3.1 XtraBackup 备份过程

  • 启动后台检测进程:在备份开始时,XtraBackup 会启动一个后台进程,实时监控 MySQL 的 Redo Log 中的写入操作,并将这些日志信息记录到一个临时文件中(xtrabackup_log)。
  • 复制数据文件:依次复制 InnoDB 的数据文件(如 ibdata1)和系统表空间文件(如 frmMYIMYD 等)。
  • 执行 FLUSH TABLES:在备份完成前,执行 FLUSH NO_WRITE_TO_BINLOG TABLES,确保所有表数据已写入二进制日志文件。
  • 解锁表:通过 UNLOCK TABLES 命令取消表的读锁,恢复表的可写状态。
  • 停止备份:将 xtrabackup_log 文件关闭,完成备份操作。
  • 3.2 XtraBackup 全量备份与恢复

  • 全量备份

    • 使用 innobackupex 命令执行全量备份:
      innobackupex --defaults-file=/etc/my.cnf /opt/2017-01-05_11-04-55/
    • 参数说明:
      • --defaults-file:指定使用的 MySQL 配置文件。
      • /opt/2017-01-05_11-04-55/:指定备份的目标目录。
  • 恢复全量备份

    • 使用 --apply-log 选项恢复备份数据:
      innobackupex --apply-log /opt/2017-01-05_11-04-55/
    • 恢复过程会将 xtrabackup_log 文件中的日志信息重新应用到数据库中,恢复数据到最新状态。
  • 增量备份

    • 基于全量备份的增量备份需要指定增量备份的目录:
      innobackupex --incremental /opt/ --incremental-basedir=/opt/2017-01-05_11-04-55/
    • 参数说明:
      • --incremental:启用增量备份功能。
      • --incremental-basedir:指定增量备份的基础目录。
  • 增量恢复

    • 恢复增量备份时,需要指定全量备份和增量备份的目录:
      innobackupex --copy-back --defaults-file=/etc/my.cnf /opt/2017-01-05_11-04-55/
    • 参数说明:
      • --copy-back:执行增量备份文件的恢复操作。
      • /opt/2017-01-05_11-04-55/:指定全量备份的目录。

  • 4. 单库备份与恢复

    4.1 安装 XtraBackup

    安装 Percona XtraBackup,可以通过以下命令:

    yum install -y percona-xtrabackup-22

    4.2 检查安装结果

    确保安装成功:

    rpm -qa | grep xtrabackup

    5. 压缩与解压

    5.1 压缩

    将备份文件压缩到 tar 格式,并传输到其他服务器:

    mkdir /tmp/dbinnobackupex --stream=tar /tmp/db | gzip > /tmp/db/$(date +%F).tar.gz

    5.2 解压

    在目标服务器上解压备份文件:

    tar -izxvf 
    <备份文件名>
    .tar.gz

    通过以上方法,可以实现 MySQL 数据库的高效热备份与恢复,XtraBackup 提供了灵活的备份策略,适用于各种复杂的数据库场景。

    转载地址:http://wkbfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    mysql 状态检查,备份,修复
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>
    MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
    查看>>
    mysql 用户管理和权限设置
    查看>>
    MySQL 的 varchar 水真的太深了!
    查看>>
    mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
    查看>>
    MySQL 的instr函数
    查看>>
    MySQL 的mysql_secure_installation安全脚本执行过程介绍
    查看>>
    MySQL 的Rename Table语句
    查看>>
    MySQL 的全局锁、表锁和行锁
    查看>>
    mysql 的存储引擎介绍
    查看>>
    MySQL 的存储引擎有哪些?为什么常用InnoDB?
    查看>>
    Mysql 知识回顾总结-索引
    查看>>