使用 XtraBackup 实用程序创建 MySQL 备份

Percona XtraBackup 是一个用于热数据库备份的实用程序 MySQL的.

创建数据备份时,不会锁定任何表,您的系统将继续运行,不受任何限制。

超备份2.4 可以创建表的备份副本 InnoDB的数据库 и 我的ISAM 在服务器上 MySQL 5.11、5.5、5.6 和 5.7,以及在服务器上 佩尔科纳 为 MySQL的 с 数据库.

跟...共事 MySQL 8.x 应该使用版本 XtraBackup 8.x。 本文只讲 超备份 2.4。

主要优点 超级备份 该实用程序既适合创建高负载服务器的备份,又适合事务数量较少的系统。

如果 MySQL 数据库的总大小很大(数十 GB),则标准实用程序 转储 不允许您快速创建备份副本,并且恢复转储将花费大量时间。

安装

安装 超级备份 从存储库 易于 佩尔科纳。

依次运行以下命令:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2。 安装完成后,运行命令 xtrabackup -v。 因此,确保该实用程序在服务器上正常运行非常重要。 结果,屏幕上会显示类似这样的内容:

xtrabackup:识别的服务器参数: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup 版本 2.4.20 基于 MySQL 服务器 5.7.26 Linux (x8664)(修订版 ID:c8b4056)

使用 XtraBackup 实用程序创建 MySQL 备份

访问权、权限和特权 

XtraBackup 应该能够:

  • 连接到您的 MySQL 服务器。

  • 拥有目录的访问权限 数据目录

  • 创建备份副本时,对指定参数有写权限 目标目录 目录。

什么是数据目录?

数据目录 是数据库服务器所在的目录 MySQL的 存储数据。 所有数据库、所有表都在那里。 在大多数 Linux 发行版上,默认目录是 /var/lib/mysql.

target-dir 目录是什么?

目标目录 - 这是保存备份的目录。

数据库用户需要对要备份的表和数据库具有以下访问权限:

  • 重新加载并锁定表

  • 复制客户端

  • 创建表空间

  • PROCESS

  • CREATE

  • 插入

  • 选择

布局 

布局 超级备份 使用与标准 MySQL 选项行为相同的选项完成。

这是什么意思呢?

配置参数可以在命令行或 DBMS 配置文件中指定,例如 /etc/my.cnf.

XtraBackup 实用程序在启动后读取分区 的[mysqld] и [额外备份] 来自 MySQL 配置文件。 这样做是为了使实用程序可以使用 DBMS 的设置,而无需在每次备份期间手动指定参数。

例如,值 数据目录 和一些参数 InnoDB的 我们从您的 DBMS 的配置中获取 XtraBackup。

如果要使 XtraBackup 正常工作,您想要覆盖该部分中的参数 的[mysqld],然后只需在配置文件的 部分中指定它们 [额外备份]。 由于稍后会阅读它们,因此它们的优先级会更高。

您不必添加任何参数 我的.cnf。 所有必需的参数都可以在命令行上指定。 通常是唯一可以方便地放置在该部分中的东西 [额外备份] 您的 我的.cnf 是一个参数 目标目录,默认情况下指定放置备份的目录。 但这是可选的。

指定带有备份副本的目录路径的示例 我的.cnf:

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

备份脚本

您可以使用以下脚本来创建备份:

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

脚本执行期间会发生什么?

首先,我们清除(删除)保存备份副本的目录:

rm -rf /mysql/backup.

然后,使用该实用程序 超级备份 创建备份副本并将其保存在 /mysql/备份/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

之前我们在MySQL中创建了一个用户 xtrabackup 具有所需的权限。 使用参数 target-dir 我们指定应保存备份的目录。

重要的一点!

注意脚本行:

xtrabackup --prepare --target-dir=/mysql/backup

目录数据 /mysql/备份 在煮熟之前不一致。 

事实上,复制文件时可能会发生更改。 手术 xtrabackup --prepare --target-dir=/mysql/backup 使备份数据随着时间的推移完全一致。

您可以在任何机器上执行数据准备操作。 无需在源 DBMS 所在的服务器上执行此操作。 您可以将备份复制到目标服务器并在那里准备。

我们做的最后一件事是创建一个存档,在其中放置备份:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

恢复备份 

在将备份恢复到目标服务器之前,数据必须经过准备阶段。 请参阅上文了解如何执行此操作。

数据恢复过程非常简单。 您需要从存档中提取备份并替换其中的数据 数据目录.

如何替换datadir中的数据?

让我们考虑两种选择。

选项1

使用该实用程序 超级备份。 您需要指定一个选项 --复制回

下面的命令将备份传输到 数据目录 目标服务器:

xtrabackup --copy-back --target-dir=/mysql/backup

选项2

您可以以不同的方式进行操作,无需实用程序 超级备份.

您所需要做的就是将备份复制到 数据目录。 你可以这样做 cp или rsync的.

重要的是要了解恢复备份的过程归结为仅替换目录的内容 数据目录.

在开始在目标服务器上恢复备份之前,您必须:

  • 停止 MySQL 服务器。

  • 空文件夹 数据目录 或将其内容移动到另一个位置。 目录 数据目录 必须为空。

完成数据传输后 数据目录 MySQL服务器可以启动。

使用的材料

官方文档 佩尔科纳 超级备份.

来源: habr.com

添加评论