Author mogd 2022-05-06
Update mogd 2022-05-06
Adage Don't take anything for granted

目录

  • Percona XtraBackup 工具的使用
    • 一、工作原理
    • 二、使用
      • 2.1 安装
      • 2.2 权限
      • 2.3 备份
      • 2.4 恢复
      • 2.4 恢复

Percona XtraBackup 工具的使用

Percona XtraBackup 基于 InnoDB 的崩溃恢复功能。它会复制 InnoDB 数据文件,从而导致数据内部不一致;但随后它会对文件执行崩溃恢复,以使它们再次成为一致的、可用的数据库

一、工作原理

Percona XtraBackup 的工作原理是在启动时记住日志序列号 ( LSN ),然后复制数据文件。这样做需要一些时间,因此如果文件正在更改,那么它们会反映数据库在不同时间点的状态。同时,Percona XtraBackup 运行一个后台进程来监视事务日志文件,并从中复制更改。Percona XtraBackup 需要不断地执行此操作,因为事务日志是以循环方式编写的,并且可以在一段时间后重用。Percona XtraBackup 自开始执行以来对数据文件的每次更改都需要事务日志记录

Percona XtraBackup 使用备份锁作为 FLUSH TABLES WITH READ LOCK 的轻量级替代品

注:此功能在 Percona Server for MySQL 5.6以上可用,MySQL 8.0 允许通过 语句获取实例级备份锁

只有在 Percona XtraBackup 完成备份所有 InnoDB/XtraDB 数据和日志后,才会对 MyISAM 和其他非 InnoDB 表 进行锁定。Percona XtraBackup 自动使用它来复制非 InnoDB 数据,以避免阻塞修改 InnoDB 表的 DML 查询

二、使用

xtrabackup 配置通过选项完成,可以使用命令行指定选项,还可以在 my.cnf 文件中指出

指定默认备份的目录

[xtrabackup]
target_dir = /data/backups/mysql/

2.1 安装

centos 系统

# 安装 Percona yum 存储库
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# 启用存储库
percona-release enable-only tools release
# 安装 Percona XtraBackup
yum install percona-xtrabackup-80
# 安装压缩备份工具 qpress
yum install qpress

Debian or Ubuntu 系统

# 下载对应的 deb 包
wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
# dpkg 安装软件包
dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
# 启用存储库和更新本地缓存
percona-release enable-only tools release && apt update
# 安装 Percona XtraBackup
sudo apt install percona-xtrabackup-80
# 安装压缩备份工具 qpress
sudo apt install qpress

二进制包

wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.23-16/binary/tarball/percona-xtrabackup-8.0.23-16-Linux-x86_64.glibc2.17.tar.gz

2.2 权限

Percona XtraBackup 需要能够连接到数据库服务器并在创建备份时、在某些情况下准备时以及在恢复时对服务器和 datadir 执行操作

最低权限示例:

mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 's3cr%T';
mysql> GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bkpuser'@'localhost';
mysql> GRANT SELECT ON performance_schema.log_status TO 'bkpuser'@'localhost';
mysql> GRANT SELECT ON performance_schema.keyring_component_status TO bkpuser@'localhost'
mysql> FLUSH PRIVILEGES;

所需的权限:

  • RELOAD and LOCK TABLES (除非指定了 --no-lock 选项): 为了在开始复制文件之前运行 FLUSH TABLES WITH READ LOCK 和 FLUSH ENGINE LOGS,并且在使用备份锁时需要此权限
  • BACKUP_ADMIN: 查询 performance_schema.log_status 表,以及运行 LOCK INSTANCE FOR BACKUP、LOCK BINLOG FOR BACKUP 或 LOCK TABLES FOR BACKUP
  • REPLICATION CLIENT: 获得二进制日志位置
  • CREATE TABLESPACE: 导入表
  • PROCESS (必需的): 为了运行 SHOW ENGINE INNODB STATUS,并且可以选择查看在服务器上运行的所有线程
  • SUPER: 为了在复制环境中启动/停止复制线程,使用 XtraDB Changed Page Tracking 进行增量备份和处理带有读锁的 FLUSH TABLES
  • CREATE: 为了创建 PERCONA_SCHEMA.xtrabackup_history 数据库和表
  • ALTER: 为了更新 PERCONA_SCHEMA.xtrabackup_history 数据库和表
  • INSERT: 为了将历史记录添加到 PERCONA_SCHEMA.xtrabackup_history 表
  • SELECT: 为了使用 --incremental-history-name 或 --incremental-history-uuid 以便该功能在 PERCONA_SCHEMA.xtrabackup_history 表中查找 innodb_to_lsn 值
  • keyring_component_status 表的 SELECT: 在使用时查看已安装的密钥环组件的属性和状态

