提供备份¶
操作员可以通过两种方式进行备份。定期备份配置的部署/ cr.yaml文件在适当的时间自动执行。按需备份随时可以手工完成。
操作员使用开源的pgBackRest备份和恢复实用工具。
备份存储库¶
一个特殊的pgBackRest库是由操作员一起创建一个新的集群PostgreSQL促进pgBackRest特性的用法。
操作员可以使用以下变体Kubernetes以外的云存储集群保持PostgreSQL备份:
- Amazon S3,或任何S3-compatible存储,
- 谷歌云存储,
- Azure Blob存储
还可以备份存储在Kubernetes,只是在一个持久的卷附加到pgBackRest豆荚。
每个pgBackRest存储库包括以下Kubernetes对象:
- 部署,
- 一个秘密包含特定信息到PostgreSQL集群(例如SSH密钥,AWS S3键,等等),
- Pod与一些支持脚本,
- 一个服务。
你可以有多达4 pgBackRest库命名为repo1,repo2,repo3,repo4。
备份类型¶
PostgreSQL运营商支持三种类型的pgBackRest备份:
完整的:所有的内容的完整备份PostgreSQL集群,微分:只备份自上次完全备份,修改过的文件增量:只备份自上次修改过的文件全部或微分备份。增量备份是默认选择。
备份保留¶
操作员还支持设置pgBackRest保留政策全面、微分备份。当一个完整备份根据保留政策到期,pgBackRest清理与此相关的所有文件备份和写前日志。所以,到期的完全备份和增量备份的基础上它导致到期的所有增量备份。
备份保留可以由以下pgBackRest选项:
——<回购名称> -retention-full完整备份保留多少,——<回购名称> -retention-diff微分备份保留多少。
备份保留类型可以是数(备份的数量保持)或时间(备份应该保留的天数)。
你可以设置备份类型为每个4存储库和保留策略如下。
备份:pgbackrest:…全球:repo1-retention-full:“14”repo1-retention-full-type:时间…
备份存储¶
你应该为你的存储库配置备份存储backups.pgbackrest.repos部分的部署/ cr.yaml配置文件。
配置S3-compatible备份存储¶
为了使用S3-compatible存储备份您需要提供一些S3-related信息,比如适当的S3 bucket名称、端点等。这些信息可以通过以下pgBackRest传递部署/ cr.yaml选项的backups.pgbackrest.repos分段:
桶指定应该使用AWS S3 bucket,例如my-postgresql-backups-example,端点指定了S3端点应该利用,例如s3.amazonaws.com,地区指定了AWS S3地区应利用,例如us-east-1。
您还需要提供pgBackRest base64编码AWS S3键和AWS S3键秘密存储以及其他敏感信息Kubernetes秘密。
把你的AWS S3键和AWS S3键秘密的base64编码pgBackRest配置pgBackRest库名称。的情况下
repo1存储库可以如下:美元猫< < EOF | base64 -包= 0(全球)repo1-s3-key = < YOUR_AWS_S3_KEY >repo1-s3-key-secret = < YOUR_AWS_S3_KEY_SECRET >EOF美元猫< < EOF | base64(全球)repo1-s3-key = < YOUR_AWS_S3_KEY >repo1-s3-key-secret = < YOUR_AWS_S3_KEY_SECRET >EOF创建配置文件的秘密了base64编码字符串如下
cluster1-pgbackrest-secrets.yaml例子:apiVersion:v1类:秘密元数据:的名字:cluster1-pgbackrest-secrets类型:不透明的数据:s3.conf:< base64-encoded-configuration-contents >请注意
这个秘密可以存储凭证数库作为单独的数据键。
当完成时,创建对象从这个yaml文件的秘密:
美元kubectl应用- fcluster1-pgbackrest-secrets.yaml更新你的
部署/ cr.yaml配置与S3的凭证的秘密backups.pgbackrest.configuration分段,把其他所有S3相关信息的选择你的一个存储库中backups.pgbackrest.repos分段。例如,S3存储的repo1库,如下所示。…备份:pgbackrest:…配置:- - - - - -秘密:的名字:cluster1-pgbackrest-secrets…回购:- - - - - -的名字:repo1s3:桶:“< YOUR_AWS_S3_BUCKET_NAME >”端点:“< YOUR_AWS_S3_ENDPOINT >”地区:“< YOUR_AWS_S3_REGION >”最后,创建或更新集群:
美元kubectl应用- f部署/ cr.yaml
配置谷歌云存储备份¶
您可以配置谷歌云存储作为对象存储备份与S3存储。
为了使用谷歌云存储(GCS)备份您需要提供一个合适的GCS桶的名字。Bucket名称可以通过pgBackRest通过gcs.bucket的关键backups.pgbackrest.repos分段的部署/ cr.yaml。
运营商也将需要你的服务帐户访问存储的关键。
- 创建您的服务帐户后的关键谷歌官方云指令。
从你的谷歌云账户出口这个关键。
你可以找到在谷歌云控制台(选择的关键我&管理→服务帐户在左边菜单面板,然后单击您的帐户并打开键选项卡):
单击添加关键按钮,选择创建新的密钥和选择JSON作为一个关键类型。这些行为将导致以JSON格式下载文件和你的新私有密钥和相关信息。
现在你应该创建Kubernetes秘密使用base64编码版本的两个文件:包含私钥您刚刚下载的文件,和特别的
gcs.conf配置文件。的内容
gcs.conf文件取决于存储库名称。的情况下repo1库,它看起来如下:(全球)repo1-gcs-key = / etc / pgbackrest / conf.d / gcs-key.json你可以编码的文本文件
base64 -包= 0 <文件名>命令(或者只是base64 <文件名>苹果macOS)。当完成时,请创建以下yaml文件与您的集群名称和base64编码文件内容如下cluster1-pgbackrest-secrets.yaml例子:apiVersion:v1类:秘密元数据:的名字:cluster1-pgbackrest-secrets类型:不透明的数据:gcs-key.json:< base64-encoded-json-file-contents >gcs.conf:< base64-encoded-conf-file-contents >请注意
这个秘密可以存储凭证数库作为单独的数据键。
创建对象从这个YAML文件的秘密:
美元kubectl应用- fcluster1-pgbackrest-secrets.yaml更新你的
部署/ cr.yaml配置和你的秘密GCS凭证backups.pgbackrest.configuration分段,把GCS在桶的名字桶选择你的一个存储库中backups.pgbackrest.repos分段。例如,GCS存储的repo3库,如下所示。…备份:pgbackrest:…配置:- - - - - -秘密:的名字:cluster1-pgbackrest-secrets…回购:- - - - - -的名字:repo3gcs:桶:“< YOUR_GCS_BUCKET_NAME >”最后,创建或更新集群:
美元kubectl应用- f部署/ cr.yaml
配置Azure Blob存储备份¶
为了使用微软Azure Blob存储用于备份您需要提供一个合适的Azure容器名称。它可以传递给pgBackRest通过azure.container的关键backups.pgbackrest.repos分段的部署/ cr.yaml。
操作人员还需要一个Kubernetes秘密Azure存储凭证访问存储。
把Azure存储帐户名称和关键的base64编码与pgBackRest pgBackRest配置存储库名称。的情况下
repo1存储库可以如下:美元猫< < EOF | base64 -包= 0(全球)repo1-azure-account = < AZURE_STORAGE_ACCOUNT_NAME >repo1-azure-key = < AZURE_STORAGE_ACCOUNT_KEY >EOF美元猫< < EOF | base64(全球)repo1-azure-account = < AZURE_STORAGE_ACCOUNT_NAME >repo1-azure-key = < AZURE_STORAGE_ACCOUNT_KEY >EOF创建配置文件的秘密了base64编码字符串如下
cluster1-pgbackrest-secrets.yaml例子:apiVersion:v1类:秘密元数据:的名字:cluster1-pgbackrest-secrets类型:不透明的数据:azure.conf:< base64-encoded-configuration-contents >请注意
这个秘密可以存储凭证数库作为单独的数据键。
当完成时,创建对象从这个yaml文件的秘密:
美元kubectl应用- fcluster1-pgbackrest-secrets.yaml更新你的
部署/ cr.yaml配置的Azure存储凭证的秘密backups.pgbackrest.configuration分段,把Azure容器名称的选择你的一个存储库中backups.pgbackrest.repos分段。例如,Azure存储的repo1库,如下所示。…备份:pgbackrest:…配置:- - - - - -秘密:的名字:cluster1-pgbackrest-secrets…回购:- - - - - -的名字:repo1azure:容器:“< YOUR_AZURE_CONTAINER >”最后,创建或更新集群:
美元kubectl应用- f部署/ cr.yaml
调度备份¶
备份计划中定义的每一个存储库的基础上backups.pgbackrest.repos分段的部署/ cr.yaml文件。您可以为每个存储库提供时间表。<备份类型>关键等于实际的时间表crontab中指定的格式。
这是一个例子部署/ cr.yaml它使用repo1库备份:
…备份:pgbackrest:…回购:- - - - - -的名字:repo1日程安排:完整的:“00**6”微分:“01**1 - 6”…
crontab格式中指定的时间表是在解释道自定义资源的选择。
做备份¶
做一个备份,用户应该使用备份配置文件。备份配置文件的例子部署/ backup.yaml:
apiVersion:pg.雷竞技下载官网percona.com/v2beta1类:雷竞技下载官网PerconaPGBackup元数据:的名字:backup1规范:pgCluster:cluster1repoName:repo1#选项:# - - - - - - - - - type =
填补它与适当的库名称用于备份,以及任何需要pgBackRest命令行选项。
当备份选项配置,实际执行备份命令:
美元kubectl应用- f部署/ backup.yaml
从以前保存的备份恢复集群¶
运营商支持PostgreSQL集群上执行一个完整的恢复能力以及point-in-time-recovery。有两种类型的方法来恢复一个集群:
- 恢复到一个新的集群使用dataSource.postgresCluster分段,
- 恢复原状,向现有集群(注意,这是破坏性的)使用backups.restore分段。
恢复到现有集群PostgreSQL¶
恢复用户应该使用以前保存的备份备份恢复配置文件。备份配置文件的例子部署/ restore.yaml:
apiVersion:pg.雷竞技下载官网percona.com/v2beta1类:雷竞技下载官网PerconaPGRestore元数据:的名字:restore1规范:pgCluster:cluster1repoName:repo1选项:- - - - - -- type =时间- - - - - -——目标=“2022-11-30 15:12:11 + 03”
以下键是最重要的:
pgCluster指定集群的名称,repoName指定的名称4 pgBackRest库之一,已经配置backups.pgbackrest.repos分段,选项通过任何pgBackRest命令行选项。
实际的恢复过程可以开始如下:
美元kubectl应用- f部署/ restore.yaml
集群与恢复时间点恢复¶
时间点恢复功能允许用户恢复数据库之前回状态发生意外变化。
您可以设置一个时间点恢复使用pgBackRest很少有额外的正常恢复命令spec.options字段部署/ restore.yaml:
- 集
——类型选项时间, - 集
——目标你想要恢复到一个特定的时间。您可以使用典型的格式化为字符串< YYYY-MM-DD HH: MM:弟弟>可选地,后面可以跟一个时区偏移:“2021-04-16 15:13:32 + 00”(+ 00在上面的例子中意味着UTC), - 可选
——设置参数允许您选择备份将的起点时间点恢复(查看可用的备份找出适当的备份名称)。必须指定这个选项如果目标是一个或多个备份远离当前的时刻。
在设置这些选项备份恢复配置文件,遵循标准的恢复指令。
请注意
确保你有一个备份,年龄比你想要的时间点。你显然不能恢复的时间你没有备份。所有相关的日志文件写前必须成功地推动之前恢复。
恢复到一个新的PostgreSQL集群¶
恢复到一个新的PostgreSQL集群允许您进行备份并创建一个新的集群PostgreSQL,可以与一个现有的运行。有几个场景使用这种技术是有用的:
- PostgreSQL集群的创建一个副本,可以用于其他目的。把这是另一种方式创建一个克隆。
- 恢复时间点,检查数据的状态而不影响当前的集群。
创建一个新的集群PostgreSQL从活跃的一个,或前集群的pgBackRest库仍然存在,使用dataSource.postgresCluster分段选项。本节的内容应该复制备份键的原始集群的需要进行恢复:
dataSource.postgresCluster.clusterName应该包含新集群的名称,dataSource.postgresCluster.options允许你设置需要pgBackRest命令行选项,dataSource.postgresCluster.repoName应该包含pgBackRest库的名称,而实际的存储配置键应该放在这个仓库dataSource.pgbackrest.repo分段,dataSource.pgbackrest.configuration.secret.name应该包含的名称Kubernetes秘密凭证需要访问云存储,如果任何。