选择正确的技术来备份数据库至关重要,因为您不想对重要的生产数据承担任何风险。此外,您希望选择一个支持您备份数据库的所有需求的备份工具。如果您想备份 MySQL 数据库,那么 Percona XtraBackup 可能是您的正确选择,因为它支持热备份和其他一些不错的备份功能。但是,如果您计划备份 MariaDB 数据库,XtraBackup 可能不是您的好选择,因为它与 MariaDB 10.3 或更高版本不兼容。在这种情况下,Mariabackup 是适合您的工具。
在本文中,我们将了解 Mariabackup 工具及其功能。我们还将完成它的安装过程和一些重要的命令来使用它进行备份和恢复。
Mariabackup 概述
MariaDB 从 10.1 版开始推出新功能,例如静态数据加密和 InnoDB 页面压缩。所有现有的备份工具都不支持这些功能,因此 MariaDB 提出了一个名为 Mariabackup 的新备份解决方案。
Mariabackup 是 MariaDB 支持的开源工具,可使用 InnoDB 或 MyISAM 引擎备份 MariaDB/MySQL 数据库。Mariabackup 是从 Percona XtraBackup 2.3.8 版分叉出来的。因此,它支持Xtrabackup 的所有功能,例如热备份。最重要的是,它还支持 MariaDB 独有的所有新功能。Mariabackup 还带有 Microsoft Windows 支持,而 Percona Xtrabackup 则没有。
安装 Mariabackup
Linux系统
MariaDB Corp. 提供了一个 shell 脚本来在您的系统中设置 MariaDB 包存储库。这将用于使用包管理器安装 Mariabackup。运行以下命令以添加 MariaDB 包存储库。
1
|
$ curl -sS https://downloads .mariadb.com /MariaDB/mariadb_repo_setup | sudo bash
|
完成后,您可以根据您的 Linux 系统使用以下任一命令来安装 Mariabackup 工具。
1
|
$ sudo yum install MariaDB-backup
|
或者
1
|
$ sudo apt-get install mariadb-backup
|
视窗系统
Mariabackup 实用程序已包含在 MariaDB for Windows 的 MSI 和 ZIP 包中。在安装 MariaDB 时,您可以选择备份实用程序进行安装。
无论如何,它提供了两种备份数据库的方法:完整备份和增量备份。完整备份将创建整个数据库的备份,而增量备份将通过更新以前的备份来创建仅更改数据的备份。
在我们继续之前,我们需要创建一个具有所有必需权限的备份用户。在您的 MariaDB shell 中运行以下命令。
1
|
MariaDB > GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backupuser' @ 'localhost' IDENTIFIED BY 'backup123';
|
我们将使用上述用户对 MariaDB 实例执行备份或恢复操作。
完整备份和还原
备份过程
要备份您的数据库,您需要运行带有 --backup 选项的 Mariabackup 以指示它备份,并使用 --target-dir 选项指定备份目录的位置。在运行命令之前确保提供的目标目录是空的,并且它有足够的空间来存储备份。
1
|
$ mariabackup --backup --target-dir = /tmp/mariadb/backup/ --user=backupuser --password=backup123
|
如果要创建数据库的压缩备份,可以使用 --stream 选项,如下所示。
1
|
$ mariabackup --user=backupuser --password=backup123 --backup --stream=xbstream | gzip > backup_22_03_2020.gz
|
您可以使用以下命令解压文件。
1
|
$ gunzip -c backup_22_03_2020.gz | mbstream -x
|
如果需要,您可以通过终止上述命令来取消备份过程。它不会影响您的实际数据库。
准备过程
创建数据库备份时,它不会保持一致,因为在备份过程中的不同时间复制所有数据文件。因此,您不能直接还原数据库。您必须准备数据文件以使其一致。
1
|
$ mariabackup --prepare --target-dir =/tmp/mariadb/backup/
|
现在我们准备恢复我们的数据库备份。
修复过程
要从完整备份恢复我们的数据库,您可以使用 --copy-back 或 --move-back 选项之一。第一个将保留原始文件,而后一个选项将备份文件移动到数据库的数据目录。在运行以下命令之前,请确保 MariaDB 进程已停止且数据目录为空。
1
|
$ mariabackup --copy-back --target-dir =/tmp/mariadb/backup/
|
数据恢复完成后,数据目录及其文件将归“backupuser”所有,因为我们在备份过程中使用了该用户。您需要将其与组一起更改回 mysql 用户。
1
|
$ chown -R mysql:mysql /var/lib/mysql/
|
现在,您可以使用新数据启动 MariaDB 服务器。
增量备份和恢复
备份过程
在进行增量备份之前,您必须创建数据库的完整备份,因为您只能在完整备份之上创建增量备份。因此,首先,使用 --backup 选项运行 mariabackup 命令,如下所示:
1
|
$ mariabackup --backup --target-dir = /tmp/mariadb/backup/ --user=backupuser --password=backup123
|
现在,您可以根据需要多次在此备份之上进行增量备份。
1
|
$ mariabackup --backup --target-dir = /tmp/mariadb/backup/increment/ --incremental-basedir= /tmp/mariadb/backup/ --user=backupuser --password=backup123
|
此处,--target-dir 选项提供所有增量更改的位置,--incremental-basedir 提供数据库完整备份的位置。运行此命令之前,目标目录应为空或不存在。
当您想使用先前的更改再次进行增量备份时,可以按如下方式运行备份命令:
1
|
$ mariabackup --backup --target-dir = /tmp/mariadb/backup/incrementNew/ --incremental-basedir= /tmp/mariadb/backup/increment/ --user=backupuser --password=backup123
|
准备过程
在恢复当前数据库中的增量备份之前,您需要将增量备份应用到您在进行增量备份之前创建的完整备份。这可以通过使用 --prepare 和 --apply-log-only 选项来完成。运行以下命令为恢复过程准备完整备份。
1
|
$ mariabackup --prepare --apply-log-only --target-dir =/tmp/mariadb/backup/
|
现在通过对增量备份应用相同的选项来准备增量备份。
1
|
$ mariabackup --prepare --apply-log-only --target-dir = /tmp/mariadb/backup/ --incremental- dir =/tmp/mariadb/backup/increment/
|
现在您的完整备份与第一个增量备份同步。重复相同的步骤,将其与我们进行的第二个增量备份同步。
1
|
$ mariabackup --prepare --apply-log-only --target-dir = /tmp/mariadb/backup/ --incremental- dir =/tmp/mariadb/backup/incrementNew/
|
修复过程
一旦您的完整备份与所有增量更改同步,您就可以像恢复完整备份一样恢复它。数据恢复后,不要忘记更改数据目录的权限。
1
2
3
|
$ mariabackup --copy-back --target-dir =/tmp/mariadb/backup/
$ chown -R mysql:mysql /var/lib/mysql/
|
就是这样!这些是您可以使用 Mariabackup 工具进行完整或增量备份的基本命令。总的来说,它是一个很好的开源工具,由 MariaDB 提供,支持 MariaDB 的一些原生特性。因此,如果您想对 MariaDB 服务器进行备份,推荐的选择是 Mariabackup。