【MySQL备份】Percona XtraBackup基础篇

目录

[1.关于Percona XtraBackup](#1.关于Percona XtraBackup)

[2. Percona XtraBackup有哪些特点?](#2. Percona XtraBackup有哪些特点?)

[3.安装Percona XtraBackup](#3.安装Percona XtraBackup)

3.1.环境信息

3.2.安装步骤

[4. xtrabackup内部流程图](#4. xtrabackup内部流程图)

[5.Percona XtraBackup基础语法](#5.Percona XtraBackup基础语法)

5.1.全量备份

5.2.增量备份

5.2.1.基于全量备份的增量备份

5.2.2.基于前一个增量备份的增量备份

5.2.3.备份准备

5.3.数据恢复

6.总结


1.关于Percona XtraBackup

Percona XtraBackup是世界上唯一的开源、免费的MySQL热备份 为InnoDB和XtraDB执行非阻塞备份的软件 数据库。使用Percona XtraBackup,您可以获得以下好处:

  • 快速可靠地完成备份

  • 备份期间不中断的事务处理

  • 节省磁盘空间和网络带宽

  • 自动备份验证

  • 更快的恢复时间导致更高的延迟

2. Percona XtraBackup有哪些特点?

以下是Percona XtraBackup功能的简短列表。

  • 创建热InnoDB备份而无需暂停数据库

  • 对MySQL进行增量备份

  • 将压缩的MySQL备份流式传输到另一台服务器

  • 在线在MySQL服务器之间移动表

  • 轻松创建新的MySQL复制副本

  • 备份MySQL而不增加服务器负载

  • 备份锁是Percona Server 5.6+中可用的FLUSH TABLES WITH READ LOCK的轻量级替代方案。Percona XtraBackup使用它们自动复制非InnoDB数据,以避免阻塞修改InnoDB表的DML查询。

  • Percona XtraBackup根据每秒IO操作数执行限制。

  • Percona XtraBackup跳过辅助索引页,并在准备紧凑备份时重新创建它们。

  • Percona XtraBackup甚至可以从完整备份中导出单个表,无论InnoDB版本如何。

  • 使用Percona XtraBackup导出的表可以导入Percona Server 5.1、5.5或5.6+或MySQL 5.6+。

3.安装Percona XtraBackup

3.1.环境信息

主机IP 操作系统 Mysql版本 XtraBackup版本
172.17.0.2 CentOS Stream release 9 8.0.37 8.0.35

3.2.安装步骤

Percona XtraBackup的安装方法有三中YUM仓库安装,RPM包安装,源码编译安装,下面介绍到的是YUM仓库安装

  1. root用户身份或使用sudo运行以下命令来安装Percona yum仓库:

    sudo yum install \
    https://repo.percona.com/yum/percona-release-latest.\
    noarch.rpm
    
  2. 启用存储库:

    sudo percona-release enable-only tools release
    

    如果Percona XtraBackup预期与 上游MySQL服务器,只需要开启`tools仓库:

    sudo percona-release enable-only tools
    
  3. 通过运行以下命令安装Percona XtraBackup:

    sudo yum install percona-xtrabackup-80
    

    警告:

    在CentOS 6上安装Percona XtraBackup之前,请确保安装了libev软件包。对于此操作系统,可以从EPEL存储库中获得libev包。

  4. 要对使用LZ4ZSTD压缩算法进行的备份进行重新编译,请安装相应的软件包:

    sudo yum install zstd
    

4. xtrabackup内部流程图

5.Percona XtraBackup基础语法

Percona XtraBackup 提供了一系列丰富的命令行选项来执行MySQL和Percona Server的热备份操作。以下是一些基本和常用的语法示例,涵盖了全量备份、增量备份、备份准备和恢复等操作:

5.1.全量备份

xtrabackup --backup --user=root --password=<your_password> \ 2 --host=<hostname_or_ip> --port=<port_number> \ 3 --target-dir=<backup_directory>
  • --backup 表示执行备份操作。
  • --user--password 分别指定MySQL的用户名和密码。
  • --host--port 指定MySQL服务器的地址和端口。
  • --target-dir 指定备份文件存放的目录。

5.2.增量备份

5.2.1.基于全量备份的增量备份

xtrabackup --backup --incremental-basedir=<full_backup_directory> \ 2 --target-dir=<incremental_backup_directory> \ 3 --user=root --password=<your_password> \ 4 --host=<hostname_or_ip> --port=<port_number>
  • --incremental-basedir 指定增量备份基于的全量备份目录。

5.2.2.基于前一个增量备份的增量备份

xtrabackup --backup --incremental-basedir=<previous_incremental_backup_directory> \ 2 --target-dir=<new_incremental_backup_directory> \ 3 --user=root --password=<your_password> \ 4 --host=<hostname_or_ip> --port=<port_number>

5.2.3.备份准备

对于全量备份,执行以下命令准备数据以便恢复:

xtrabackup --prepare --apply-log-only --target-dir=<backup_directory>

对于增量备份链,需要先对全量备份进行准备,然后依次对每个增量备份执行准备操作,最终对整个链进行最终的准备:

xtrabackup --prepare --apply-log-only --target-dir=<prepared_full_backup_directory> \ 2 --incremental-dir=<incremental_backup_directory>

5.3.数据恢复

将准备好的备份数据恢复到MySQL数据目录:

# 先停止MySQL服务
sudo systemctl stop mysql

# 将备份数据复制到MySQL数据目录(示例使用全量备份)
rsync -avP <prepared_backup_directory>/ /var/lib/mysql/

# 调整文件权限和属主
chown -R mysql:mysql /var/lib/mysql/

# 启动MySQL服务
sudo systemctl start mysql

6.总结

本篇文章介绍了Percona XtraBackup工具的安装、使用以及原理,后面会发布Percona XtraBackup的实战篇

相关推荐
韩楚风1 分钟前
【手写数据库内核组件】0201 哈希表hashtable的实战演练,多种非加密算法,hash桶的冲突处理,查找插入删除操作的代码实现
c语言·数据结构·数据库·哈希算法·散列表
☀️12 分钟前
Redis 的过期策略
数据库·redis·缓存
续亮~14 分钟前
9、Redis 高级数据结构 HyperLogLog 和事务
数据结构·数据库·redis
huaqianzkh17 分钟前
传统数据处理系统存在的问题
网络·数据库·系统架构
Al_WAYS77820 分钟前
redis 一 认识redis
数据库·redis·运维开发
彧A24 分钟前
数据库的学习(4)
java·开发语言·数据库
得不到的更加爱43 分钟前
redis并发、穿透、雪崩
数据库·redis·缓存
年轻的高血压患者1 小时前
基于Java的水果商品销售网站
java·sql·mysql·servlet·架构·eclipse·idea
jcLee951 小时前
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
数据库·nginx·http