2.3 备份

注:xtrabackup 备份不会覆盖现有文件,如果目录下存在文件会出现失败

全量备份

# 不会产生 LSN
xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/backups/xtrabackup/
# 产生 LSN
xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/backups/xtrabackup/ --datadir=/usr/local/mysql/data/
## 结果
ls -lh /data/backups/xtrabackup/total 201M
-rw-r----- 1 root root  489 May  6 19:51 backup-my.cnf
-rw-r----- 1 root root 1.3K May  6 19:51 ib_buffer_pool
-rw-r----- 1 root root 200M May  6 19:51 ibdata1
drwxr-x--- 2 root root 4.0K May  6 19:51 mysql
drwxr-x--- 2 root root 4.0K May  6 19:51 performance_schema
drwxr-x--- 2 root root  12K May  6 19:51 sys
-rw-r----- 1 root root   63 May  6 19:51 xtrabackup_binlog_info
-rw-r----- 1 root root  115 May  6 19:51 xtrabackup_checkpoints
-rw-r----- 1 root root  575 May  6 19:51 xtrabackup_info
-rw-r----- 1 root root 2.5K May  6 19:51 xtrabackup_logfile

增量备份

xtrabackup 支持增量备份,是基于 InnoDB 包含的一个日志序号或 LSN

LSN 是整个数据库的胸膛版本号,每个页面的 LSN 显示其最近的更改时间

注:增量备份实际上并不将数据文件与先前备份的数据文件进行比较。因此,在 部分备份之后运行增量备份可能会导致数据不一致

增量备份只需读取页面并将其 LSN 与上次备份的 LSN 进行比较。但是,仍然需要完整备份来恢复增量更改;如果没有完整备份作为基础,增量备份就毫无用处

如果知道具体的 LSN, 可以使用 --incremental-lsn 选项执行增量备份
可以查看全量备份的 xtrabackup_checkpoints 文件,里面记录着 lsn

# cat /data/backups/xtrabackup/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 11918093
last_lsn = 11918109
compact = 0
recover_binlog_info = 0
  1. 基于全量备份的增量备份

     xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/xtrabackup --datadir=/usr/local/mysql/data/# /data/backups/inc1/目录包含增量文件, 如 ibdata1.delta 和 test/runoob_tbl.ibd.delta# cat /data/backups/inc1/xtrabackup_checkpointsbackup_type = incrementalfrom_lsn = 11918093to_lsn = 11918109last_lsn = 11918125compact = 0recover_binlog_info = 0
    
  2. 指定 LSN
     xtrabackup --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/backups/inc2 --incremental-lsn=11918125 --datadir=/usr/local/mysql/data/ # cat /data/backups/inc2/xtrabackup_info uuid = 80cc68ee-cd36-11ec-86c3-00163e109cddname = tool_name = xtrabackuptool_command = --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/backups/inc2 --incremental-lsn=11918125 --datadir=/usr/local/mysql/data/ tool_version = 2.4.11ibbackup_version = 2.4.11server_version = 5.7.25-28-logstart_time = 2022-05-06 20:17:29end_time = 2022-05-06 20:17:31lock_time = 0binlog_pos = filename 'mysql-bin.000003', position '1111', GTID of the last change '9886f770-b231-11ec-ba3c-00163e109cdd:1-20'innodb_from_lsn = 11918125innodb_to_lsn = 11918125partial = Nincremental = Yformat = filecompact = Ncompressed = Nencrypted = N
    

将增量备份应用于完整备份

# 准备完整备份,注意防止回滚阶段
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/xtrabackup
-------------------------- 命令结果 ----------------------------
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 11918118
InnoDB: Number of pools: 1
220506 20:24:29 completed OK!
--------------------------------------------------------------
# 增量备份应用到完整备份
# 如果是最后一个备份
xtrabackup --prepare --target-dir=/data/backups/xtrabackup \
--incremental-dir=/data/backups/inc1
# 如果不是最后一个备份
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/xtrabackup \
--incremental-dir=/data/backups/inc1

--apply-log-only 合并除最后一个以外的所有增量时应使用

2.4 恢复

xtrabackup --user=DVADER --password=14MY0URF4TH3R --copy-back --target-dir=/data/backups/xtrabackup

注:恢复的数据库 datadir 必须为空,恢复后注意 datadir 目录中文件的用户权限和用户组

