提供备份¶
操作员通常将Percona XtraDB集群备份存储在K雷竞技下载官网ubernetes集群之外Amazon S3或S3兼容的存储,或在Azure Blob存储:

但是将备份存储在持久的卷在Kubernetes集群内部也可以:

操作符允许以两种方式进行备份:
定期备份在部署/ cr.yaml文件在适当的时间自动执行。按需备份可以在任何时候手动完成,并在部署/备份/ backup.yaml.
进行定时备份¶
备份计划定义在备份部份部署/ cr.yaml文件。本节包含以下小节:
存储分段包含存储备份所需的数据和配置,时间表分段允许实际调度备份(调度以crontab格式指定)。
备份在Amazon S3或S3兼容的存储上¶
由于备份是单独存储在Amazon S3上的,因此AWS_ACCESS_KEY_ID而且AWS_SECRET_ACCESS_KEY应该出现在Kubernetes集群上。应该创建带有这些base64编码密钥的secrets文件:例如部署/备份/ backup-secret-s3.yaml文件内容如下:
apiVersion:v1种类:秘密元数据:名字:my-cluster-name-backup-s3类型:不透明的数据:AWS_ACCESS_KEY_ID:UkVQTEFDRS1XSVRILUFXUy1BQ0NFU1MtS0VZAWS_SECRET_ACCESS_KEY:UkVQTEFDRS1XSVRILUFXUy1TRUNSRVQtS0VZ
请注意
下面的命令可以用来从一个纯文本字符串中获取一个base64编码的字符串:
$回声- n“纯文本字符串”|base64——包装=0
$回声- n“纯文本字符串”|base64
的名字值是Kubernetes秘密将进一步使用的名称,以及AWS_ACCESS_KEY_ID而且AWS_SECRET_ACCESS_KEY是访问S3存储的键(显然,它们应该包含适当的值以使这种访问成为可能)。为了有效果,秘密文件应该应用适当的命令来创建秘密对象,例如。Kubectl apply -f deploy/backup/backup-secret-s3.yaml(Kubernetes)。
访问s3兼容云以存储备份所需的所有数据(凭据、名称桶保存备份等)应放入backup.storages分段,backup.schedule分段实际上应该以与crontab兼容的方式调度备份。这里有一个例子部署/ cr.yaml使用Amazon S3存储进行备份:
...备份:...存储:s3-us-west:类型:s3s3:桶:S3-BACKUP-BUCKET-NAME-HERE地区:us-west-2credentialsSecret:my-cluster-name-backup-s3...时间表:-名字:“sat-night-backup”时间表:“00**6”保持:3.storageName:s3-us-west...
如果您使用一些与S3兼容的存储而不是原始的Amazon S3,则endpointUrl在s3小节中需要,该小节指向用于备份的实际云,并且特定于云提供商。例如,使用谷歌云涉及到后endpointUrl:
endpointUrl:https://storage.googleapis.com
中进一步解释了这三个小节中的选项自定义资源选项.
应该单独提到的一个选项是credentialsSecret这是一个Kubernetes秘密备份。此键的值应与用于创建秘密对象(my-cluster-name-backup-s3在最后一个例子中)。
Microsoft Azure Blob存储上的备份¶
因为备份是单独存储在Azure Blob存储,一个秘密AZURE_STORAGE_ACCOUNT_NAME而且AZURE_STORAGE_ACCOUNT_KEY应该出现在Kubernetes集群上。应该创建带有这些base64编码密钥的secrets文件:例如部署/备份/ backup-secret-azure.yaml包含以下内容的文件。
apiVersion:v1种类:秘密元数据:名字:my-cluster-azure-secret类型:不透明的数据:AZURE_STORAGE_ACCOUNT_NAME:UkVQTEFDRS1XSVRILUFaVVJFLVNUT1JBR0UtQUNDT1VOVC1OQU1FAZURE_STORAGE_ACCOUNT_KEY:UkVQTEFDRS1XSVRILUFaVVJFLVNUT1JBR0UtQUNDT1VOVC1LRVk =
请注意
下面的命令可以用来从一个纯文本字符串中获取一个base64编码的字符串:
$回声- n“纯文本字符串”|base64——包装=0
$回声- n“纯文本字符串”|base64
的名字值是Kubernetes秘密将进一步使用的名称。的AZURE_STORAGE_ACCOUNT_NAME而且AZURE_STORAGE_ACCOUNT_KEY凭据将用于访问存储(显然,它们应该包含适当的值以使这种访问成为可能)。为了产生效果,应该应用secrets文件和适当的命令来创建secrets对象,例如:Kubectl apply -f deploy/backup/backup-secret-azure.yaml(Kubernetes)。
访问Azure Blob存储以存储备份所需的所有数据(凭据、名称容器保存备份等)应放入backup.storages分段,backup.schedule分段实际上应该以与crontab兼容的方式调度备份。这里有一个例子部署/ cr.yaml它使用Azure Blob存储进行备份:
...备份:启用:真正的...存储:azure-blob:类型:azureazure:credentialsSecret:my-cluster-azure-secret容器:< your-container-name >...时间表:-名字:“sat-night-backup”时间表:“00**6”保持:3.storageName:azure-blob...
应该单独提到的一个选项是credentialsSecret这是一个Kubernetes秘密备份。此键的值应与用于创建秘密对象(my-cluster-azure-secret在最后一个例子中)。
按需备份¶
如果要按需备份,用户应首先在backup.storages第部署/ cr.yaml配置文件,以与计划备份相同的方式完成。当部署/ cr.yaml文件包含正确配置的存储并应用于kubectl命令,使用一个特殊的备份配置YAML文件其内容如下:
备份的名字在
metadata.name键,雷竞技下载官网Percona XtraDB集群名称在
spec.pxcCluster键,存储的名字从
部署/ cr.yaml在spec.storageName键,S3备份终结器由
metadata.finalizers.delete-s3-backupkey(当手动或计划删除相应的备份对象时,它会触发从S3桶中实际删除备份文件)。
备份配置文件的示例为部署/备份/ backup.yaml.
当使用kubectl配置和应用备份目标时,应用-f deploy/cr. conf。Yaml命令,实际执行备份命令:
$kubectl应用- f部署/备份/ backup.yaml
请注意
将备份设置存储在单独的文件中,可以通过将其内容传递给kubectl应用命令如下:
$猫<apiVersion: pxc.雷竞技下载官网percona.com/v1: Perc雷竞技下载官网onaXtraDBClusterBackup元数据:终结器:——delete-s3-backup名称:backup1规范:pxcCluster: cluster1storageName: s3-us-westEOF
存储二进制日志,用于时间点恢复¶
时间点恢复功能允许用户将集群回滚到特定的事务、时间(在某些情况下甚至跳过事务)。从技术上讲,这个特性包括不断地将二进制日志更新保存到备份存储。在默认情况下,时间点恢复是关闭的,并且仅在8.0.21-12.1开始的Percona XtraDB集群版本中得到Operator的支持。雷竞技下载官网
中设置多个键才能使用pitr第备份部份部署/ cr.yaml文件:
启用键应设置为真正的,storageName属性中已配置的存储的名称存储分段请注意
binlog和完全备份都应该使用s3兼容的存储来进行时间点恢复!
timeBetweenUploadsKey指定运行binlog上传程序间隔的秒数。
下面的示例显示如何pitr分段如下:
备份:...pitr:启用:真正的storageName:s3-us-westtimeBetweenUploads:60
请注意
在没有任何基于集群的过滤的情况下,将对binlog进行时间点恢复。因此,建议使用单独的存储空间、桶或目录存放集群的binlog。此外,当您启用时间点恢复时,建议使用空桶/目录来保存binlog(没有binlog或来自以前尝试或其他集群的文件)。
请注意
清除binlogs在将其转移到备份存储之前,将中断时间点恢复。
将备份存储在持久卷上¶
这里有一个例子部署/ cr.yaml备份段片段,为文件系统类型的存储配置私有卷:
...备份:...存储:fs-pvc:类型:文件系统体积:persistentVolumeClaim:accessModes:[“ReadWriteOnce”]资源:请求:存储:6胃肠道...
请注意
请注意,本例中指定的6Gi存储大小可能不足以满足实际设置;考虑使用数十或数百gb。此外,您可以稍后编辑此选项,更改将在应用更新后生效部署/ cr.yaml文件,kubectl.
启用备份压缩¶
有使能的可能LZ4压缩备份。
请注意
此特性仅适用于Percona XtraDB Cluster 8.0,不适雷竞技下载官网用于Percona XtraDB Cluster 5.7。
要启用压缩,请使用pxc.configuration输入部署/ cr.yaml配置文件为Percona XtraDB集群节点提供两个额外雷竞技下载官网的my.cnf在其(不锈钢)而且(xtrabackup)各节如下:
pxc:图像:雷竞技下载官网percona / percona-xtradb-cluster: 8.0.19-10.1配置:|...(不锈钢)xbstream-opts =——减压(xtrabackup)压缩= lz4...
启用后,压缩将用于备份和风场.
从以前保存的备份恢复集群¶
备份不仅可以在备份所在的Kubernetes集群上恢复,还可以在任何安装了Operator的基于Kubernetes的环境上恢复。
备份无法恢复来emptyDir和hostPath卷,但可以从这样的存储(即从emptyDir/hostPath备份到S3)进行备份,然后将其恢复到持久的卷.
请注意
当恢复到一个新的基于kubernetes的环境时,确保它的Secrets对象具有与原始集群中相同的用户密码。更多关于秘密的细节可以在系统用户.
恢复配置文件的示例为部署/备份/ restore.yaml.方法中描述了可以在其中使用的选项恢复选项参考.
恢复以前保存的备份需要以下操作:
确保集群正在运行。
找出正确的名称备份和集群.可用的备份可以用下面的命令列出:
$kubectl得到pxc-backup
请注意
显然,您只能在先前进行备份的同一集群上进行此检查。
下面的命令将列出当前基于kubernetes的环境中现有的Percona XtraDB集群雷竞技下载官网名称:
$kubectl得到pxc
恢复备份¶
当知道正确的备份名称和集群名称时,可以按照以下方式进行备份恢复。
中设置适当的键
部署/备份/ restore.yaml文件。集
spec.pxcCluster要在其上恢复备份的目标集群名称的键,上恢复备份相同用于保存此备份的基于kubernetes的集群,set
spec.backupName你的后援名字的钥匙,如果您正在基于kubernetes的集群上恢复备份不同的从您用来保存此备份的一个,set
spec.backupSource分段代替spec.backupName字段指向适当的PVC,或云存储:的
backupSourcekey应该包含存储名称(应该在主CR中配置)和PVC name:...backupSource:目的地:pvc / PVC_VOLUME_NAMEstorageName:聚氯乙烯...的
backupSource键应包含目的地key等于S3桶有一个特别的s3: / /前缀,后面跟着必要的S3配置键,与中的相同部署/ cr.yaml文件:...backupSource:目的地:s3: / / S3-BUCKET-NAME / BACKUP-NAMEs3:桶:S3-BUCKET-NAMEcredentialsSecret:my-cluster-name-backup-s3地区:us-west-2endpointUrl:https://URL-OF-THE-S3-COMPATIBLE-STORAGE...的
backupSource键应包含目的地键等于Azure Blob容器和备份名称,后面跟着必要的Azure配置键,与中的相同部署/ cr.yaml文件:...backupSource:目的地:AZURE-CONTAINER-NAME / BACKUP-NAMEazure:容器:AZURE-CONTAINER-NAMEcredentialsSecret:my-cluster-azure-secret...
恢复完成后,可以按照如下步骤启动实际恢复流程。
$kubectl应用- f部署/备份/ restore.yaml请注意
将备份设置存储在单独的文件中,可以通过将其内容传递给
kubectl应用命令如下:$猫<apiVersion:“pxc.p雷竞技下载官网ercona.com/v1”:“Perco雷竞技下载官网naXtraDBClusterRestore”元数据:名称:“restore1”规范:pxcCluster:“cluster1”backupName:“backup1”EOF
使用时间点恢复恢复备份¶
请注意
在恢复现有集群上的备份之前,禁用该集群上的时间点功能,无论备份是使用时间点恢复还是不使用时间点恢复。
如果启用了时间点恢复特性,则可以将其他恢复参数添加到restore.yaml文件pitr节进行最细粒度的恢复。
backupSource键应包含目的地Key等于s3桶的特殊值s3: / /前缀,后面跟着必要的S3配置键,与中的相同部署/ cr.yaml文件:s3: / / S3-BUCKET-NAME / BACKUP-NAME,类型Key可以等于以下选项之一,日期-回滚到指定日期,事务-回滚到特定事务(自Operator 1.8.0起可用),最新的-恢复到可能的最新交易,跳过-跳过一个特定的事务(自Operator 1.7.0起可用)。
日期键与类型=日期选项,包含datetime格式的值,gtidkey (Operator 1.8.0起可用)用于类型=事务选项,包含精确的GTID,如果您有必要的备份存储,请参见
backup.storages第部署/ cr.yaml配置文件,你可以设置backupSource.storageName输入部署/备份/ restore.yaml文件到相应的存储名称,如果没有必要的备份存储
部署/ cr.yaml,设置存储详细信息,而不是使用backupSource.storageName字段:...backupSource:s3:桶:S3-BUCKET-NAMEcredentialsSecret:my-cluster-name-backup-s3endpointUrl:https://URL-OF-THE-S3-COMPATIBLE-STORAGE地区:us-west-2...
由此产生的restore.yaml文件可能如下所示:
apiVersion:pxc.雷竞技下载官网percona.com/v1种类:雷竞技下载官网PerconaXtraDBClusterRestore元数据:名字:restore1规范:pxcCluster:cluster1backupName:backup1pitr:类型:日期日期:“2020-12-3109:37:13”backupSource:storageName:“s3-us-west”
实际恢复过程可以通过如下方式启动:
$kubectl应用- f部署/备份/ restore.yaml
请注意
将备份设置存储在单独的文件中,可以通过将其内容传递给kubectl应用命令如下:
$猫<apiVersion:“pxc.p雷竞技下载官网ercona.com/v1”:“Perco雷竞技下载官网naXtraDBClusterRestore”元数据:名称:“restore1”规范:pxcCluster:“cluster1”backupName:“backup1”pitr:类型:日期日期:“2020-12-31 09:37:13”backupSource:storageName:“s3-us-west”EOF
考虑到,操作员监视binlog采集器检测到的binlog间隙(如果raybet雷竞技竞猜在线官网有的话)。如果备份包含这样的间隙,操作员将用一个新的条件字段标记最近一次成功备份的状态,表明备份不能保证一致的时间点恢复。该条件如下所示:
apiVersion:pxc.雷竞技下载官网percona.com/v1种类:雷竞技下载官网PerconaXtraDBClusterBackup元数据:名字:backup1规范:pxcCluster:pitrstorageName:minio状态:完成:“2022 - 11 - 25 - t15:57:29z”条件:-lastTransitionTime:“2022 - 11 - 25 - t15:57:48z”消息:未找到GTID set e41eb219-6cd8-11ed-94c8-9ebf697d3d20:21-22的Binlog原因:BinlogGapDetected状态:“假”类型:PITRReady状态:成功
尝试从这样的备份(条件值为“False”)进行时间点恢复将导致以下错误:
备份并不能保证与PITR一致的恢复。用percona.雷竞技下载官网com/unsafe-pitr注释PerconaXtraDBClusterRestore来强制执行。
您可以禁用此检查并通过注释它来强制恢复pxc.雷竞技下载官网percona.com/unsafe-pitr如下:
apiVersion:pxc.雷竞技下载官网percona.com/v1种类:雷竞技下载官网PerconaXtraDBClusterRestore元数据:注释:雷竞技下载官网percona.com/unsafe-pitr:“真正的”名字:restore2规范:pxcCluster:pitrbackupName:backup1pitr:类型:最新的backupSource:storageName:“minio-binlogs”
删除不需要的备份¶
存储备份的最大数量由backup.schedule.keep选项(只计算成功的备份)。较旧的备份将自动删除,因此存储的备份数量不会超过此数量。设置保持= 0或将此选项从部署/ cr.yaml禁用自动删除备份功能。
手动删除以前保存的备份只需要备份名。该名称可以从以下命令返回的可用备份列表中获取:
$kubectl得到pxc-backup
在已知备份名称的情况下,删除备份的操作如下:
$kubectl删除pxc-backup / < backup-name >
拷贝备份到本地机器¶
为以前保存的备份创建本地副本只需要备份名。该名称可以从以下命令返回的可用备份列表中获取:
$kubectl得到pxc-backup
在已知备份名称的情况下,可以通过如下方式将备份文件下载到本地:
$/ /备份/ copy-backup.sh部署< backup-name >路径/ / dir
例如,这个下载的备份可以恢复到本地安装的Percona Server:雷竞技下载官网
$服务mysqld停止美元rm射频/var/lib/mysql/*美元猫xtrabackup.stream|xbstream- x- c/var/lib/mysql美元xtrabackup——准备——target-dir=/var/lib/mysql美元乔恩- rmysql: mysql/var/lib/mysql美元服务mysqld开始