博客
关于我
MySQL Xtrabackup 安装、备份、恢复
阅读量:791 次
发布时间:2023-02-10

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

XtraBackup是Percona公司开发的一款开源数据库备份工具,专为InnoDB和XtraDB存储引擎设计,支持在线热备份,能够在不影响数据库读写的前提下完成数据备份。这款工具在短短几年后便成为MySQL社区的主流备份解决方案之一,但随着时间推移,部分细节可能已有所遗忘。在此,我将重新拾起XtraBackup的相关知识,并结合实际使用场景对其功能、安装和操作流程进行详细说明。

1. 工作原理和主要功能

XtraBackup分为两大核心工具:

  • xtrabackup:专注于备份InnoDB和XtraDB数据库,支持在线备份,不会阻塞数据库事务。
  • innobackupex:封装了xtrabackup功能,扩展支持MyISAM类型的数据库表备份。

xtrabackup的主要特点:

  • 高效可靠:备份过程快速且稳定,不影响数据库性能。
  • 无阻塞操作:支持在线备份,确保数据库持续运行。
  • 智能压缩:支持通过压缩技术节省存储空间和网络传输成本。
  • 自动校验:在备份完成后自动验证备份文件的完整性。
  • 快速还原:在面临数据恢复需求时,能够以高效率还原数据。
  • innobackupex的功能扩展:

    • xtrabackup仅负责InnoDB/XtraDB的数据备份,而innobackupex则提供更全面的备份解决方案:
      • 支持MyISAM表备份(但需在备份过程中加表锁)。
      • 提供更多的参数选项和灵活性。
      • 可以备份数据库结构文件(如.frm文件)。

    2. 安装与配置

    方法一:直接下载二进制包

    对于大多数操作系统,用户可以通过以下步骤完成安装:

    # 下载最新版本(以2.1.9为例)wget http://www.percona.com/downloads/XtraBackup/XtraBackup-2.1.9/binary/Linux/x86_64/percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz# 解压安装包tar zxvf percona-xtrabackup-2.1.9-744-Linux-x86_64.tar.gz# 查看安装目录结构ls-lh

    安装完成后,可以通过以下命令将innobackupexxbcrypt等工具移到/usr/bin目录:

    cp innobackupex-1.5.1/usr/bin/innobackupex /usr/bincp xtrabackup_55 /usr/bin/xtrabackup

    方法二:通过包管理器安装(Ubuntu示例)

    在Ubuntu系统中,可以通过添加Percona的官方仓库进行安装:

    # 添加仓库源apt-key adv --keyserver keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A2echo "deb http://repo.percona.com/apt precise main" >> /etc/apt/sources.listecho "deb-src http://repo.percona.com/apt precise main" >> /etc/apt/sources.list# 更新仓库缓存apt-get update# 安装软件包apt-get install percona-xtrabackup

    支持的版本涵盖多个Linux发行版,具体版本需根据系统类型调整仓库源。

    3. 使用说明

    参数解析

    innobackupex命令提供了丰富的参数选项,主要包括:

    • --defaults-file:指定MySQL配置文件路径。
    • --apply-log:在备份完成后,自动回滚未提交的事务。
    • --copy-back:支持将备份文件复制回数据库目录。
    • --stream:指定备份文件的输出格式(如tar)。
    • --tmpdir:指定临时文件存储目录,避免/tmp空间不足问题。
    • --databases:指定需要备份的数据库列表。
    • --slave-info:支持从库备份。

    备份场景

    • 全量备份
      innobackupex --defaults-file=/etc/mysql/my.cnf --databases=* /path/to/backups/
    • 增量备份
      innobackupex --defaults-file=/etc/mysql/my.cnf --incremental --incremental-basedir=/path/to/full_backup/ /path/to/incremental_backups/

      注意:增量备份仅针对InnoDB数据库,MyISAM仍需全量备份。

    压缩与解压

    • 打包(Tar)
      innobackupex --stream=tar /path/to/backups/ | tar cvf /path/to/xtra_test.tar
    • 压缩(Gzip)
      innobackupex --stream=tar /path/to/backups/ | gzip > /path/to/xtra_test.tar.gz
    • 解包
      tar ixvf /path/to/xtra_test.tar.gz

    4. 测试与验证

    全量备份与还原

    • 备份命令
      innobackupex --defaults-file=/etc/mysql/my.cnf --databases=xtra_test /path/to/backups/
    • 还原命令
      innobackupex --apply-log /path/to/backups/

      注意:还原前需确保目标目录为空,避免数据覆盖。

    增量备份与还原

    • 备份命令
      innobackupex --defaults-file=/etc/mysql/my.cnf --incremental --incremental-basedir=/path/to/full_backup/ /path/to/incremental_backups/
    • 还原命令
      innobackupex --apply-log /path/to/full_backup/ --incremental-dir=/path/to/incremental_backups/

      注意:增量备份的还原需依次应用所有相关日志文件。

    5. 压缩与优化

    • 文件压缩:通过--stream参数选择不同的压缩格式(如targzip等)。
    • 存储优化:合理配置MySQL配置文件,优化数据文件和日志文件的存储路径。

    6. 恢复与维护

    • 文件恢复
      cp -R xtra_test /var/lib/mysql/chown -R mysql:mysql /var/lib/mysql/xtra_test/
    • 数据库启动
      /etc/init.d/mysql start

    7. 常见问题

    • 文件权限问题:确保备份文件和目标目录具有合适的权限。
    • 日志文件冲突:在使用--apply-log时,需确保目标目录为空或已清空。
    • 性能优化:根据数据库负载调整备份计划,避免在高峰期进行大规模备份。

    通过以上命令和操作步骤,您可以轻松掌握XtraBackup的使用方法,并在实际项目中高效地进行数据库备份和恢复。

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

    你可能感兴趣的文章
    mysql中kill掉所有锁表的进程
    查看>>
    mysql中like % %模糊查询
    查看>>
    MySql中mvcc学习记录
    查看>>
    mysql中null和空字符串的区别与问题!
    查看>>
    MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
    查看>>
    MYSQL中TINYINT的取值范围
    查看>>
    MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
    查看>>
    Mysql中varchar类型数字排序不对踩坑记录
    查看>>
    MySQL中一条SQL语句到底是如何执行的呢?
    查看>>
    MySQL中你必须知道的10件事,1.5万字!
    查看>>
    MySQL中使用IN()查询到底走不走索引?
    查看>>
    Mysql中使用存储过程插入decimal和时间数据递增的模拟数据
    查看>>
    MySql中关于geometry类型的数据_空的时候如何插入处理_需用null_空字符串插入会报错_Cannot get geometry object from dat---MySql工作笔记003
    查看>>
    mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
    查看>>
    mysql中出现Unit mysql.service could not be found 的解决方法
    查看>>
    mysql中出现update-alternatives: 错误: 候选项路径 /etc/mysql/mysql.cnf 不存在 dpkg: 处理软件包 mysql-server-8.0的解决方法(全)
    查看>>
    Mysql中各类锁的机制图文详细解析(全)
    查看>>
    MySQL中地理位置数据扩展geometry的使用心得
    查看>>
    Mysql中存储引擎简介、修改、查询、选择
    查看>>
    Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
    查看>>