IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Percona XtraBackup工具的使用 -> 正文阅读

[系统运维]Percona XtraBackup工具的使用

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

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 = incremental
     from_lsn = 11918093
     to_lsn = 11918109
     last_lsn = 11918125
     compact = 0
     recover_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-00163e109cdd
     name = 
     tool_name = xtrabackup
     tool_command = --user=DVADER --password=14MY0URF4TH3R --backup --target-dir=/data/backups/inc2 --incremental-lsn=11918125 --datadir=/usr/local/mysql/data/ 
     tool_version = 2.4.11
     ibbackup_version = 2.4.11
     server_version = 5.7.25-28-log
     start_time = 2022-05-06 20:17:29
     end_time = 2022-05-06 20:17:31
     lock_time = 0
     binlog_pos = filename 'mysql-bin.000003', position '1111', GTID of the last change '9886f770-b231-11ec-ba3c-00163e109cdd:1-20'
     innodb_from_lsn = 11918125
     innodb_to_lsn = 11918125
     partial = N
     incremental = Y
     format = file
     compact = N
     compressed = N
     encrypted = 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

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:30:52  更:2022-05-08 08:31:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:58:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码