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 服务器。
-
拥有目录的访问权限 数据目录.
-
创建备份副本时,对指定参数有写权限 目标目录 目录。
什么是数据目录?
数据目录 是数据库服务器所在的目录 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