本文档介绍用于备份与恢复的 Backup
、Restore
及 BackupSchedule
Custom Resource (CR) 资源的各字段,确保更好地对 Kubernetes 上的 TiDB 集群进行数据备份和数据恢复。
Backup CR 字段介绍
为了对 Kubernetes 上的 TiDB 集群进行数据备份,用户可以通过创建一个自定义的 Backup
CR 对象来描述一次备份,具体备份过程可参考数据备份中列出的文档。以下介绍 Backup CR 各个字段的具体含义。
通用字段介绍
-
.spec.metadata.namespace
:Backup
CR 所在的 namespace。 -
.spec.toolImage
:用于指定Backup
使用的工具镜像。TiDB Operator 从 v1.1.9 起支持这项配置。- 使用 BR 备份时,可以用该字段指定 BR 的版本:
- 如果未指定或者为空,默认使用镜像
pingcap/br:${tikv_version}
进行备份。 - 如果指定了 BR 的版本,例如
.spec.toolImage: pingcap/br:v5.3.0
,那么使用指定的版本镜像进行备份。 - 如果指定了镜像但未指定版本,例如
.spec.toolImage: private/registry/br
,那么使用镜像private/registry/br:${tikv_version}
进行备份。
- 如果未指定或者为空,默认使用镜像
- 使用 Dumpling 备份时,可以用该字段指定 Dumpling 的版本:
- 如果指定了 Dumpling 的版本,例如
spec.toolImage: pingcap/dumpling:v5.3.0
,那么使用指定的版本镜像进行备份。 - 如果未指定,默认使用 Backup Manager Dockerfile 文件中
TOOLKIT_VERSION
指定的 Dumpling 版本进行备份。
- 如果指定了 Dumpling 的版本,例如
- 使用 BR 备份时,可以用该字段指定 BR 的版本:
-
.spec.backupType
:指定 Backup 类型,该字段仅在使用 BR 备份时有效,目前支持以下三种类型,可以结合.spec.tableFilter
配置表库过滤规则:full
:对 TiDB 集群所有的 database 数据执行备份。db
:对 TiDB 集群一个 database 的数据执行备份。table
:对 TiDB 集群中指定表的数据执行备份。
-
.spec.tikvGCLifeTime
:备份中的临时tikv_gc_life_time
时间设置,默认为72h
。在备份开始之前,若 TiDB 集群的
tikv_gc_life_time
小于用户设置的spec.tikvGCLifeTime
,为了保证备份的数据不被 TiKV GC 掉,TiDB Operator 会在备份前调节 tikv_gc_life_time 为spec.tikvGCLifeTime
。备份结束后,不论成功或者失败,如果旧的
tikv_gc_life_time
小于设置的.spec.tikvGCLifeTime
,TiDB Operator 会尝试恢复tikv_gc_life_time
为备份前的旧值。在极端情况下,如果 TiDB Operator 访问数据库失败,TiDB Operator 将无法自动恢复tikv_gc_life_time
并认为备份失败。此时,可以通过下述语句查看当前 TiDB 集群的
tikv_gc_life_time
:select VARIABLE_NAME, VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME like "tikv_gc_life_time";
如果发现
tikv_gc_life_time
值过大(通常为 10m),则需要按照调节 tikv_gc_life_time 将tikv_gc_life_time
调回原样。 -
.spec.cleanPolicy
:备份集群后删除 Backup CR 时的备份文件清理策略。目前支持三种清理策略:-
Retain
:任何情况下,删除 Backup CR 时会保留备份出的文件。 -
Delete
:任何情况下,删除 Backup CR 时会删除备份出的文件。 -
OnFailure
:如果备份中失败,删除 Backup CR 时会删除备份出的文件。如果不配置该字段,或者配置该字段的值为上述三种以外的值,均会保留备份出的文件。值得注意的是,在 v1.1.2 以及之前版本不存在该字段,且默认在删除 CR 的同时删除备份的文件。若 v1.1.3 及之后版本的用户希望保持该行为,需要设置该字段为
Delete
。
-
-
.spec.cleanOption
:备份集群后删除 Backup CR 时的备份文件清理行为。更多说明请参阅清理备份文件 -
.spec.from.host
:待备份 TiDB 集群的访问地址,为需要导出的 TiDB 的 service name,例如basic-tidb
。 -
.spec.from.port
:待备份 TiDB 集群的访问端口。 -
.spec.from.user
:待备份 TiDB 集群的访问用户。 -
.spec.from.secretName
:存储.spec.from.user
用户的密码的 Secret。 -
.spec.from.tlsClientSecretName
:指定备份使用的存储证书的 Secret。如果 TiDB 集群开启了 TLS,但是不想使用文档中创建的
${cluster_name}-cluster-client-secret
进行备份,可以通过这个参数为备份指定一个 Secret,可以通过如下命令生成:kubectl create secret generic ${secret_name} --namespace=${namespace} --from