后一个以外的所有增量时应使用

2.4 恢复

xtrabackup --user=DVADER --password=14MY0URF4TH3R --copy-back --target-dir=/data/backups/xtrabackup

注:恢复的数据库 datadir 必须为空,恢复后注意 datadir 目录中文件的用户权限和用户组

--copy-back 是将备份复制到服务器,如果不想保留备份,还可以通过 --move-back 将备份移到 datadir

Percona XtraBackup工具的使用相关推荐

  1. mysql 5.7 xbackup_CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup

    前言 CentOS 7 下 MySQL 5.7 配置 Percona Xtrabackup ,记录一下大致的安装和配置过程. Percona XtraBackup 的备份工具支持热备份(即不必停止 M ...

  2. Percona XtraBackup 关于 MySQL备份还原的详细测试

    Percona XtraBackup 关于 MySQL备份还原的详细测试 一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: ...

  3. Linux随笔19-MySQL主从复制、Percona XtraBackup实现全量和增量备份、ProxySQL实现读写分离

    Contents 1. MySQL5.7实现主从复制 1.1 基础环境 1.2. 配置主从复制 1.2.1. master节点上的配置 1.2.2. slave节点上的配置 1.2.3. 中继日志问题 ...

  4. 《Linux运维实战:使用Percona XtraBackup物理备份与恢复Mysql数据》

    一.Percona XtraBackup工具介绍 Percona XtraBackup是世界上唯一开源.免费的MySQL热备份软件,可为InnoDB和XtraDB数据库执行非阻塞备份.Percona ...

  5. Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)

    Percona Xtrabackup备份mysql大数据库(完整备份与增量备份) 文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 innoback ...

  6. Percona XtraBackup User Manual 阅读笔记

    http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html XtraBackup XtraBackup 2 安装XtraBack ...

  7. MySQL · 物理备份 · Percona XtraBackup 备份原理

    前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 ...

  8. 没有qpress_MySQL 大数据备份方案之Percona XtraBackup

    --user:该选项表示备份账号. --password:该选项表示备份的密码. --port:该选项表示备份数据库的端口. --host:该选项表示备份数据库的地址. --socket:该选项表示m ...

  9. Percona XtraBackup 安装介绍篇

    XtraBackup介绍 XtraBackup是Percona公司的开源项目,用以实现类似Innodb官方的热备份工具InnoDB Hot Backup的功能,它支持在线热备份(备份时不影响数据读写) ...

最新文章

  1. 关于JavaScript为何要限制跨域访问
  2. 【Unix 网络编程】TCP状态转换图详解
  3. C++归并排序递归写法
  4. python中从键盘输入的代码_Python读取键盘输入的2种方法
  5. Java Post 数据请求和接收
  6. Eclipse 各种快捷键
  7. Hmac - Java加密与安全
  8. 中文版GPT-2,可用于写小说、诗歌、新闻等
  9. wxpython pypi_Python iwx包_程序模块 - PyPI - Python中文网
  10. SDL_gfx-2.0.23在windows平台下的编译及例子
  11. 单位阶跃信号是周期信号吗_直流散热风扇的信号你知道如何控制吗?
  12. leetcode Database3
  13. jquery详细基础教程
  14. 计算机主板的位置,电脑主板在哪个位置(主板工作原理和主要种类)
  15. Nonebot QQ机器人插件七:智能聊天机器人
  16. 有源蜂鸣器与无源蜂鸣器的驱动方式详解(精华版)
  17. 刘宇凡:坚持就是写文章的最大技巧
  18. 【Python】完美采集淘宝数据(附完整源代码和视频教程)
  19. 西游记中唐僧禅心坚定不好女色
  20. Riemannian geometry applied to BCI classification

热门文章

  1. ibm笔记本修复计算机开机按,IBM X280开机报错,按了Esc后正常解决方法
  2. 笔记本连接老显示器一直弹出‘输出信号超出范围“终于解决了--通过删除显示器的注册表
  3. 男人应该做的50件事(17-33)
  4. bug管理工具bugfree配置之一:php mysql apache 配置篇
  5. 本地浏览php网页的方法
  6. 【物联网服务NodeJs-5天学习】第四天存储篇④ ——基于MQTT的环境温度检测,升级存储为mysql
  7. 日常学习——记使用POI多线程写Excel数据(续)
  8. 我要搬家到51CTO了.
  9. VMware-workstation-full-10.0.2中英文切换
  10. Allegro-PCB自定义快捷键设置和常用键盘命令