Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zh: document handle backup gc behavior and how to delete backup (#566) #575

Merged
merged 1 commit into from
Jul 16, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 44 additions & 3 deletions zh/backup-to-aws-s3-using-br.md
Original file line number Diff line number Diff line change
Expand Up @@ -310,13 +310,27 @@ Amazon S3 支持以下几种 `storageClass` 类型:

{{< copyable "shell-regular" >}}

```shell
kubectl get bk -n test1 -o wide
```
```shell
kubectl get bk -n test1 -o wide
```

更多 `Backup` CR 字段的详细解释:

* `.spec.metadata.namespace`:`Backup` CR 所在的 namespace。
* `.spec.tikvGCLifeTime`:备份中的临时 `tikv_gc_lifetime` 时间设置,默认为 72h。

在备份开始之前,若 TiDB 集群的 `tikv_gc_lifetime` 小于用户设置的 `spec.tikvGCLifeTime`,为了保证备份的数据不被 TiKV GC 掉,TiDB Operator 会在备份前[调节 `tikv_gc_lifetime`](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出大规模数据时的-tidb-gc-设置) 为 `spec.tikvGCLifeTime`。

备份结束后不论成功或者失败,只要老的 `tikv_gc_lifetime` 比设置的 `.spec.tikvGCLifeTime` 小,TiDB Operator 都会尝试恢复 `tikv_gc_lifetime` 为备份前的值。在极端情况下,TiDB Operator 访问数据库失败会导致 TiDB Operator 无法自动恢复 `tikv_gc_lifetime` 并认为备份失败。

此时,可以通过下述语句查看当前 TiDB 集群的 `tikv_gc_lifetime`:

```sql
select VARIABLE_NAME, VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME like "tikv_gc_life_time";
```

如果发现 `tikv_gc_lifetime` 值过大(通常为 10m),则需要按照[调节 `tikv_gc_lifetime`](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出大规模数据时的-tidb-gc-设置) 将 `tikv_gc_lifetime` 调回原样。

* `.spec.cleanData`:设置为 true 时删除该 Backup CR 时会同时清除该 CR 备份出的数据,默认为 false。值得注意的是,在 v1.1.2 以及之前版本不存在该字段,且默认在删除 CR 的同时删除备份的文件。若 v1.1.3 及之后版本的用户希望保持该行为,需要设置该字段为 true。
* `.spec.from.host`:待备份 TiDB 集群的访问地址,为需要导出的 TiDB 的 service name,例如 `basic-tidb`。
* `.spec.from.port`:待备份 TiDB 集群的访问端口。
Expand Down Expand Up @@ -517,3 +531,30 @@ kubectl get bk -l tidb.pingcap.com/backup-schedule=demo1-backup-schedule-s3 -n t
+ `.spec.maxReservedTime`:一种备份保留策略,按时间保留备份。例如将该参数设置为 `24h`,表示只保留最近 24 小时内的备份条目。超过这个时间的备份都会被清除。时间设置格式参考 [`func ParseDuration`](https://golang.org/pkg/time/#ParseDuration)。如果同时设置最大备份保留个数和最长备份保留时间,则以最长备份保留时间为准。
+ `.spec.schedule`:Cron 的时间调度格式。具体格式可参考 [Cron](https://en.wikipedia.org/wiki/Cron)。
+ `.spec.pause`:该值默认为 `false`。如果将该值设置为 `true`,表示暂停定时调度。此时即使到了调度时间点,也不会进行备份。在定时备份暂停期间,备份 Garbage Collection (GC) 仍然正常进行。将 `true` 改为 `false` 则重新开启定时全量备份。

## 删除备份的 backup CR

用户可以通过下述语句来删除对应的全量备份 CR 或定时全量备份 CR。

{{< copyable "shell-regular" >}}

```shell
kubectl delete backup ${name} -n ${namespace}
kubectl delete backupschedule ${name} -n ${namespace}
```

如果你使用 v1.1.2 及以前版本,或使用 v1.1.3 及以后版本并将 `spec.cleanData` 设置为 true 时,TiDB Operator 在删除 CR 时会同时删除备份文件。

在满足上述条件时,如果需要删除 namespace,建议首先删除所有的 Backup/BackupSchedule CR,再删除 namespace。

如果直接删除存在 Backup/BackupSchedule CR 的 namespace,TiDB Operator 会持续尝试创建 Job 清理备份的数据,但因为 namespace 处于 `Terminating` 状态而创建失败,从而导致 namespace 卡在该状态。

这时需要通过下述命令删除 `finalizers`:

{{< copyable "shell-regular" >}}

```shell
kubectl edit backup ${name} -n ${namespace}
```

删除 `metadata.finalizers` 配置,即可正常删除 CR。
41 changes: 41 additions & 0 deletions zh/backup-to-gcs-using-br.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,20 @@ Ad-hoc 全量备份通过创建一个自定义的 `Backup` custom resource (CR)
更多 `Backup` CR 字段的详细解释:

* `.spec.metadata.namespace`:`Backup` CR 所在的 namespace。
* `.spec.tikvGCLifeTime`:备份中的临时 `tikv_gc_lifetime` 时间设置,默认为 72h。

在备份开始之前,若 TiDB 集群的 `tikv_gc_lifetime` 小于用户设置的 `spec.tikvGCLifeTime`,为了保证备份的数据不被 TiKV GC 掉,TiDB Operator 会在备份前[调节 `tikv_gc_lifetime`](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出大规模数据时的-tidb-gc-设置) 为 `spec.tikvGCLifeTime`。

备份结束后不论成功或者失败,只要老的 `tikv_gc_lifetime` 比设置的 `.spec.tikvGCLifeTime` 小,TiDB Operator 都会尝试恢复 `tikv_gc_lifetime` 为备份前的值。在极端情况下,TiDB Operator 访问数据库失败会导致 TiDB Operator 无法自动恢复 `tikv_gc_lifetime` 并认为备份失败。

此时,可以通过下述语句查看当前 TiDB 集群的 `tikv_gc_lifetime`:

```sql
select VARIABLE_NAME, VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME like "tikv_gc_life_time";
```

如果发现 `tikv_gc_lifetime` 值过大(通常为 10m),则需要按照[调节 `tikv_gc_lifetime`](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出大规模数据时的-tidb-gc-设置) 将 `tikv_gc_lifetime` 调回原样。

* `.spec.cleanData`:设置为 true 时删除该 Backup CR 时会同时清除该 CR 备份出的数据,默认为 false。值得注意的是,在 v1.1.2 以及之前版本不存在该字段,且默认在删除 CR 的同时删除备份的文件。若 v1.1.3 及之后版本的用户希望保持该行为,需要设置该字段为 true。
* `.spec.from.host`:待备份 TiDB 集群的访问地址,为需要导出的 TiDB 的 service name,例如 `basic-tidb`。
* `.spec.from.port`:待备份 TiDB 集群的访问端口。
Expand Down Expand Up @@ -237,3 +251,30 @@ Ad-hoc 全量备份通过创建一个自定义的 `Backup` custom resource (CR)
+ `.spec.maxReservedTime`:一种备份保留策略,按时间保留备份。比如将该参数设置为 `24h`,表示只保留最近 24 小时内的备份条目。超过这个时间的备份都会被清除。时间设置格式参考[`func ParseDuration`](https://golang.org/pkg/time/#ParseDuration)。如果同时设置最大备份保留个数和最长备份保留时间,则以最长备份保留时间为准。
+ `.spec.schedule`:Cron 的时间调度格式。具体格式可参考 [Cron](https://en.wikipedia.org/wiki/Cron)。
+ `.spec.pause`:该值默认为 `false`。如果将该值设置为 `true`,表示暂停定时调度。此时即使到了调度时间点,也不会进行备份。在定时备份暂停期间,备份 [Garbage Collection (GC)](https://pingcap.com/docs-cn/stable/reference/garbage-collection/overview/) 仍然正常进行。将 `true` 改为 `false` 则重新开启定时全量备份。

## 删除备份的 backup CR

用户可以通过下述语句来删除对应的全量备份 CR 或定时全量备份 CR。

{{< copyable "shell-regular" >}}

```shell
kubectl delete backup ${name} -n ${namespace}
kubectl delete backupschedule ${name} -n ${namespace}
```

如果你使用 v1.1.2 及以前版本,或使用 v1.1.3 及以后版本并将 `spec.cleanData` 设置为 true 时,TiDB Operator 在删除 CR 时会同时删除备份文件。

在满足上述条件时,如果需要删除 namespace,建议首先删除所有的 Backup/BackupSchedule CR,再删除 namespace。

如果直接删除存在 Backup/BackupSchedule CR 的 namespace,TiDB Operator 会持续尝试创建 Job 清理备份的数据,但因为 namespace 处于 `Terminating` 状态而创建失败,从而导致 namespace 卡在该状态。

这时需要通过下述命令删除 `finalizers`:

{{< copyable "shell-regular" >}}

```shell
kubectl edit backup ${name} -n ${namespace}
```

删除 `metadata.finalizers` 配置,即可正常删除 CR。
45 changes: 45 additions & 0 deletions zh/backup-to-gcs.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,20 @@ GCS 支持以下几种 bucket ACL 策略:
更多 `Backup` CR 字段的详细解释:

* `.spec.metadata.namespace`:`Backup` CR 所在的 namespace。
* `.spec.tikvGCLifeTime`:备份中的临时 `tikv_gc_lifetime` 时间设置,默认为 72h。

在备份开始之前,若 TiDB 集群的 `tikv_gc_lifetime` 小于用户设置的 `spec.tikvGCLifeTime`,为了保证备份的数据不被 TiKV GC 掉,TiDB Operator 会在备份前[调节 `tikv_gc_lifetime`](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出大规模数据时的-tidb-gc-设置) 为 `spec.tikvGCLifeTime`。

备份结束后不论成功或者失败,只要老的 `tikv_gc_lifetime` 比设置的 `.spec.tikvGCLifeTime` 小,TiDB Operator 都会尝试恢复 `tikv_gc_lifetime` 为备份前的值。在极端情况下,TiDB Operator 访问数据库失败会导致 TiDB Operator 无法自动恢复 `tikv_gc_lifetime` 并认为备份失败。

此时,可以通过下述语句查看当前 TiDB 集群的 `tikv_gc_lifetime`:

```sql
select VARIABLE_NAME, VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME like "tikv_gc_life_time";
```

如果发现 `tikv_gc_lifetime` 值发现过大(通常为 10m),则需要按照[调节 `tikv_gc_lifetime`](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出大规模数据时的-tidb-gc-设置) 将 `tikv_gc_lifetime` 调回原样。

* `.spec.cleanData`:设置为 true 时删除该 Backup CR 时会同时清除该 CR 备份出的数据,默认为 false。值得注意的是,在 v1.1.2 以及之前版本不存在该字段,且默认在删除 CR 的同时删除备份的文件。若 v1.1.3 及之后版本的用户希望保持该行为,需要设置该字段为 true。
* `.spec.from.host`:待备份 TiDB 集群的访问地址,为需要导出的 TiDB 的 service name,例如 `basic-tidb`。
* `.spec.from.port`:待备份 TiDB 集群的访问端口。
Expand Down Expand Up @@ -245,3 +259,34 @@ kubectl get bks -n test1 -owide
> **注意:**
>
> TiDB Operator 会创建一个 PVC,这个 PVC 同时用于 Ad-hoc 全量备份和定时全量备份,备份数据会先存储到 PV,然后再上传到远端存储。如果备份完成后想要删掉这个 PVC,可以参考[删除资源](cheat-sheet.md#删除资源)先把备份 Pod 删掉,然后再把 PVC 删掉。
>
> 假如备份并上传到远端存储成功,TiDB Operator 会自动删除本地的备份文件。如果上传失败,则本地备份文件将被保留。

## 删除备份的 backup CR

用户可以通过下述语句来删除对应的全量备份 CR 或定时全量备份 CR。

{{< copyable "shell-regular" >}}

```shell
kubectl delete backup ${name} -n ${namespace}
kubectl delete backupschedule ${name} -n ${namespace}
```

如果你使用 v1.1.2 及以前版本,或使用 v1.1.3 及以后版本并将 `spec.cleanData` 设置为 true 时,TiDB Operator 在删除 CR 时会同时删除备份文件。

在满足上述条件时,如果需要删除 namespace,建议首先删除所有的 Backup/BackupSchedule CR,再删除 namespace。

如果直接删除存在 Backup/BackupSchedule CR 的 namespace,TiDB Operator 会持续尝试创建 Job 清理备份的数据,但因为 namespace 处于 `Terminating` 状态而创建失败,从而导致 namespace 卡在该状态。

同时 v1.1.2 及以前版本如果删除 Backup/BackupSchedule CR 时备份文件已被手动清除,也会出现卡在 `Terminating` 的情况。

这时需要通过下述命令删除 `finalizers`:

{{< copyable "shell-regular" >}}

```shell
kubectl edit backup ${name} -n ${namespace}
```

删除 `metadata.finalizers` 配置,即可正常删除 CR。
45 changes: 45 additions & 0 deletions zh/backup-to-s3.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,20 @@ Amazon S3 支持以下几种 `storageClass` 类型:
更多 `Backup` CR 字段的详细解释:

* `.spec.metadata.namespace`:`Backup` CR 所在的 namespace。
* `.spec.tikvGCLifeTime`:备份中的临时 `tikv_gc_lifetime` 时间设置,默认为 72h。

在备份开始之前,若 TiDB 集群的 `tikv_gc_lifetime` 小于用户设置的 `spec.tikvGCLifeTime`,为了保证备份的数据不被 TiKV GC 掉,TiDB Operator 会在备份前[调节 `tikv_gc_lifetime`](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出大规模数据时的-tidb-gc-设置) 为 `spec.tikvGCLifeTime`。

备份结束后不论成功或者失败,只要老的 `tikv_gc_lifetime` 比设置的 `.spec.tikvGCLifeTime` 小,TiDB Operator 都会尝试恢复 `tikv_gc_lifetime` 为备份前的值。在极端情况下,TiDB Operator 访问数据库失败会导致 TiDB Operator 无法自动恢复 `tikv_gc_lifetime` 并认为备份失败。

此时,可以通过下述语句查看当前 TiDB 集群的 `tikv_gc_lifetime`:

```sql
select VARIABLE_NAME, VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME like "tikv_gc_life_time";
```

如果发现 `tikv_gc_lifetime` 值过大(通常为 10m),则需要按照[调节 `tikv_gc_lifetime`](https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#导出大规模数据时的-tidb-gc-设置) 将 `tikv_gc_lifetime` 调回原样。

* `.spec.cleanData`:设置为 true 时删除该 Backup CR 时会同时清除该 CR 备份出的数据,默认为 false。值得注意的是,在 v1.1.2 以及之前版本不存在该字段,且默认在删除 CR 的同时删除备份的文件。若 v1.1.3 及之后版本的用户希望保持该行为,需要设置该字段为 true。
* `.spec.from.host`:待备份 TiDB 集群的访问地址,为需要导出的 TiDB 的 service name,例如 `basic-tidb`。
* `.spec.from.port`:待备份 TiDB 集群的访问端口。
Expand Down Expand Up @@ -520,3 +534,34 @@ kubectl get bk -l tidb.pingcap.com/backup-schedule=demo1-backup-schedule-s3 -n t
> **注意:**
>
> TiDB Operator 会创建一个 PVC,这个 PVC 同时用于 Ad-hoc 全量备份和定时全量备份,备份数据会先存储到 PV,然后再上传到远端存储。如果备份完成后想要删掉这个 PVC,可以参考[删除资源](cheat-sheet.md#删除资源)先把备份 Pod 删掉,然后再把 PVC 删掉。
>
> 假如备份并上传到远端存储成功,TiDB Operator 会自动删除本地的备份文件。如果上传失败,则本地备份文件将被保留。

## 删除备份的 backup CR

用户可以通过下述语句来删除对应的全量备份 CR 或定时全量备份 CR。

{{< copyable "shell-regular" >}}

```shell
kubectl delete backup ${name} -n ${namespace}
kubectl delete backupschedule ${name} -n ${namespace}
```

如果你使用 v1.1.2 及以前版本,或使用 v1.1.3 及以后版本并将 `spec.cleanData` 设置为 true 时,TiDB Operator 在删除 CR 时会同时删除备份文件。

在满足上述条件时,如果需要删除 namespace,建议首先删除所有的 Backup/BackupSchedule CR,再删除 namespace。

如果直接删除存在 Backup/BackupSchedule CR 的 namespace,TiDB Operator 会持续尝试创建 Job 清理备份的数据,但因为 namespace 处于 `Terminating` 状态而创建失败,从而导致 namespace 卡在该状态。

同时 v1.1.2 及以前版本如果删除 Backup/BackupSchedule CR 时备份文件已被手动清除,也会出现卡在 `Terminating` 的情况。

这时需要通过下述命令删除 `finalizers`:

{{< copyable "shell-regular" >}}

```shell
kubectl edit backup ${name} -n ${namespace}
```

删除 `metadata.finalizers` 配置,即可正常删除 CR。