PerconaXtraBackup是基于MySQL的服务器的开源热备份实用程序,在备份期间不会锁定您的数据库。它可以备份MySQL5.1、5.5、5.6和5.7服务器上的InnoDB、XtraDB和MyISAM表中的数据,以及带有XtraDB的PerconaServer。
笔记
PerconaXtraBackup2.1中删除了对InnoDB5.1内置的支持
重要的
PerconaXtraBackup2.4不支持备份在MySQL8.0、PerconaServerforMySQL8.0或PerconaXtraDBCluster8.0中创建的数据库。
介绍
安装
在Docker中运行
先决条件
备份方案
用户说明书
高级功能
教程、食谱、操作方法
参考
PerconaXtraBackup是世界上唯一一款开源、免费的MySQL热备份软件,可为InnoDB和XtraDB数据库执行非阻塞备份。使用PerconaXtraBackup,您可以获得以下好处:
了解PerconaXtraBackup支持哪些版本的MySQL、MariaDB和PerconaServerforMySQL并支持使用任何类型的备份进行加密。
支持InnoDB、PerconaXtraDBCluster和HailDB存储引擎的非阻塞备份。此外,PerconaXtraBackup可以通过在备份结束时短暂暂停写入来备份以下存储引擎:MyISAM、Merge<.MRG>和Archive<.ARM>,包括分区表、触发器和数据库选项。InnoDB表在复制非InnoDB数据时仍处于锁定状态。启用PerconaXtraDBCluster更改页面跟踪的PerconaServer支持快速增量备份。
PerconaXtraBackup2.4仅支持PerconaXtraDBCluster5.7。PerconaXtraBackup2.4不支持MyRocks存储引擎或TokuDB存储引擎。PerconaXtraBackup与MariaDB10.3及更高版本不兼容。
这是PerconaXtraBackup功能的简短列表。有关更多信息,请参阅文档。
PerconaXtraBackup基于InnoDB的崩溃恢复功能。它会复制您的InnoDB数据文件,从而导致数据内部不一致;但随后它会对文件执行崩溃恢复,以使它们再次成为一致的、可用的数据库。
这是因为InnoDB维护了一个重做日志,也称为事务日志。这包含对InnoDB数据的每次更改的记录。当InnoDB启动时,它会检查数据文件和事务日志,并执行两个步骤。它将提交的事务日志条目应用于数据文件,并对任何修改数据但未提交的事务执行撤消操作。
之后,xtrabackup将用于LOCKBINLOGFORBACKUP阻止所有可能更改二进制日志位置或Exec_Master_Log_Pos(Exec_Gtid_Set即与复制副本上的当前SQL线程状态相对应的源二进制日志坐标)的操作,如SHOWMASTER/SLAVESTATUS.xtrabackup然后将完成复制REDO日志文件并获取二进制日志坐标。完成后,xtrabackup将解锁二进制日志和表。
最后,二进制日志位置将被打印到STDERRxtrabackup退出,如果一切正常则返回0。
请注意,STDERRxtrabackup没有写入任何文件中。您必须将其重定向到一个文件,例如xtrabackupOPTIONS2>backupout.log.
在准备阶段,PerconaXtraBackup使用复制的事务日志文件对复制的数据文件执行崩溃恢复。完成此操作后,数据库即可恢复和使用。
xtrabackup和innobackupex工具都提供了许多前面的解释中没有提到的特性。手册中更详细地解释了每个工具的功能。简而言之,这些工具允许您使用复制数据文件、复制日志文件和将日志应用到数据的各种组合来执行流式备份和增量备份等操作。
要使用xtrabackup恢复备份,您可以使用xtrabackup--copy-back或xtrabackup--move-back选项。
xtrabackup将从my.cnf变量datadir,innodb_data_home_dir,中读取innodb_data_file_path,innodb_log_group_home_dir并检查目录是否存在。
它将首先复制MyISAM表、索引等(.frm、.MRG、.MYD、.MYI、.TRG、.TRN、.ARM、.ARZ、.CSM、和.opt文件),然后.CSV是InnoDB表和索引,最后是日志文件。它会在复制文件时保留文件的属性,您可能必须在启动数据库服务器之前将文件的所有权更改为,因为它们将归创建备份的用户所有。parmysql
或者,该xtrabackup--move-back选项可用于恢复备份。此选项类似于xtrabackup--copy-back唯一的区别,而不是复制文件,而是将它们移动到目标位置。由于此选项会删除备份文件,因此请谨慎使用。当没有足够的可用磁盘空间来保存数据文件及其备份副本时,它很有用。
percona-xtrabackup-dbg-24包中包含二进制文件的调试符号percona-xtrabackup-24。
该percona-xtrabackup-test-24软件包包含PerconaXtraBackup的测试套件。
该percona-xtrabackup软件包包含旧版本的PerconaXtraBackup。
PerconaXtraBackup与许多其他Percona产品一样,是使用percona-release包配置工具安装的。
如果PerconaXtraBackup打算与上游MySQL服务器结合使用,您只需启用tools存储库:percona-releaseenable-onlytools.
7.$sudoaptinstallpercona-xtrabackup-249.$sudoaptinstallqpressApt-Pinning软件包在某些情况下,您可能需要“固定”选定的包以避免从分发存储库升级。您需要创建一个新文件/etc/apt/preferences.d/00percona.pref并在其中添加以下行:
$sudodpkg-ipercona-xtrabackup-24_2.4.20-1.stretch_amd64.deb笔记
像这样手动安装软件包,您必须解决所有依赖项并自己安装缺少的软件包。
Debian10中的默认curl版本7.64.0在尝试重用已关闭的连接时存在已知问题。此问题直接影响xbcloud并且用户可能会看到间歇性备份失败。
按照以下步骤将curl升级到版本7.74.0:
percona-xtrabackup-24-debuginfo包中包含二进制文件的调试符号percona-xtrabackup-24。
root您可以通过以用户身份或使用以下命令运行以下命令来安装percona-release的yum存储库sudo:
RHEL/Centos5不支持直接从远程位置安装软件包,因此您需要先下载软件包并使用rpm手动安装:
yumlist|greppercona您应该会看到类似于以下内容的输出:
...percona-xtrabackup-20.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-20-debuginfo.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-20-test.x86_642.0.8-587.rhel5percona-release-x86_64percona-xtrabackup-21.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-21-debuginfo.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-22.x86_642.2.13-1.el5percona-release-x86_64percona-xtrabackup-22-debuginfo.x86_642.2.13-1.el5percona-release-x86_64percona-xtrabackup-debuginfo.x86_642.3.5-1.el5percona-release-x86_64percona-xtrabackup-test.x86_642.3.5-1.el5percona-release-x86_64percona-xtrabackup-test-21.x86_642.1.9-746.rhel5percona-release-x86_64percona-xtrabackup-test-22.x86_642.2.13-1.el5percona-release-x86_64...如果PerconaXtraBackup打算与上游MySQL服务器结合使用,您只需要启用tools存储库:percona-releaseenable-onlytools.
警告
Percona提供来自我们测试存储库的预发布版本。要订阅测试存储库,您需要在/etc/yum.repos.d/percona-release.repo中启用测试存储库。为此,请同时设置和percona-testing-$basearch(请注意,此文件中有3个部分:发布、测试和实验-在这种情况下,需要更新的是第二个部分)。注意:如果尚未安装,您需要先安装Percona存储库(参考上文)。percona-testing-noarchenabled=1
2.$yuminstallqpress也可以看看
$yumlocalinstallpercona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm笔记
像这样手动安装包时,您需要确保解决所有依赖项并自己安装缺少的包。
要完全卸载PerconaXtraBackup,您需要删除所有已安装的软件包。
移除包裹
yumremovepercona-xtrabackup从二进制压缩包安装PerconaXtraBackupPercona提供PerconaXtraBackup的二进制压缩包。二进制tarball包含预编译的可执行文件、库和其他依赖项,并且是压缩tar档案。将二进制tarball解压缩到任何路径。
下载二进制tarball后,将tarball解压缩到您选择的文件位置。
类型
姓名
描述
满的
percona-xtrabackup–Linux.x86_64.glibc2.12.tar.gz
包含二进制文件、库、测试文件和调试符号
最小
percona-xtrabackup–Linux.x86_64.glibc2.12-minimal.tar.gz
包含二进制文件和库,但不包含测试文件或调试符号
获取并提取正确的二进制tarball。例如,以下下载2.4.24版的完整tarball:
为了从源代码构建PerconaXtraBackupv8.0,您需要使用cmake版本3。在您的发行版中,它可以作为单独的包cmake3或cmake.要检查安装了哪个版本,请运行cmake--version,如果确实报告版本3,请cmake3为您的系统安装。
也可以看看
$sudoaptinstallbuild-essentialflexbisonautomakeautoconf\libtoolcmakelibaio-devmysql-clientlibncurses-devzlib1g-dev\libgcrypt11-devlibev-devlibcurl4-gnutls-devvim-common要安装手册页,请安装python3-sphinx软件包:
$sudoyuminstallcmakeopenssl-devellibaiolibaio-develautomakeautoconf\bisonlibtoolncurses-devellibgcrypt-devellibev-devellibcurl-develzlib-devel\vim-common要安装手册页,请安装python3-sphinx软件包:
$sudoyuminstallpython3-sphinx第2步:生成构建管道在这一步,您已经cmake运行了CMakeList.txt文件中的命令来生成构建管道,即将用于编译源代码的本地构建环境)。
2.$cdpercona-xtrabackup4.$mkdirbuild5.$cdbuild笔记
您可以使用手册页构建PerconaXtraBackup,但这需要python-sphinx在每个发行版的主存储库中都没有可用的包。如果您安装了该python-sphinx软件包,则需要-DWITH_MAN_PAGES=OFF从先前的命令中删除该软件包。
$cmake-DWITH_BOOST=PATH-TO-BOOST-LIBRARY-DDOWNLOAD_BOOST=ON\-DBUILD_CONFIG=xtrabackup_release-DWITH_MAN_PAGES=OFF-B..有关参数的更多信息-DWITH_BOOST
对于-DWITH_BOOST参数,指定将boost库下载到的目录的名称。该目录将在您的当前目录中自动创建。
-B(--build)
PerconaXtraBackup配置为禁止make在存储源的同一目录中生成构建管道。该-B参数是指包含源代码的目录。在此示例中,我们使用父目录的相对路径(..)。
CMakeLists.txt:367(MESSAGE)处的CMake错误:请不要在源代码中构建。强烈建议使用外源构建:您可以为同一个源构建多个构建,并且有一种简单的清理方法,只需删除构建目录(请注意,'makeclean'或'makedistclean'不起作用)
您可以通过使用-DFORCE_INSOURCE_BUILD=1调用cmake来强制进行源内构建
-DWITH_MAN_PAGES
要构建PerconaXtraBackup手册页,ON请在命令行中使用或删除此参数(ON默认情况下)。
要安装手册页,请安装python3-sphinx软件包:
要在构建目录中编译源代码,请使用make命令。
您打算编译PerconaXtraBackup8.0的计算机必须至少有2G的可用RAM。
3.$make第3步:在目标系统上安装以下命令将所有PerconaXtraBackup二进制文件xtrabackup和测试安装到目标系统上的默认位置:/usr/local/xtrabackup.
运行makeinstall以将PerconaXtraBackup安装到默认位置。
$sudomakeinstall安装到非默认位置您可以使用DESTDIR参数withmakeinstall将PerconaXtraBackup安装到另一个位置。确保有效用户能够写入您选择的目的地。
$sudomakeDESTDIR=
默认情况下,该参数设置为STANDALONE,表示安装目录为/usr/local/xtrabackup。
在您的系统上安装PerconaXtraBackup后,您可以使用以下xtrabackup命令的完整路径运行它:
$/usr/local/xtrabackup/bin/xtrabackup如果您想直接在命令行上使用该命令,请更新您的PATH环境变量。
$#Setting$PATHonthecommandline$PATH=$PATH:/usr/local/xtrabackup/bin/xtrabackup$#Runxtrabackupdirectly$xtrabackup或者,您可以考虑放置一个软链接(使用)到您的环境变量ln-s中列出的位置之一。PATH
manln
要使用来查看文档man,请更新MANPATH变量。
Docker允许您在称为容器的轻量级单元中运行应用程序。
您可以在Docker容器中运行PerconaXtraBackup,而无需安装产品。容器中提供了所有必需的库。作为一个轻量级的执行环境,Docker容器支持创建每个程序在单独的容器中运行的配置。您可以在一个容器中运行PerconaServerforMySQL,而在另一个容器中运行PerconaXtraBackup。Docker镜像提供了一系列选项。
基于Docker镜像创建Docker容器。PerconaXtraBackup的Docker映像在DockerHub上公开托管percona/percona-xtrabackup。
$sudodockercreate...percona/percona-xtrabackup--namextrabackup...本节范围本节演示如何在另一个Docker容器中运行的PerconaServerforMySQL上备份数据。
您的操作系统可能已经为docker提供了一个包。但是,您的操作系统提供的Docker版本可能已经过时。
使用Docker站点提供的适用于您的操作系统的安装说明来设置最新版本的docker。
PerconaXtraBackup与数据库服务器结合使用。在为PerconaXtraBackup运行Docker容器时,您可以为安装在主机上或在单独的Docker容器中运行的数据库服务器进行备份。
要在主机或Docker容器中设置数据库服务器,请遵循您打算与PerconaXtraBackup一起使用的受支持产品的文档。
$sudodockerrun-d--namepercona-server-mysql-5.7\-eMYSQL_ROOT_PASSWORD=rootpercona/percona-server:5.7PerconaServerforMySQL运行后,立即向其中添加一些数据。现在,您可以使用PerconaXtraBackup进行备份了。
您可以使用dockercreate或dockerrun命令基于PerconaXtraBackup映像创建Docker容器。dockercreate创建一个Docker容器并使其可供以后启动。
Docker从DockerHub下载PerconaXtraBackup映像。如果不是第一次使用所选镜像,Docker会使用本地可用的镜像。
$sudodockercreate--namepercona-xtrabackup-2.4--volumes-frompercona-server-mysql-5.7\percona/percona-xtrabackup:2.4\xtrabackup--backup--datadir=/var/lib/mysql/--target-dir=/backup\--user=root--password=mysql--name为您的新Docker容器起一个有意义的名称,以便您可以轻松地在其他容器中找到它。
--volumes-from引用percona-server-mysql表示您打算使用与percona-server-mysql容器相同的数据。
使用与创建容器时完全相同的参数运行容器:
$sudodockerstart-aipercona-xtrabackup-2.4此命令启动percona-xtrabackup容器,附加到其输入/输出流,并打开一个交互式shell。
dockerrun是一个快捷命令,它创建一个Docker容器,然后立即运行它。
$sudodockerrun--namepercona-xtrabackup-2.4--volumes-frompercona-server-mysql-5.7\percona/percona-xtrabackup:2.4xtrabackup--backup--data-dir=/var/lib/mysql--target-dir=/backup--user=root--password=mysql也可以看看
PerconaXtraBackup需要能够连接到数据库服务器并在创建备份时、在某些情况下准备时以及在恢复时对服务器和datadir执行操作。为此,必须满足其执行的特权和权限要求。
权限是指允许系统用户在数据库服务器中进行的操作。它们是在数据库服务器上设置的,仅适用于数据库服务器中的用户。
权限是允许用户在系统上执行操作的权限,例如在某个目录上读取、写入或执行或启动/停止系统服务。它们是在系统级别设置的,仅适用于系统用户。
无论使用xtrabackup还是innobackupex,都涉及到两个参与者:调用程序的用户-系统用户-以及在数据库服务器中执行操作的用户-数据库用户。请注意,这些是不同位置的不同用户,即使他们可能具有相同的用户名。
用于连接服务器的数据库用户及其密码由xtrabackup--userandxtrabackup–password选项指定:
$xtrabackup--user=DVADER--password=14MY0URF4TH3R--backup\--target-dir=/data/bkps/$innobackupex--user=DBUSER--password=SECRET/path/to/backup/dir/$innobackupex--user=LUKE--password=US3TH3F0RC3--stream=tar./|bzip2-如果您不使用该xtrabackup--user选项,PerconaXtraBackup将假定数据库用户的名称是执行它的系统用户。
根据您的系统,您可能需要指定以下一个或多个选项来连接到服务器:
选项
-港口
使用TCP/IP连接到数据库服务器时使用的端口。
-插座
连接到本地数据库时使用的套接字。
-主持人
使用TCP/IP连接到数据库服务器时使用的主机。
这些选项被传递给mysql子进程而不做任何更改,请参阅mysql--help详细信息。
在多个服务器实例的情况下,必须指定正确的连接参数(端口、套接字、主机),以便xtrabackup与正确的服务器通信。
一旦连接到服务器,为了执行备份,您将需要服务器数据目录中文件系统级别READ的EXECUTE权限。
数据库用户需要对要备份的表/数据库具有以下权限:
创建具有完整备份所需的最低权限的数据库用户的SQL示例如下:
mysql>CREATEUSER'bkpuser'@'localhost'IDENTIFIEDBY's3cret';mysql>GRANTRELOAD,LOCKTABLES,PROCESS,REPLICATIONCLIENTON*.*TO'bkpuser'@'localhost';mysql>FLUSHPRIVILEGES;配置xtrabackup所有xtrabackup配置都是通过选项完成的,其行为与标准MySQL程序选项完全一样:它们可以在命令行中指定,也可以通过/etc/my.cnf.
xtrabackup二进制文件按顺序从任何配置文件中读取和[mysqld]部分。[xtrabackup]这样它就可以从您现有的MySQL安装中读取其选项,例如datadir或一些InnoDB选项。如果要覆盖这些,只需在[xtrabackup]部分中指定它们,因为稍后阅读,它将优先。
如果您不想,则无需在其中添加任何配置my.cnf。您可以简单地在命令行上指定选项。通常,您可能会觉得方便放置在文件[xtrabackup]部分中的唯一内容是选择默认放置备份的目录,例如:my.cnftarget_dir
xtrabackup二进制文件不接受与服务器二进制my.cnf文件完全相同的语法。mysqld由于历史原因,mysqld服务器二进制文件接受带有xtrabackup不理解的--set-variable=
xtrabackup工具在大多数系统上不需要特殊配置。但是,调用xtrabackup--target-dir时所在的存储必须正常运行fsync()。特别是,我们注意到未使用该sync选项安装的NFS卷可能不会真正同步数据。因此,如果您备份到使用异步选项挂载的NFS卷,然后尝试从也挂载该卷的其他服务器准备备份,则数据可能看起来已损坏。您可以使用syncmount选项来避免这个问题。
要创建备份,xtrabackup请使用xtrabackup--backupoption.您还需要指定一个xtrabackup--target-dir选项,即存储备份的位置,如果InnoDB数据或日志文件未存储在同一目录中,您可能还需要指定它们的位置。如果目标目录不存在,xtrabackup会创建它。如果该目录确实存在并且为空,则xtrabackup将成功。xtrabackup不会覆盖现有文件,它将因操作系统错误17失败,fileexists.
要启动备份过程,请运行:
$xtrabackup--backup--target-dir=/data/backups/这会将备份存储在/data/backups/.如果指定相对路径,则目标目录将相对于当前目录。
在备份过程中,您应该看到很多输出显示正在复制的数据文件,以及日志文件线程重复扫描日志文件并从中复制。这是一个示例,显示了日志线程在后台扫描日志,以及一个文件复制线程在ibdata1文件上工作:
16090610:19:17Finishedbackingupnon-InnoDBtablesandfiles16090610:19:17ExecutingFLUSHNO_WRITE_TO_BINLOGENGINELOGS...xtrabackup:Thelatestcheckpoint(forincremental):'62988944'xtrabackup:Stoppinglogcopyingthread..16090610:19:18>>logscannedupto(137343534)16090610:19:18ExecutingUNLOCKTABLES16090610:19:18Alltablesunlocked16090610:19:18Backupcreatedindirectory'/data/backups/'16090610:19:18[00]Writingbackup-my.cnf16090610:19:18[00]...done16090610:19:18[00]Writingxtrabackup_info16090610:19:18[00]...donextrabackup:Transactionlogoflsn(26970807)to(137343534)wascopied.16090610:19:18completedOK!您应该看到的最后一件事类似于以下内容,其中的值
xtrabackup:Transactionlogoflsn(
日志复制线程每秒检查一次事务日志以查看是否有任何新的日志记录需要被复制,但是日志复制线程可能无法跟上去往的写入量事务日志,并且当日志记录在被读取之前被覆盖时会发生错误。
备份完成后,目标目录将包含如下文件,假设您有一个InnoDB表test.tbl1并且您使用的是MySQL的innodb_file_per_table选项:
下一步是让您的备份准备好恢复。
您可以在任何机器上运行准备操作;它不需要位于原始服务器或您要还原到的服务器上。您可以将备份复制到实用程序服务器并在那里进行准备。
您可以使用较新的PerconaXtraBackup版本来准备使用旧版本创建的备份,反之则不行。应使用支持该服务器版本的最新PerconaXtraBackup版本在不受支持的服务器版本上准备备份。例如,如果有一个使用PerconaXtraBackup1.6创建的MySQL5.0备份,则不支持使用PerconaXtraBackup2.3准备备份,因为在PerconaXtraBackup2.1中删除了对MySQL5.0的支持。相反,应该使用2.0系列中的最新版本。
在prepare操作过程中,xtrabackup会启动一种嵌入其中的修改过的InnoDB(它所链接的库)。这些修改对于禁用InnoDB的标准安全检查是必要的,例如抱怨日志文件的大小不合适,这不适合使用备份。这些修改仅适用于xtrabackup二进制文件;您不需要修改过的InnoDB即可使用xtrabackup进行备份。
准备步骤使用此嵌入式InnoDB使用复制的日志文件对复制的数据文件执行崩溃恢复。该prepare步骤使用起来非常简单:您只需运行xtrabackup--prepareoption并告诉它要准备哪个目录,例如,准备之前进行的备份运行:
$xtrabackup--prepare--target-dir=/data/backups/完成后,您应该会看到一条InnoDBshutdown带有如下消息的消息,其中的值再次LSN取决于您的系统:
InnoDB:Shutdowncompleted;logsequencenumber13734504616090611:21:01completedOK!以下所有准备都不会更改已经准备好的数据文件,您会看到输出显示:
xtrabackup:Thistargetseemstobealreadyprepared.xtrabackup:notice:xtrabackup_logfilewasalreadyusedto'--prepare'.不建议在准备备份时中断xtrabackup进程,因为这可能会导致数据文件损坏,备份将变得不可用。如果准备过程被中断,则无法保证备份的有效性。
如果您打算将备份作为进一步增量备份的基础,则应xtrabackup--apply-log-only在准备备份时使用该选项,否则您将无法对其应用增量备份。有关详细信息,请参阅有关准备[增量备份](incremental_backup.md#incremental-backup)的文档。
在恢复之前需要准备好备份。
$xtrabackup--copy-back--target-dir=/data/backups/如果您不想保存备份,可以使用xtrabackup--move-back将备份数据移动到datadir.
如果您不想使用上述任何选项,您可以额外使用rsync或cp恢复文件。
在datadir恢复备份之前必须为空。同样重要的是要注意MySQL服务器需要在执行还原之前关闭。您无法恢复到datadir正在运行的mysqld实例(导入部分备份时除外)。
rsync可用于恢复备份的命令示例如下所示:
$rsync-avrP/data/backup//var/lib/mysql/您应该检查恢复的文件是否具有正确的所有权和权限。
由于将保留文件的属性,因此在大多数情况下,您需要mysql在启动数据库服务器之前将文件的所有权更改为,因为它们将归创建备份的用户所有:
$chown-Rmysql:mysql/var/lib/mysql现在数据已恢复,您可以启动服务器。
启用后relay-log-info-repository=TABLE,从备份中恢复的实例在错误日志中有错误,如下所示:
2019-08-0912:40:0269297[ERROR]Failedtoopentherelaylog'/data/mysql-relay-bin.004349'(relay_log_pos5534092)要避免这些类型的问题,relay_log_recovery请RESETSLAVE在CHANGEMASTERTO.
中继日志信息已备份,但已创建新的中继日志,这会在还原期间造成不匹配。
xtrabackup工具和innobackupex工具都支持增量备份。增量备份仅备份自上次备份以来已更改的数据。
您可以在每个完整备份之间进行多个增量备份。例如,您可以每周进行一次完整备份,每天进行一次增量备份,或者每天进行一次完整备份,每小时进行一次增量备份。
增量备份不会将数据文件与之前备份的数据文件进行比较。因此,在部分备份之后运行增量备份可能会导致数据不一致。
增量备份读取页面并将其LSN与上次备份的LSN.您必须拥有完整备份才能恢复增量更改。如果没有完整备份作为基础,增量备份将毫无用处。
如果您--incremental-lsn知道它的LSN.
$xtrabackup--backup--target-dir=/data/backups/base如果您查看xtrabackup_checkpoints文件,您应该会看到类似的内容,具体取决于您的LSNnuber:
backup_type=full-backupedfrom_lsn=0to_lsn=1626007last_lsn=1626007compact=0recover_binlog_info=1现在您有了完整备份,您可以根据它进行增量备份。使用以下命令:
$xtrabackup--backup--target-dir=/data/backups/inc1\--incremental-basedir=/data/backups/base/data/backups/inc1/目录现在应该包含delta文件,例如ibdata1.delta和test/table1.ibd.delta。这些代表了自LSN1626007.如果您检查xtrabackup_checkpoints此目录中的文件,您应该会看到与以下类似的内容:
backup_type=incrementalfrom_lsn=1626007to_lsn=4124244last_lsn=4124244compact=0recover_binlog_info=1from_lsn是备份的起始LSN,对于增量备份,它必须与to_lsn前一个/基本备份的(如果它是最后一个检查点)相同。
现在可以将此目录用作另一个增量备份的基础:
$xtrabackup--backup--target-dir=/data/backups/inc2\--incremental-basedir=/data/backups/inc1此文件夹还包含xtrabackup_checkpoints:
backup_type=incrementalfrom_lsn=4124244to_lsn=6938371last_lsn=7110572compact=0recover_binlog_info=1笔记
to_lsn在这种情况下,您可以看到(最后一个检查点LSN)和(最后一个复制的LSN)之间存在差异last_lsn,这意味着在备份过程中服务器上有一些流量。
增量备份的xtrabackup--prepare步骤与完整备份的步骤不同。在完整备份中,执行两种类型的操作来使数据库保持一致:已提交的事务从日志文件中针对数据文件重放,未提交的事务则回滚。在准备增量备份时,您必须跳过未提交事务的回滚,因为在备份时未提交的事务可能正在进行中,并且很可能会在下一次增量备份中提交。您应该使用xtrabackup--apply-log-only选项来防止回滚阶段。
如果您不使用该xtrabackup--apply-log-only选项来阻止回滚阶段,那么您的增量备份将毫无用处。事务回滚后,将无法应用进一步的增量备份。
从您创建的完整备份开始,您可以对其进行准备,然后对其应用增量差异。回想一下,您有以下备份:
/data/backups/base/data/backups/inc1/data/backups/inc2要准备基本备份,您需要像往常一样运行xtrabackup–prepare,但要防止回滚阶段:
$xtrabackup--prepare--apply-log-only--target-dir=/data/backups/base输出应以类似于以下内容的文本结尾:
InnoDB:Shutdowncompleted;logsequencenumber162600716101112:41:04completedOK!日志序列号应与to_lsn您之前看到的基本备份的序列号相匹配。
要将第一个增量备份应用于完整备份,请运行以下命令:
incrementalbackupfrom1626007isenabled.xtrabackup:cdto/data/backups/basextrabackup:Thistargetseemstobealreadypreparedwith--apply-log-only.xtrabackup:xtrabackup_logfiledetected:size=2097152,start_lsn=(4124244)...xtrabackup:pagesizefor/tmp/backups/inc1/ibdata1.deltais16384bytesApplying/tmp/backups/inc1/ibdata1.deltato./ibdata1......16101112:45:56completedOK!同样,LSN应该与您之前检查第一次增量备份时看到的一致。如果从中恢复文件/data/backups/base,您应该会看到数据库在第一次增量备份时的状态。
PerconaXtraBackup不支持使用同一个增量备份目录准备两份备份。不要多次xtrabackup--prepare使用同一个增量备份目录(的值--incremental-dir)运行。
准备第二次增量备份是一个类似的过程:将增量应用于(修改的)基础备份,您将及时将其数据前滚到第二次增量备份的点:
$xtrabackup--prepare--target-dir=/data/backups/base\--incremental-dir=/data/backups/inc2笔记
xtrabackup--apply-log-only合并除最后一个以外的所有增量时应使用。这就是前一行不包含xtrabackup--apply-log-only选项的原因。即使xtrabackup--apply-log-only在最后一步使用了,备份仍然是一致的,但在这种情况下,服务器将执行回滚阶段。
PerconaXtraBackup支持压缩备份:可以使用xbstream压缩或解压缩本地或流式备份。
为了进行压缩备份,您需要使用xtrabackup–compress选项:
$xtrabackup--backup--compress--target-dir=/data/compressed/使用可以通过包配置工具安装的xtrabackup--compress工具如下:qpresspercona-release
$sudopercona-releaseenabletools$sudoaptupdate$sudoaptinstallqpress笔记
启用存储库:percona-releaseenable-onlytoolsrelease。如果您打算将PerconaXtraBackup与上游MySQLServer结合使用,您只需要启用tools存储库:percona-releaseenable-onlytools.
如果要加快压缩速度,可以使用并行压缩,可以使用xtrabackup–compress-threads选项启用。以下示例将使用四个线程进行压缩:
$xtrabackup--backup--compress--compress-threads=4\--target-dir=/data/compressed/输出应如下所示
...17022313:00:38[01]Compressing./test/sbtest1.frmto/tmp/compressed/test/sbtest1.frm.qp17022313:00:38[01]...done17022313:00:38[01]Compressing./test/sbtest2.frmto/tmp/compressed/test/sbtest2.frm.qp17022313:00:38[01]...done...17022313:00:39[00]Compressingxtrabackup_info17022313:00:39[00]...donextrabackup:Transactionlogoflsn(9291934)to(9291934)wascopied.17022313:00:39completedOK!准备备份在准备备份之前,您必须解压缩所有文件。PerconaXtraBackup已实现xtrabackup--decompress可用于解压缩备份的选项。
$xtrabackup--decompress--target-dir=/data/compressed/笔记
xtrabackup--parallel可以与xtrabackup--decompress选项一起使用以同时解压缩多个文件。
PerconaXtraBackup不会自动删除压缩文件。为了清理备份目录,请使用该xtrabackup--remove-original选项。如果文件未删除,则不会将它们复制或移动到数据目录(如果使用xtrabackup--copy-back或xtrabackup--move-back使用)。
解压缩文件后,您可以使用以下xtrabackup--prepare选项准备备份:
$xtrabackup--prepare--target-dir=/data/compressed/检查确认消息:
InnoDB:Startingshutdown...InnoDB:Shutdowncompleted;logsequencenumber929384617022313:39:31completedOK!现在,其中的文件/data/compressed/已准备好供服务器使用。
xtrabackup有一个xtrabackup--copy-back选项,可以将备份恢复到服务器的datadir:
17022313:49:13completedOK!将数据复制回来后验证文件权限。您可能需要调整权限。例如,以下命令更改文件位置的所有者:
$chown-Rmysql:mysql/var/lib/mysql现在datadir包含恢复的数据。您已准备好启动服务器。
PerconaXtraBackup已实现对加密备份的支持。它可用于使用xbstream选项加密/解密本地或流式备份(不支持流式tar备份),以便为备份添加另一层保护。加密是通过libgcrypt库完成的。
要进行加密备份,需要指定以下选项(选项xtrabackup--encrypt-key和xtrabackup--encrypt-key-file是互斥的,即只需要提供其中一个):
xtrabackup--encrypt-keyoption和option都xtrabackup--encrypt-key-file可以用来指定加密密钥。可以使用以下命令生成加密密钥:
$opensslrand-base6424该命令的示例输出应如下所示:
GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs然后可以将该值用作加密密钥
使用xtrabackup命令的示例xtrabackup--encrypt-key应如下所示:
$xtrabackup--backup--target-dir=/data/backups--encrypt=AES256\--encrypt-key="GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs"使用--encrypt-key-file选项使用xtrabackup命令的示例xtrabackup--encrypt-key-file应如下所示:
$xtrabackup--backup--target-dir=/data/backups/--encrypt=AES256\--encrypt-key-file=/data/backups/keyfile笔记
根据用于制作的文本编辑器KEYFILE,在某些情况下,文本文件可能包含CRLF,这将导致密钥大小增加,从而使其无效。建议的方法是使用以下命令创建文件:echo-n"GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs">/data/backups/keyfile
加密备份引入了两个选项,可用于加速加密过程。这些是xtrabackup--encrypt-threads和xtrabackup--encrypt-chunk-size。通过使用该xtrabackup--encrypt-threads选项,可以指定多个线程用于并行加密。选项xtrabackup--encrypt-chunk-size可用于指定每个加密线程的工作加密缓冲区的大小(以字节为单位)(默认为64K)。
PerconaXtraBackupxtrabackup--decrypt选项已实现,可用于解密备份:
$xtrabackup--decrypt=AES256--encrypt-key="GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs"\--target-dir=/data/backups/PerconaXtraBackup不会自动删除加密文件。为了清理备份目录,用户应该删除*.xbcrypt文件。在PerconaXtraBackup2.4.6xtrabackup--remove-original中实现了选项,一旦加密文件被解密,您就可以使用它来删除它们。要在解密后删除文件,您应该运行:
$xtrabackup--decrypt=AES256--encrypt-key="GCHFLrDFVx6UAsRb88uLVbAVWbK+Yzfs"\--target-dir=/data/backups/--remove-original笔记
xtrabackup--parallel可以与xtrabackup--decrypt选项一起使用同时解密多个文件。
当文件被解密后,就可以准备备份了。
备份解密后,可以使用与标准完整备份相同的方式准备它们,并带有以下xtrabackup--prepare选项:
$xtrabackup--prepare--target-dir=/data/backups/恢复加密备份xtrabackup有一个xtrabackup--copy-back选项,可以将备份恢复到服务器的datadir:
17021412:37:01completedOK!其他阅读PerconaXtraBackup用户手册PerconaXtraBackup是一组以下工具:
尽管xtrabackup不会阻止您的数据库操作,但任何备份都可能给正在备份的系统增加负载。在没有太多备用I/O容量的系统上,限制xtrabackup读取和写入数据的速率可能会有所帮助。您可以使用该xtrabackup--throttle选项执行此操作。此选项限制每秒复制的块数。块大小为10MB。
下图显示了xtrabackup--throttle设置为1时节流的工作方式。
默认情况下没有节流,xtrabackup以最快的速度读写数据。如果对IOPS设置的限制太严格,备份可能会变慢,以至于它永远无法赶上InnoDB正在写入的事务日志,并且备份可能永远不会完成。
此功能是PerconaServerforMySQL独有的,从版本5.6.26-74.0开始。当节点在没有xtrabackup--galera-info.
如果以上所有条件都成立,PerconaXtraBackup不会SHOWMASTERSTATUS作为备份过程的一部分执行,也不会xtrabackup_binlog_info在备份时创建文件。相反,在准备备份之后检索该信息并创建文件,以及创建xtrabackup_binlog_pos_innodb,在这种情况下,它包含与in完全相同的信息,xtrabackup_binlog_info因此是多余的。
为了使这个新功能可配置,现在有一个新的PerconaXtraBackup选项xtrabackup--binlog-info,它可以接受以下值:
对于经过身份验证的用户或应用程序访问加密的表空间,InnoDB将使用主加密密钥来解密表空间密钥。主加密密钥存储在密钥环中。xtrabackup支持的两个密钥环插件是keyring_file和keyring_vault.这些插件安装在插件目录中。
PerconaXtraBackup2.4.2通过实现选项(以及5.7.13之前的MySQL需要的选项)keyring_file实现了对加密InnoDB表空间备份的支持。这些选项只能被xtrabackup二进制识别,即innobackupex将无法备份和准备加密表空间。xtrabackup--keyring-file-dataxtrabackup--server-id
为了备份和准备包含加密InnoDB表空间的数据库,您必须使用该xtrabackup--keyring-file-data选项指定密钥环文件的路径。
$xtrabackup--backup--target-dir=/data/backup/--user=root\--keyring-file-data=/var/lib/mysql-keyring/keyring对于5.7.13之前的MySQL,在xtrabackup--server-id备份创建命令中使用:
$xtrabackup--backup--target-dir=/data/backup/--user=root\--keyring-file-data=/var/lib/mysql-keyring/keyring--server-id=1在xtrabackup完成备份后,您应该会看到以下消息:
xtrabackup:Transactionlogoflsn(5696709)to(5696718)wascopied.16040110:25:51completedOK!警告
xtrabackup不会将密钥环文件复制到备份目录中。为了准备备份,您必须自己制作密钥环文件的副本。
为了准备备份,您需要指定keyring-file-data(服务器ID存储在backup-my.cnf文件中,因此在准备备份时可以省略它,无论使用的MySQL版本如何)。
xtrabackup--prepare--target-dir=/data/backup\--keyring-file-data=/var/lib/mysql-keyring/keyring在xtrabackup完成备份准备后,您应该会看到以下消息:
InnoDB:Shutdowncompleted;logsequencenumber569706416040110:34:28completedOK!备份现已准备就绪,可以使用xtrabackup–copy-back选项进行恢复。如果密钥环已轮换,您需要恢复用于获取和准备备份的密钥环。
以下命令在/data/backup目录中创建备份:
$xtrabackup--backup--target-dir=/data/backup--user=rootxtrabackup完成备份后,您应该会看到以下消息:
xtrabackup:Transactionlogoflsn(5696709)to(5696718)wascopied.16040110:25:51completedOK!准备备份为了准备备份,xtrabackup需要访问密钥环。由于xtrabackup不与MySQL服务器对话,并且my.cnf在准备期间不读取默认配置文件,因此用户需要通过命令行指定密钥环设置:
$xtrabackup--prepare--target-dir=/data/backup\--keyring-vault-config=/etc/vault.cnf也可以看看
在xtrabackup完成备份准备后,您应该会看到以下消息:
InnoDB:Shutdowncompleted;logsequencenumber569706416040110:34:28completedOK!备份现已准备就绪,可以使用以下xtrabackup--copy-back选项恢复:
要进行增量备份,请从完整备份开始。xtrabackup二进制文件将调用的文件写入xtrabackup_checkpoints备份的目标目录。该文件包含一行显示to_lsn,这是LSN备份结束时的数据库。首先,您需要使用以下命令创建完整备份:
$xtrabackup--backup--target-dir=/data/backups/base\--keyring-file-data=/var/lib/mysql-keyring/keyring警告
xtrabackup不会将密钥环文件复制到备份目录中。为了准备备份,您必须自己制作密钥环文件的副本。如果您在更改密钥环后尝试恢复备份,您将看到ERROR3185(HY000):Can'tfindmasterkeyfromkeyring,pleasecheckkeyringpluginisloaded.尝试访问加密表时出现的错误。
如果您查看该xtrabackup_checkpoints文件,您应该会看到类似于以下内容的一些内容:
backup_type=full-backupedfrom_lsn=0to_lsn=7666625last_lsn=7666634compact=0recover_binlog_info=1现在您有了完整备份,您可以根据它进行增量备份。使用如下命令:
$xtrabackup--backup--target-dir=/data/backups/inc1\--incremental-basedir=/data/backups/base\--keyring-file-data=/var/lib/mysql-keyring/keyring警告
xtrabackup不会将密钥环文件复制到备份目录中。为了准备备份,您必须自己制作密钥环文件的副本。如果密钥环尚未轮换,您可以使用与您使用基本备份备份的密钥环相同的密钥环。如果密钥环已轮换,您需要备份它,否则您将无法准备备份。
该/data/backups/inc1/目录现在应该包含增量文件,例如ibdata1.delta和test/table1.ibd.delta。这些代表了自LSN7666625.如果您检查xtrabackup_checkpoints此目录中的文件,您应该会看到类似于以下内容的内容:
backup_type=incrementalfrom_lsn=7666625to_lsn=8873920last_lsn=8873929compact=0recover_binlog_info=1意义应该是不言而喻的。现在可以将此目录用作另一个增量备份的基础:
$xtrabackup--backup--target-dir=/data/backups/inc2\--incremental-basedir=/data/backups/inc1\--keyring-file-data=/var/lib/mysql-keyring/keyring准备增量备份增量备份的xtrabackup--prepare步骤与普通备份的步骤不同。在正常备份中,执行两种类型的操作以使数据库保持一致:从日志文件中针对数据文件重放已提交的事务,以及回滚未提交的事务。准备备份时必须跳过未提交事务的回滚,因为在备份时未提交的事务可能正在进行中,并且很可能会在下一次增量备份中提交。您应该使用该xtrabackup--apply-log-only选项来防止回滚阶段。
如果您不使用该xtrabackup--apply-log-only选项来阻止回滚阶段,那么您的增量备份将毫无用处。事务回滚后,无法应用进一步的增量备份。
/data/backups/base/data/backups/inc1/data/backups/inc2要准备基本备份,您需要xtrabackup--prepare照常运行,但要防止回滚阶段:
$xtrabackup--prepare--apply-log-only--target-dir=/data/backups/base\--keyring-file-data=/var/lib/mysql-keyring/keyring输出应以一些文本结尾,如下所示:
InnoDB:Shutdowncompleted;logsequencenumber7666643InnoDB:Numberofpools:116040112:31:11completedOK!要将第一个增量备份应用于完整备份,您应该使用以下命令:
$xtrabackup--prepare--apply-log-only--target-dir=/data/backups/base\--incremental-dir=/data/backups/inc1\--keyring-file-data=/var/lib/mysql-keyring/keyring警告
应使用进行备份时使用的密钥环来准备备份。这意味着如果密钥环已在基本备份和增量备份之间轮换,您将需要使用第一次增量备份时正在使用的密钥环。
$xtrabackup--prepare--target-dir=/data/backups/base\--incremental-dir=/data/backups/inc2\--keyring-file-data=/var/lib/mysql-keyring/keyring笔记
--apply-log-only合并除最后一个之外的每个增量备份时应使用xtrabackup。这就是为什么上一行不包含xtrabackup--apply-log-only.即使xtrabackup--apply-log-only在最后一步使用了,备份仍然是一致的,但在这种情况下,服务器将执行回滚阶段。
备份现已准备就绪,可以使用xtrabackup--copy-back.如果密钥环已轮换,您需要恢复用于获取和准备备份的密钥环。
虽然所描述的恢复方法有效,但它需要访问服务器正在使用的相同密钥环。如果备份是在不同的服务器上准备的,或者在很久以后,当密钥环中的密钥被清除时,或者在密钥环库服务器根本不可用时发生故障,则可能无法进行备份。
应该使用Axtrabackup--transition-key使xtrabackup可以在不访问密钥环保险库服务器的情况下处理备份。在这种情况下,xtrabackup将从指定的密码短语派生AES加密密钥,并将使用它来加密正在备份的表空间的表空间密钥。
以下示例说明了在这种情况下如何创建备份:
$xtrabackup--backup--user=root-p--target-dir=/data/backup\--transition-key=MySecretKey如果xtrabackup--transition-key没有指定值,xtrabackup将要求它。
xtrabackup--transition-key刮掉提供的值,使其不会出现在ps命令输出中。
应为prepare命令指定相同的密码:
$xtrabackup--prepare--target-dir=/data/backup\--transition-key=MySecretKey这里没有keyring-vaultorkeyring-file,因为在这种情况下xtrabackup不与密钥环对话。
恢复备份时,您需要生成新的主密钥。这是示例keyring_file:
$xtrabackup--copy-back--target-dir=/data/backup--datadir=/data/mysql\--transition-key=MySecetKey--generate-new-master-key\--keyring-file-data=/var/lib/mysql-keyring/keyring如果keyring_vault它看起来像这样:
$xtrabackup--copy-back--target-dir=/data/backup--datadir=/data/mysql\--transition-key=MySecetKey--generate-new-master-key\--keyring-vault-config=/etc/vault.cnfxtrabackup将生成新的主密钥,将其存储到目标密钥环保险库服务器并使用此密钥重新加密表空间密钥。
最后,可以选择将转换密钥存储在密钥环中。在这种情况下,xtrabackup将需要在准备和复制期间访问相同的密钥环文件或保管库服务器,但不取决于服务器密钥是否已被清除。
备份过程的三个阶段如下:
$xtrabackup--backup--user=root-p--target-dir=/data/backup\--generate-transition-key准备keyring_file变体$xtrabackup--prepare--target-dir=/data/backup\--keyring-file-data=/var/lib/mysql-keyring/keyringkeyring_vault变体$xtrabackup--prepare--target-dir=/data/backup\--keyring-vault-config=/etc/vault.cnf复制回keyring_file变体$xtrabackup--copy-back--target-dir=/data/backup--datadir=/data/mysql\--generate-new-master-key--keyring-file-data=/var/lib/mysql-keyring/keyringkeyring_vault变体$xtrabackup--copy-back--target-dir=/data/backup--datadir=/data/mysql\--generate-new-master-key--keyring-vault-config=/etc/vault.cnflock-ddl-per-table选项改进MySQL5.7对批量加载进行了改进,其中一项改进是能够禁用重做日志记录,从而提高了ADDINDEX操作的速度。
为了阻止实例上的DDL语句,PerconaServer实现了LOCKTABLESFORBACKUP。PerconaXtraBackup在备份期间使用此锁。此锁不影响DML语句。
PerconaXtraBackup也实现--lock-ddl-per-table了,它通过使用元数据锁(MDL)来阻止DDL语句。
以下过程描述了使用时的简化备份操作--lock-ddl-per-table:
备份过程可能会遇到由批量加载操作生成的重做日志事件,该事件会通知备份工具数据文件更改已从重做日志中省略。本次活动是一个MLOG_INDEX_LOAD。如果重做跟随线程发现此事件,则备份继续并假定备份是安全的,因为MDL保护已复制的表空间,并且该MLOG_INDEX_LOAD事件针对未复制的表空间。
这些假设可能不正确,并可能导致备份不一致。
在PerconaXtraBackup版本2.4.21中实施,--lock-ddl-per-table经过重新设计以最大限度地减少不一致的备份。以下过程对步骤进行了重新排序:
添加了以下改进:
上下文应该使食谱或教程易于理解。为确保这是真的,列出了本节中出现的假设、名称和其他对象。这些项目在每个食谱或教程的开头指定。
HOST
安装、配置和运行基于MySQL的服务器的系统。我们对这个系统假设如下:
USER
DB-USER
xtrabackup此页面记录了二进制文件的所有命令行选项。
此选项仅导致在准备备份时执行重做阶段。这对于增量备份非常重要。
尝试获取元数据锁的次数。
此选项检查PerconaXtraBackup是否具有所有必需的权限。如果当前操作需要缺少权限,它将终止并打印出错误消息。如果当前操作不需要缺少的特权,但某些其他XtraBackup操作可能需要缺少特权,则不会中止该过程,并打印警告。
xtrabackup:Error:missingrequiredprivilegeLOCKTABLESon*.*xtrabackup:Warning:missingrequiredprivilegeREPLICATIONCLIENTon*.*--关闭文件不要让文件保持打开状态。当xtrabackup打开一个表空间时,它通常不会关闭其文件句柄以正确管理DDL操作。但是,如果表空间的数量很大并且无法满足任何限制,则可以选择在不再访问文件句柄时关闭它们。PerconaXtraBackup可以在启用此选项的情况下生成不一致的备份。使用该选项需要您自担风险。
通过跳过二级索引页创建紧凑备份。
此选项告诉xtrabackup使用指定的压缩算法压缩所有输出数据,包括事务日志文件和元数据文件。当前唯一支持的算法是quicklz.生成的文件具有qpress存档格式。
压缩线程的工作缓冲区大小(以字节为单位)。默认值为64K。
此选项指定xtrabackup用于并行数据压缩的工作线程数。此选项默认为1。并行压缩(xtrabackup--compress-threads)可以与并行文件复制(xtrabackup--parallel)一起使用。例如,--parallel=4--compress--compress-threads=2将创建4个I/O线程来读取数据并将其通过管道传输到2个压缩线程。
将先前制作的备份中的所有文件从备份目录复制到其原始位置。除非指定选项,否则此选项不会复制现有文件xtrabackup--force-non-empty-directories。
在致命信号上写入核心。
此选项指定应备份的数据库和表的列表。该选项接受表单的列表"databasename1[.table_name1]databasename2[.table_name2]..."。
根据名称排除数据库。此选项的操作方式与相同xtrabackup--databases,但从备份中排除匹配的名称。请注意,此选项的优先级高于xtrabackup--databases。
此选项指定包含应备份的数据库和表列表的文件的路径。该文件可以包含表单的列表元素,databasename1[.table_name1]每行一个元素。
备份的源目录。这个目录应该和你的MySQL服务器的datadir相同,如果存在的话,应该从my.cnf中读取;否则,您必须在命令行中指定它。
与xtrabackup--copy-backorxtrabackup--move-back选项结合使用时,xtrabackup--datadir指的是目标目录。
连接到服务器后,要执行备份,您将需要服务器数据目录中文件系统级别READ的EXECUTE权限。
Xtrabackup测试套件使用的仅调试选项。
此选项解压缩.qp先前使用该xtrabackup--compress选项创建的备份中扩展名为的所有文件。该xtrabackup--parallel选项将允许同时解密多个文件。要解压缩,必须安装qpress实用程序并可在路径中访问。PerconaXtraBackup不会自动删除压缩文件。要清理备份目录,用户应使用该xtrabackup--remove-original选项。
xtrabackup--encrypt解密先前使用选项制作的备份中所有扩展名为.xbcrypt的文件。该xtrabackup--parallel选项将允许同时解密多个文件。PerconaXtraBackup不会自动删除加密文件。要清理备份目录,用户应该使用xtrabackup--remove-originaloption。
读取全局文件后读取此文件。此文件必须是命令行上的第一个选项。
仅从给定文件中读取默认选项。该文件必须是命令行的第一个选项,并且是真实文件,不能是符号链接。
此选项设置应从配置文件中读取的组。该选项由使用--default-group并且是必需的
mysqld_multi部署。
阅读通常的选项组以及带有concat(group,suffix)的组。
此选项控制是否应进行缓冲池内容的新转储。
$xtrabackup--backup--dump-innodb-buffer-pool--target-dir=/home/user/backup默认情况下,此选项设置为关闭。
如果innodb_buffer_pool_dump_status报告缓冲池正在运行转储,xtrabackup使用–dump-innodb-buffer-pool-timeout的值等待转储完成
该文件ib_buffer_pool存储用于更快预热缓冲池的表空间ID和页面ID数据。
此选项包含xtrabackup应监视的值innodb_buffer_pool_dump_status以确定缓冲池转储是否已完成的秒数。
此选项与结合使用--dump-innodb-buffer-pool。默认情况下,它设置为10秒。
此选项包含要转储的最近使用的缓冲池页面的百分比。
如果–dump-innodb-buffer-pool选项设置为ON,则此选项有效。如果此选项包含一个值,xtrabackup将设置MySQL系统变量innodb_buffer_pool_dump_pct。一旦缓冲池转储完成或停止(请参阅–dump-innodb-buffer-pool-timeout),MySQL系统变量的值就会恢复。
要在使用加密时调整xbcloud/xbstream块大小,必须同时调整–encrypt-chunk-size和–read-buffer-size变量。
(用于--backup):在此目录中保存xtrabackup_checkpoints和文件的额外副本。xtrabackup_info
指定时,它使:option`xtrabackup–copy-back`和xtrabackup--move-back选项将文件传输到非空目录。不会覆盖现有文件。如果需要从备份目录复制/移动的文件已经存在于目标目录中,它仍然会失败并出现错误。
此选项指定在xtrabackup发出全局锁之前允许完成哪些类型的查询。默认值为all.
此选项创建xtrabackup_galera_info包含备份时本地节点状态的文件。执行PerconaXtraDBCluster备份时应使用选项。当使用备份锁创建备份时,它不起作用。
执行回写操作时生成新的主密钥。
此选项启用PERCONA_SCHEMA.xtrabackup_history表中备份历史记录的跟踪。可以指定一个可选的历史系列名称,该名称将与正在执行的备份的历史记录一起放置。
此目录包含完整备份,它是用于增量备份的基本数据集。
准备增量备份时,这是将增量备份与完整备份组合以进行新的完整备份的目录。
创建增量备份时,即使完整的更改页位图数据可用,也要强制对要在备份中使用的实例中的数据页进行完整扫描。
InnoDB用于计算页面校验和的算法。可用的算法有CRC32、INNODB、NONE、STRICT_CRC32、STRICT_INNODB和STRICT_NONE
创建增量备份时,您可以指定日志序列号(LSN)而不是指定xtrabackup--incremental-basedir.对于在5.1及更高版本中创建的数据库,将LSN指定为单个64位整数。注意:如果指定了错误的LSN值(PerconaXtraBackup无法检测到的用户错误),备份将无法使用。当心!
此选项用于指定包含归档日志的目录。它只能与xtrabackup--prepare选项一起使用。
通常从my.cnf配置文件中读取大量InnoDB选项,以便xtrabackup以与当前服务器相同的配置启动其嵌入式InnoDB。您通常不需要明确指定这些。这些选项具有与InnoDB或XtraDB中相同的行为。它们如下:
--innodb-adaptive-hash-index--innodb-additional-mem-pool-size--innodb-autoextend-increment--innodb-buffer-pool-size--innodb-checksums--innodb-data-file-path--innodb-data-home-dir--innodb-doublewrite-file--innodb-doublewrite--innodb-extra-undoslots--innodb-fast-checksum--innodb-file-io-threads--innodb-file-per-table--innodb-flush-log-at-trx-commit--innodb-flush-method--innodb-force-recovery--innodb-io-capacity--innodb-lock-wait-timeout--innodb-log-buffer-size--innodb-log-files-in-group--innodb-log-file-size--innodb-log-group-home-dir--innodb-max-dirty-pages-pct--innodb-open-files--innodb-page-size--innodb-read-io-threads--innodb-write-io-threads--innodb-撤消目录=名称撤消表空间的目录位置。路径是绝对的。
要使用的撤消表空间数。
密钥环文件的路径。将此选项与xtrabackup--xtrabackup-plugin-dir.
此选项指定xtrabackup在启动FLUSHTABLESWITHREADLOCK和终止那些阻止它的查询之间等待的秒数。默认值为0(零)秒,这意味着xtrabackup不会尝试终止任何查询。
此选项指定应终止哪些类型的查询以解除对全局锁的阻塞。默认值为select。
LOCKTABLESFORBACKUP如果服务器在备份开始时支持阻止所有DDL操作,则会发出问题。
在xtrabackup开始复制之前为每个表锁定DDL,直到备份完成。
日志序列的基本名称。
将先前制作的备份中的所有文件从备份目录移至其原始位置。由于此选项会删除备份文件,因此必须谨慎使用。
此选项控制是否使用备份锁而不是FLUSHTABLESWITHREADLOCK在备份阶段。服务器上必须支持备份锁才能使选项生效。
默认情况下启用此选项。使用禁用该选项--no-backup-locks。
不要从任何选项文件中读取默认选项。必须作为命令行上的第一个选项给出。
此选项自动使用备份锁,并禁用表锁,作为FLUSHTABLESWITHREADLOCK复制非InnoDB数据的轻量级替代方案,以避免阻塞修改InnoDB表的DML查询。
仅当所有表都是InnoDB并且您不关心备份的二进制日志位置时才使用此选项。
如果将执行任何DDL语句或正在更新任何非InnoDB表(这包括mysql数据库中的MyISAM表),请不要使用此选项。在这些情况下使用此选项可能会导致备份不一致。
如果您的备份未能获取锁并且您计划使用此选项,则失败可能是由阻止锁成功的传入复制事件引起的。尝试--safe-slave-backup暂时停止复制从属线程。
此选项禁用版本检查。如果您不通过此选项,则当xtrabackup在该--backup模式下运行时,会隐式启用自动版本检查。要禁用版本检查,请--no-version-check在调用xtrabackup时显式传递该选项。
启用自动版本检查后,xtrabackup会在创建服务器连接后在备份阶段对服务器执行版本检查。xtrabackup将以下信息发送到服务器:
每条信息都有一个唯一标识符,这是一个MD5哈希值,PerconaToolkit使用它来获取有关其使用方式的统计信息。这个值是一个随机的UUID;不会收集或存储任何客户信息。
使用setrlimit()保留的最大文件描述符数。
此选项指定创建备份时用于同时复制多个数据文件的线程数。默认值为1(即,无并发传输)。在PerconaXtraBackup2.3.10和更新版本中,此选项可以与xtrabackup--copy-back并行复制用户数据文件的选项一起使用(重做日志和系统表空间在主线程中复制)。
此选项指定连接到数据库时要使用的密码。它接受一个字符串参数。详情请参阅mysql--help。
打印程序参数列表并退出。必须作为命令行上的第一个选项给出。
设置读取缓冲区大小。给定值按比例放大到页面大小。默认值为10MB。
使用此变量可将xbcloud/xbstream块大小从默认值10MB增加。
注意:当您使用加密时,要调整xbcloud/xbstream块大小,请同时调整--encrypt-chunk-size和--read-buffer-size变量。
$xtrabackup...--read-buffer-size=1G|xbcloudput...--重建索引应用日志后重建InnoDB表中的二级索引。仅与–prepare一起使用。
此选项定义在紧凑备份中重建索引的线程数。仅与--prepare和一起使用--rebuild-indexes。
备份的重做日志版本。仅与一起使用--prepare。
使用此选项启动具有与获取加密备份的服务器不同的server_id的服务器实例,例如复制副本或Galera节点。使用此选项时,xtrabackup将作为准备步骤,根据新的server_id生成具有ID的新主密钥,将其存储到密钥环文件中,并重新加密表空间标头内的表空间密钥。该选项应通过--prepare(最后一步)。
在PerconaXtraBackup2.4.6中实现,指定此选项时将删除.qp,.xbcrypt和.qp.xbcrypt解密和解压缩后的文件。
使用该rsync实用程序优化本地文件传输。
指定此选项时,xtrabackup用于rsync复制所有非InnoDB文件,而不是为每个文件生成单独的复制命令。对于具有大量数据库或表的服务器,此选项更快。
此选项不能与一起使用--stream。
xtrabackup--safe-slave-backup应该等待多少秒Slave_open_temp_tables变为零。默认值为300秒。
如果客户端使用旧的(4.1.1之前的)协议,则拒绝客户端连接到服务器。(默认启用;使用–skip-secure-auth禁用。)
正在备份的服务器实例。
PEM格式的服务器公共RSA密钥的文件路径。
此选项禁用引擎兼容性警告。
--tables-compatibility-check
此选项在备份复制副本服务器时很有用。它打印源服务器的二进制日志位置。xtrabackup_slave_info它还将二进制日志坐标作为CHANGEMASTER命令写入文件。可以通过在此备份上启动副本服务器并CHANGEMASTER使用保存在xtrabackup_slave_info文件中的二进制日志位置发出命令来设置此源的新副本。
使xtrabackup扫描指定的数据文件并打印出索引统计信息。
将所有备份文件以指定格式流式传输到标准输出。当前支持的格式是xbstream和tar。
此选项启用引擎兼容性警告。
默认值为ON。用于--skip-tables-compatibility-check禁用。
通过正则表达式过滤表名。操作方式与相同xtrabackup--tables,但从备份中排除匹配的名称。请注意,此选项的优先级高于xtrabackup--tables。
此选项指定备份的目标目录。如果目录不存在,xtrabackup则创建它。如果目录确实存在并且为空,xtrabackup则将成功。xtrabackup不会覆盖现有文件;但是它将因操作系统错误17失败,fileexists.
如果此选项是相对路径,则将其解释为相对于执行xtrabackup的当前工作目录。
为了执行备份,您需要在文件系统级别为您提供为的值的目录具有READ、WRITE和权限。EXECUTE--target-dir
此选项限制每秒复制的块数。块大小为10MB。
要将带宽限制为10MB/s,请将选项设置为1:。--throttle=1
要使用的TLS版本。允许的值如下:
除了在使用时打印出正确的tmpdir参数外,此选项目前不用于任何xtrabackup--print-param用途。
此选项用于指定在准备备份时应应用日志的LSN。它只能与xtrabackup--prepare选项一起使用。
此选项用于启用处理备份而不访问密钥环保险库服务器。在这种情况下,xtrabackup从指定的密码短语派生AES加密密钥,并使用它来加密正在备份的表空间的表空间密钥。
如果--transition-key
此选项会影响为准备备份xtrabackup--prepare或使用分析统计信息分配的内存量xtrabackup--stats。其目的类似于innodb_buffer_pool_size.它与Oracle的InnoDB热备份工具中类似名称的选项不同。默认值是100MB,如果你有足够的可用内存,1GB到2GB是一个不错的推荐值。提供单位时支持倍数(例如1MB、1M、1GB、1G)。
此选项指定连接到服务器时使用的MySQL用户名,如果那不是当前用户。该选项接受一个字符串参数。有关详细信息,请参阅mysql–help。
此选项打印xtrabackup版本并退出。
包含keyring插件的目录的绝对路径。
此页面记录了innobackupex.
此选项控制是否应使用备份锁而不是FLUSHTABLESWITHREADLOCK在备份阶段使用。当服务器不支持备份锁时,该选项无效。此选项默认启用,使用禁用--no-backup-locks。
显式禁用–-backup-locks默认启用的选项。
不要让文件保持打开状态。此选项直接传递给xtrabackup。当xtrabackup打开表空间时,它通常不会关闭其文件句柄以正确处理DDL操作。但是,如果表空间的数量确实很大并且无法满足任何限制,则可以选择在不再访问文件句柄时关闭它们。PerconaXtraBackup可以在启用此选项的情况下生成不一致的备份。使用风险自负。
将先前制作的备份中的所有文件从备份目录复制到其原始位置。除非指定选项,否则PerconaXtraBackupinnobackupex--copy-back选项不会复制现有文件innobackupex--force-non-empty-directories。
此选项指定innobackupex应备份的数据库列表。该选项接受字符串参数或包含要备份的数据库列表的文件路径。该列表的格式为“databasename1[.table_name1]databasename2[.table_name2]...”。如果未指定此选项,则将备份包含MyISAM和InnoDB表的所有数据库。请确保--databases包含所有InnoDB数据库和表,以便同时备份所有innodb.frm文件。如果列表很长,可以在文件中指定,并且可以指定文件的完整路径而不是列表。(请参阅选项–tables-file。)
innobackupex--compress解压缩之前使用该选项制作的备份中所有扩展名为.qp的文件。该innobackupex--parallel选项将允许同时解密和/或解压缩多个文件。为了解压缩,必须安装qpress实用程序并且可以在路径中访问。PerconaXtraBackup不会自动删除压缩文件。为了清理备份目录,用户应该\*.qp手动删除文件。
解密之前使用–encrypt选项制作的备份中所有扩展名为.xbcrypt的文件。该innobackupex--parallel选项将允许同时解密和/或解压缩多个文件。
此选项接受一个字符串参数,该参数指定从哪个文件读取默认MySQL选项。必须作为命令行上的第一个选项给出。
此选项指定从标准默认文件之前读取默认MySQL选项的额外文件。必须作为命令行上的第一个选项给出。
此选项接受一个字符串参数,该参数指定应从配置文件中读取的组。如果您使用mysqld_multi,则需要这样做。这也可用于指示除mysqld和xtrabackup之外的组。
目前,支持以下算法AES128:AES192和AES256。
不建议在对机器进行不受控制的访问的情况下使用此选项作为命令行,因此可以将密钥视为进程信息的一部分。
该文件必须是一个简单的二进制(或文本)文件,其中包含要使用的密钥。
此选项直接传递给xtrabackup--export选项。它可以导出单个表以导入另一台服务器。有关详细信息,请参阅xtrabackup文档。
此选项接受一个字符串参数,该参数指定要在其中保存文件的额外副本的xtrabackup_checkpoints目录。它直接传递给xtrabackup的innobackupex--extra-lsndir选项。有关详细信息,请参阅xtrabackup文档。
指定时,它使innobackupex--copy-back选项或innobackupex--move-back选项将文件传输到非空目录。不会覆盖现有文件。如果–copy-back或–move-back必须从目标目录中已存在的备份目录中复制文件,它仍然会失败并出现错误。
此选项创建xtrabackup_galera_info包含备份时本地节点状态的文件。执行Percona-XtraDB-Cluster备份时应使用选项。使用备份锁创建备份时无效。
此选项显示帮助屏幕并退出。
此选项启用PERCONA_SCHEMA.xtrabackup_history表中备份历史记录的跟踪。可以指定一个可选的历史系列名称,该名称将与当前备份的历史记录一起放置。
此选项接受一个字符串参数,该参数指定使用TCP/IP连接到数据库服务器时要使用的主机。它被传递给mysql子进程而无需更改。详情请参阅mysql--help。
此选项指定应使用哪个xtrabackup二进制文件。该选项接受一个字符串参数。IBBACKUP-BINARY应该是用于运行PerconaXtraBackup的命令。如果xtrabackup二进制文件不在您的搜索路径或工作目录中,该选项会很有用。如果未指定此选项,innobackupex将尝试确定要自动使用的二进制文件。
此选项是一个正则表达式,以databasename.tablename格式与表名匹配。它直接传递给xtrabackup的xtrabackup--tables选项。有关详细信息,请参阅xtrabackup文档。
此选项接受一个字符串参数,该参数指定包含完整备份的目录,该目录是增量备份的基本数据集。它与innobackupex--incremental选项一起使用。
此选项接受一个字符串参数,该参数指定增量备份将与完整备份组合以进行新的完整备份的目录。它与innobackupex--incremental选项一起使用。
此选项接受一个字符串参数,该参数指定LSN用于增量备份的日志序列号()。它与innobackupex--incremental选项一起使用。使用它而不是指定innobackupex--incremental-basedir.对于MySQL和PerconaServer5.0系列版本创建的数据库,将指定为两个32位整数,采用high:low格式。对于在5.1及更高版本中创建的数据库,将LSN指定为单个64位整数。
此选项指定应终止哪些类型的查询以解除对全局锁的阻塞。默认为“全部”。
此选项指定在innobackupex发出全局锁之前允许完成哪些类型的查询。默认为全部。
此选项禁用版本检查。如果不通过此选项,则在模式下xtrabackup运行时会隐式启用自动版本检查。--backup要禁用版本检查,请--no-version-check在调用xtrabackup.当启用自动版本检查时,|program|创建服务器连接后,在备份阶段对服务器执行版本检查。
xtrabackup向服务器发送以下信息:
此选项接受一个整数参数,该参数指定xtrabackup子进程用于同时备份文件的线程数。请注意,此选项适用于文件级别,也就是说,如果您有多个.ibd文件,它们将被并行复制。如果您的表一起存储在单个表空间文件中,则不会产生任何影响。此选项将允许同时解密和/或解压缩多个文件。为了解压缩,必须安装qpress实用程序并且可以在路径中访问。此过程将删除原始压缩/加密文件并将结果保留在同一位置。它直接传递给xtrabackup的xtrabackup--parallel选项。有关详细信息,请参阅xtrabackup文档
此选项接受一个字符串参数,指定连接到数据库时要使用的密码。它被传递给mysql子进程而无需更改。详情请参阅mysql--help。
此选项接受一个字符串参数,该参数指定使用TCP/IP连接到数据库服务器时要使用的端口。它被传递给mysql子进程。它被传递给mysql子进程而无需更改。详情请参阅mysql--help。
此选项仅在与该选项一起使用时才有效,--apply-log
innobackupex--apply-log此选项仅在与and选项一起使用时才有效,innobackupex--rebuild-indexes并直接传递给xtrabackup。使用时,xtrabackup在重建索引时以指定数量的线程并行处理表空间。有关更多信息,请参阅xtrabackup文档。
使用该rsync实用程序优化本地文件传输。指定此选项时,innobackupex用于rsync复制所有非InnoDB文件,而不是cp为每个文件生成单独的文件,这对于具有大量数据库或表的服务器来说可能更快。此选项不能与一起使用innobackupex--stream。
指定后,innobackupex将在运行之前停止副本SQL线程FLUSHTABLESWITHREADLOCK并等待开始备份,直到Slave_open_temp_tablesinSHOWSTATUS为零。如果没有打开的临时表,则进行备份,否则将启动和停止SQL线程,直到没有打开的临时表。如果几秒Slave_open_temp_tables后没有变为零,备份将失败。innobackupex--safe-slave-backup-timeout备份完成后,副本SQL线程将重新启动。
innobackupex--safe-slave-backup应该等待多少秒Slave_open_temp_tables变为零。默认为300秒。
此选项在备份复制副本服务器时很有用。它打印源服务器的二进制日志位置和名称。它还将此信息xtrabackup_slave_info作为CHANGEMASTER命令写入文件。可以通过在此备份上启动副本服务器并CHANGEMASTER使用保存在xtrabackup_slave_info文件中的二进制日志位置发出命令来设置此源的新副本。
此选项接受一个字符串参数,该参数指定使用UNIX域套接字连接到本地数据库服务器时要使用的套接字。它被传递给mysql子进程而无需更改。详情请参阅mysql--help。
此选项接受一个字符串参数,该参数指定文件中的名称列表,格式为database.table,每行一个。该选项直接传递给xtrabackup的innobackupex--tables-file选项。
此选项限制每秒复制的块数。块大小为10MB。要将带宽限制为10MB/s,请将选项设置为1:。--throttle=1
此选项接受一个字符串参数,该参数指定将存储临时文件的位置。指定时可以使用innobackupex--stream。对于这些选项,事务日志将首先存储到临时文件中,然后再流式传输或复制到远程主机。此选项指定将存储该临时文件的位置。如果未指定该选项,则默认使用tmpdir从服务器配置中读取的值。innobackupex将my.cnf中指定的tmpdir值作为--target-dir选项传递给xtrabackup二进制文件。[mysqld]和[xtrabackup]组都是从my.cnf中读取的。如果两者中都有tmpdir,则使用的值取决于my.cnf中这些组的顺序。
xtrabackup此选项接受一个字符串参数,该参数指定在准备备份时用于崩溃恢复的内存量(以字节为单位)。提供单位时支持倍数(例如1MB、1M、1GB、1G)。它仅与选项一起使用innobackupex--apply-log。它直接传递给xtrabackup的xtrabackup--use-memory选项。有关详细信息,请参阅xtrabackup文档。
xbcloud的目的是从/向云下载和上传全部或部分xbstream存档。xbcloud不会覆盖同名的备份。xbcloud通过管道从xbstream接受输入,因此可以使用xtrabackup将其作为管道调用以直接流式传输到云,而无需本地存储。
在Bashshell中,该$参数返回最后一个二进制文件的退出代码。如果使用管道,则${PIPESTATUS[x]}数组参数返回管道字符串中每个二进制文件的退出代码。
$xtrabackup--backup--stream=xbstream--target-dir=/storage/backups/|xbcloudput[options]full_backup>true|false>echo$>1#withPIPESTATUS>true|false>echo${PIPESTATUS[0]}${PIPESTATUS[1]}>01xbcloud二进制文件将每个块存储为具有name的单独对象,backup_name/database/table.ibd.NNNNNNNNNNNNNNNNNNNN其中NNN...是文件中块的0填充序列号。xtrabackup和xbstream生成的块大小更改为10MB。
用于--read-buffer-size调整块大小。
如果您使用加密,请同时指定--read-buffer-size和--encrypt-chunk-size选项来调整块大小。
xbcloud具有三个基本操作:put、get和delete。通过这些操作,可以创建、存储、检索、恢复和删除备份。xbcloud操作清楚地映射到AWSS3API中的类似操作。
$xtrabackup--backup--stream=xbstream--target-dir=/tmp|xbcloud\put[options]
细节
–s3-访问密钥
用于提供AWS访问密钥ID
–s3-密钥
用于提供AWS秘密访问密钥
–s3-bucket
使用提供AWS存储桶名称
–s3-区域
用于指定AWS区域。默认值为us-east-1
–s3-api-version=<自动|2|4>
选择签名算法。默认值为自动。在这种情况下,xbcloud将进行探测。
–s3-bucket-lookup=
指定是使用bucket.endpoint.com还是endpoint.com/bucket*样式请求。默认值为自动。在这种情况下,xbcloud将进行探测。
–s3-storage-class=<名称>
$xtrabackup--backup--stream=xbstream--extra-lsndir=/tmp--target-dir=/tmp|\xbcloudput--storage=s3\--s3-endpoint='play.minio.io:9000'\--s3-access-key='YOUR-ACCESSKEYID'\--s3-secret-key='YOUR-SECRETACCESSKEY'\--s3-bucket='mysql_backups'--parallel=10\$(date-I)-full_backup使用GoogleCloudStorage创建完整备份使用互操作模式实现对GoogleCloudStorage的支持。此模式专门设计用于与兼容AmazonS3的云服务进行交互。
$xtrabackup--backup--stream=xbstream--extra-lsndir=/tmp--target-dir=/tmp|\xbcloudput--storage=google\--google-endpoint=`storage.googleapis.com`\--google-access-key='YOUR-ACCESSKEYID'\--google-secret-key='YOUR-SECRETACCESSKEY'\--google-bucket='mysql_backups'--parallel=10\$(date-I)-full_backup使用GoogleCloudStorage时可以使用以下选项:
Google存储类名称选项如下:
每种存储类型都有强制参数,您可以在命令行、配置文件和环境变量中提供这些参数。
其值不经常更改的参数可以存储在自定义配置文件中my.cnf或自定义配置文件中。以下示例是该[xbcloud]组下的配置选项模板:
如果您在命令行和配置文件中显式使用参数,xbcloud将使用命令行中提供的值。
识别以下环境变量。xbcloud自动将它们映射到适用于所选存储的相应参数。
如果您在命令行、配置文件中显式使用参数,并且相应的环境变量包含一个值,则xbcloud将使用命令行或配置文件中提供的值。
OpenStack环境变量也被识别并自动映射到相应的swift参数(--storage=swift)。
对于所有操作(put、get和delete),您可以使用快捷方式将存储类型、存储桶名称和备份名称指定为一个参数,而不是使用三个不同的参数(-storage、-s3-bucket和备份名称本身)。
使用快捷语法提供存储类型、存储桶和备份名称
使用以下格式:storage-type://bucket-name/backup-name
$xbcloudgets3://operator-testing/bak22...在本例中,s3是指存储类型,operator-testing是存储桶名称,bak22是备份名称。此快捷方式扩展如下:
$xbcloudget--storage=s3--s3-bucket=operator-testingbak22...您不仅可以在命令行上提供强制参数。您可以使用配置文件和环境变量。
xbcloud接受可用于任何存储类型的附加参数。该--md5参数计算备份块的MD5哈希值。结果存储在遵循该backup_name.md5模式的文件中。
$xtrabackup--backup--stream=xbstream\--parallel=82>backup.log|xbcloudputs3://operator-testing/bak22\--parallel=8--md52>upload.log您可以使用该--header参数在指定客户密钥时使用服务器端加密传递额外的HTTP标头。
使用–header进行AES256加密的示例
$xtrabackup--backup--stream=xbstream--parallel=4|\xbcloudputs3://operator-testing/bak-enc/\--header="X-Amz-Server-Side-Encryption-Customer-Algorithm:AES256"\--header="X-Amz-Server-Side-Encryption-Customer-Key:CuStoMerKey="\--header="X-Amz-Server-Side-Encryption-Customer-Key-MD5:CuStoMerKeyMd5=="\--parallel=8该--header参数对于设置访问控制列表(ACL)权限也很有用:--header="x-amz-acl:bucket-owner-full-control
$xbcloudget[options]
$xtrabackup--prepare--apply-log-only--target-dir=/storage/downloaded_full准备好完整备份后,下载增量备份:
$xtrabackup--prepare--apply-log-only\--target-dir=/storage/downloaded_full\--incremental-dir=/storage/downloaded_inc$xtrabackup--prepare--target-dir=/storage/downloaded_full云备份的部分下载如果您不想下载整个备份来恢复数据库,您可以只恢复特定的表:
xbcloud具有以下命令行选项:
云存储选项。xbcloud支持Swift、MinIO和AWSS3。默认值为swift。
Swift集群的URL。
重命名为xbcloud–swift-auth-url
xbcloud尝试从keystone响应中获取指定区域(如果指定)的对象存储URL。可以通过传递--swift-storage-url=URL参数来覆盖该URL。
Swift用户名(X-Auth-User,特定于Swift)
Swift密钥/密码(X-Auth-Key,特定于Swift)
要备份到的容器(特定于Swift)
最大并发上传/下载请求数。默认为1.
带有CA证书的文件的路径
不验证服务器证书
指定swift认证版本。可能的值为:1.0-TempAuth、2.0-Keystonev2.0和3-Keystonev3。默认值为1.0。
对于v2,其他选项包括:
Swift租户名称。
Swift租户ID。
Swift端点区域。
用户的Swift密码。
对于v3,其他选项包括:
快速用户ID。
斯威夫特项目名称。
Swift项目ID。
迅捷域名。
Swift域ID。
将重试该操作,直到--max-retries达到该值。如果块操作在最后一次重试时失败,xbcloud将中止该进程。
默认值如下:
由于xbcloud并行执行多个异步请求,因此以毫秒为单位的计算值用于max-backoff.该算法计算在下一次重试之前休眠多少毫秒。生成的数字基于二(2)的幂、已尝试重试的次数并添加一个介于1和1000之间的随机数。如果多个块具有相同的退避值,该数字可避免网络拥塞。如果使用默认值,则最终重试尝试大约在第一次尝试后17分钟。当毫秒数达到设置时,不再计算该数字--max-backoff。此时,使用--max-backoff设置继续重试,直到max-retries达到参数。
我们重试以下CURL操作:
我们重试以下HTTP操作状态码:
使用--verbose输出时增强了错误处理。此输出指定导致xbcloud失败的错误以及用户必须添加什么参数才能重试此错误。
以下是详细输出的示例:
xbcloud[options]--max-retries=5--max-backoff=10000以下文本是与命令一起使用的指数退避的示例:
[1.]Chunkxtrabackup_logfile.00000000000000000006第一次上传失败,休眠了2384毫秒。
[5.]相同的块上传成功。
此功能是技术预览质量。
在PerconaXtraBackup2.4.25中实现的xbcloud二进制文件使用RESTAPI添加了对MicrosoftAzure云存储的支持。
以下是使用RESTAPI将备份上传到Azure的选项、环境变量和说明。环境变量由xbcloud识别,它会自动将它们映射到相应的参数:
选项名称
环境变量
--azure-storage-account=name
AZURE_STORAGE_ACCOUNT
Azure存储帐户是用于访问和存储Azure数据对象的唯一命名空间。
--azure-container-name=name
AZURE_CONTAINER_NAME
--azure-access-key=name
AZURE_ACCESS_KEY
--azure-endpoint=name
AZURE_ENDPOINT
端点允许客户端安全地访问数据。
--azure-tier-class=name
AZURE_STORAGE_CLASS
云层可以在保持性能的同时减少所需的本地存储。启用后,此功能具有以下类别:*热-经常访问或修改的数据*冷-不经常访问或修改的数据*存档-很少访问或修改的数据
xbcloud备份的示例。
$xtrabackup--backup--stream=xbstream--target-dir=$TARGET_DIR|xbcloudputbackup_name--azure-storage-account=pxbtesting--azure-access-key=$AZURE_KEY--azure-container-name=test--storage=azure从xbcloud恢复备份的示例。
$xbcloudgetbackup_name--azure-storage-account=pxbtesting--azure-access-key=$AZURE_KEY--azure-container-name=test--storage=azure--parallel=102>download.log|xbstream-x-Crestore从xbcloud删除备份的示例。
$xbclouddeletebackup_name--azure-storage-account=pxbtesting--azure-access-key=$AZURE_KEY--azure-container-name=test--storage=azure使用快捷方式还原的示例。
$xbcloudgetazure://operator-testing/bak22...xbcrypt二进制文件为了支持备份的加密和解密,PerconaXtraBackupxbcrypt引入了一个新工具。
PerconaXtraBackup2.4.25实现了XBCRYPT_ENCRYPTION_KEY环境变量。该变量仅用于代替--encrypt_key=name选项。您可以使用环境变量或命令行选项。如果两者都使用,则命令行选项优先于环境变量中指定的值。
解密数据输入到输出。
可选输入文件。如果未指定,输入将从标准输入中读取。
可选的输出文件。如果未指定,输出将被写入标准输出。
加密演算法。
加密密钥。
包含加密密钥的文件。
用于加密的工作缓冲区大小(以字节为单位)。默认值为64K。
此选项指定将用于并行加密/解密的工作线程数。
显示详细状态输出。
为了支持同时压缩和流式传输,除了TAR格式之外,PerconaXtraBackup还引入了一种称为xbstream的新自定义流式传输格式。这需要克服传统存档格式的一些限制,例如tar、cpio和其他不允许流式传输动态生成的文件,例如动态压缩文件。xbstream与传统流/存档格式相比的其他优势包括同时流式传输多个文件的能力(因此可以将xbstream格式的流与-parallel选项一起使用)和更紧凑的数据存储。
该实用程序具有类似tar的界面:
posix_fadvise()该实用程序还尝试通过在可用时使用适当的调用来最小化其对操作系统页面缓存的影响。
当使用xtrabackup启用压缩时,所有数据都将使用指定的压缩算法进行压缩,包括事务日志文件和元数据文件。当前唯一支持的算法是quicklz.
块文件的默认大小为10MB。
已知的问题:
xtrabackup二进制文件有一些您应该注意的限制,以确保您的备份顺利进行并且是可恢复的。
限制:
不。虽然innobackupex源自InnoDBHotBackup使用的相同GPL和开源包装脚本,但它不执行ibbackup,并且xtrabackup二进制文件不执行或链接到ibbackup.您无需任何许可即可使用PerconaXtraBackup;它与InnoDB热备份完全分开。
innobackupex二进制文件是Oracleinnobackup脚本(重命名为mysqlbackup)的修补版本。它们是相似的,熟悉innobackup可能会有所帮助。
除了innobackupex特定功能的可用选项外,主要区别在于:
“ZRM使用PerconaXtraBackup为MySQL的非阻塞备份提供支持。带有PerconaXtraBackup的ZRM通过提供基于每秒IO操作数的限制来提供资源利用率管理。即使备份是在数据库级别完成的,基于PerconaXtraBackup的备份也允许进行表级恢复。此操作要求恢复数据库服务器是PerconaServerforMySQLwithXtraDB。”
如果ibdata和ib_log文件位于datadir之外的不同目录中,则在应用日志后将它们移动到适当的位置。
当正在备份的数据库包含大量文件并且PerconaXtraBackup无法打开所有文件以创建成功备份时,通常会发生此错误。为了避免此错误,应适当配置操作系统,以便PerconaXtraBackup可以打开其所有文件。在Linux上,这可以通过ulimit特定备份会话的命令或通过编辑/etc/security/limits.conf以全局更改它来完成
可以设置的最大可能值是1048576Linux内核中的硬编码常量。
为了防止在运行DDL操作时创建损坏的备份,PerconaXtraBackup在检测到重做日志记录被禁用时会中止。在这种情况下,将打印以下错误:
[FATAL]InnoDB:Anoptimized(withoutredologging)DDLoperationhasbeenperformed.Allmodifiedpagesmaynothavebeenflushedtothediskyet.PerconaXtraBackupwillnotbeabletotakeaconsistentbackup.Retrythebackupoperation.笔记
为了避免这个错误,PerconaXtraBackup可以在复制表时对表使用元数据锁:
备份的类型(例如完整或增量)、其状态(例如已准备好)以及其中包含的LSN范围。此信息用于增量备份。xtrabackup_checkpoints进行完整备份后的示例:
backup_type=full-backupedfrom_lsn=0to_lsn=15188961605last_lsn=15188961605xtrabackup_checkpoints进行增量备份后的示例:
backup_type=incrementalfrom_lsn=15188961605to_lsn=15189350111last_lsn=15189350111服务器使用的二进制日志文件及其在备份时的位置。的结果SHOWMASTERSTATUS。
InnoDB或XtraDB表的二进制日志文件及其当前位置。
进程中使用的xtrabackup二进制文件。
该文件将在执行增量备份时创建。它包含每个表的增量元数据:页面大小、压缩页面的大小(如果值为0,则表示表空间未压缩)和空间ID。此文件的示例可能如下所示:
page_size=16384zip_size=0space_id=0CHANGEMASTER设置从站所需的语句。
包含值wsrep_local_state_uuid和wsrep_last_committed状态变量
本商标政策旨在确保Percona品牌产品或服务的用户知道他们收到的内容确实是由Percona开发、批准、测试和维护的。商标通过将一家公司或个人的产品和服务与另一家公司或个人的产品和服务区分开来,有助于防止市场上的混乱。
未经Percona书面许可,不得在名称、URL或任何产品、服务、网站的其他识别特征或其他用途中使用任何Percona商标,以下三个有限的例外情况除外。
首先,在对真正的Percona产品进行命名合理使用引用时,您可以使用适当的Percona标志。
其次,当Percona根据GNU通用公共许可证(“GPL”)版本发布产品时,您可以在根据GPL的条款和条件分发该产品的逐字副本时使用适当的Percona标志。
第三,您可以使用适当的Percona标记来指代GPL发布的Percona软件的分发,该软件经过修改并进行了细微的更改,其唯一目的是允许该软件在Percona尚未支持的操作系统或硬件平台上运行发布软件,前提是这些第三方更改不影响软件的行为、功能、特性、设计或性能。购买此Percona品牌软件的用户将获得Percona软件的基本精确实施。
商标法或本商标政策中规定的任何例外情况均不允许您截断、修改或以其他方式使用任何Percona商标作为您自己品牌的一部分。例如,如果XYZ创建了PerconaServer的修改版本,则XYZ不得将该修改标记为“XYZPerconaServer”或“PerconaXYZServer”,即使该修改符合上述第三个例外。
在任何情况下,您都必须遵守不时修订的适用法律、基础许可和本商标政策。例如,对Percona商标的任何提及都应包括完整的商标名称、正确的拼写和大小写,以及对PerconaLLC和/或其附属公司的所有权归属。例如,XtraBackup的全称是PerconaXtraBackup。但是,为了简洁起见,在第二次和后续使用中省略“Percona”这个词是可以接受的,这样的省略不会引起混淆。
本文档的目的是阐明所收集的信息,并提供有关如何在需要时禁用此功能的指导。
在启用版本检查的情况下启动时,支持此功能的工具通过安全的HTTPS通道连接到Percona的版本检查服务。它会比较本地安装的版本以查找可能的更新,并检查以下软件的版本:
然后,如果它们被识别为在环境中运行,它会检查并警告存在已知问题的版本。
服务器记录每个版本检查请求。存储的信息包括检查的系统唯一ID,后跟软件名称和版本。ID是在安装时或第一次提交版本检查查询时生成的。
在PerconaToolkit3.0.7版本之前,系统ID是作为主机名的MD5哈希计算的,从PerconaToolkit3.0.7开始,它是作为随机数的MD5哈希生成的。PerconaXtraBackup继续使用基于主机名的MD5哈希。
结果,发送的查询内容如下:
[xtrabackup]no-version-check经常问的问题为什么默认启用此功能?我们相信启用此功能可以提高运行Percona软件的环境的安全性和性能,这对于大多数用户来说是一个不错的选择。
在许多环境中,操作系统存储库可能不包含最新版本的软件和通常手动安装的较新版本的软件,因此不会被操作系统范围的更新检查所覆盖。
兼容性问题可能由环境中各种组件的版本引起,例如有问题的Perl、DBD或MySQL版本可能会导致PerconaToolkit出现操作问题。