Skip to content

Commit

Permalink
Refine BR words (#12022) (#12139)
Browse files Browse the repository at this point in the history
  • Loading branch information
ti-chi-bot authored Nov 28, 2022
1 parent 4399dcb commit 5b96e08
Show file tree
Hide file tree
Showing 19 changed files with 132 additions and 123 deletions.
2 changes: 1 addition & 1 deletion br/backup-and-restore-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ summary: 了解 TiDB 的备份与恢复功能的架构设计。

# TiDB 备份与恢复功能架构概述

正如 [TiDB 备份与恢复概述](/br/backup-and-restore-overview.md)所介绍,TiDB 备份恢复功能包含了多种不同类型的集群数据对象的备份与恢复实现。这些功能都以 BR 和 TiDB Operator 为使用入口,创建相应的任务从 TiKV 节点上备份数据,或者恢复数据到 TiKV 节点。
正如 [TiDB 备份与恢复概述](/br/backup-and-restore-overview.md)所介绍,TiDB 备份恢复功能包含了多种不同类型的集群数据对象的备份与恢复实现。这些功能都以 Backup & Restore (BR) 和 TiDB Operator 为使用入口,创建相应的任务从 TiKV 节点上备份数据,或者恢复数据到 TiKV 节点。

关于各种备份恢复功能的实现架构,请参考以下链接:

Expand Down
10 changes: 5 additions & 5 deletions br/backup-and-restore-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ summary: 了解不同场景下如何使用 TiDB 的备份与恢复功能,以

# TiDB 备份与恢复概述

基于 Raft 协议和合理的部署拓扑规划,TiDB 实现了集群的高可用,当集群中少数节点挂掉时,集群依然能对外提供服务。在此基础上,为了更进一步保证用户数据的安全,TiDB 还提供了集群的备份与恢复功能,作为数据安全的最后一道防线,使得集群能够免于严重的自然灾害,提供业务误操作“复原”的能力。
基于 Raft 协议和合理的部署拓扑规划,TiDB 实现了集群的高可用,当集群中少数节点挂掉时,集群依然能对外提供服务。在此基础上,为了更进一步保证用户数据的安全,TiDB 还提供了集群的备份与恢复 (Backup & Restore, BR) 功能,作为数据安全的最后一道防线,使得集群能够免于严重的自然灾害,提供业务误操作“复原”的能力。

TiDB 备份恢复功能可以用于满足以下业务的需求:

Expand Down Expand Up @@ -60,7 +60,7 @@ TiDB 备份恢复功能可以用于满足以下业务的需求:

- 恢复到集群的历史任意时间点 (PITR)

- 通过 `br restore point` 功能。你可以指定要恢复的时间点,恢复时间点之前最近的快照数据备份,以及日志备份数据。br 会自动判断和读取恢复需要的数据,然后将这些数据依次恢复到指定的集群。
- 通过 `br restore point` 功能。你可以指定要恢复的时间点,恢复时间点之前最近的快照数据备份,以及日志备份数据。BR 会自动判断和读取恢复需要的数据,然后将这些数据依次恢复到指定的集群。

#### 恢复的性能

Expand Down Expand Up @@ -101,17 +101,17 @@ TiDB 支持将数据备份到 Amazon S3、Google Cloud Storage (GCS)、Azure Blo

### 兼容性

在使用 BR 之前,需要先了解 BR 与其他功能的兼容性以及使用限制
在使用备份恢复功能之前,需要先了解 BR 工具与其他功能的兼容性以及使用限制

#### 与其他功能的兼容性

某些功能在开启或关闭状态下,会导致 BR 功能使用出错。因此需要保证恢复集群的这些配置,与备份集群备份时的配置相同。
某些功能在开启或关闭状态下,会导致备份恢复功能使用出错。因此需要保证恢复集群的这些配置,与备份集群备份时的配置相同。

| 功能 | 相关 issue | 解决方式 |
| ---- | ---- | ----- |
|GBK charset|| BR 在 v5.4.0 之前不支持恢复 `charset=GBK` 的表。并且,任何版本的 BR 都不支持恢复 `charset=GBK` 的表到 v5.4.0 之前的 TiDB 集群。|
| 聚簇索引 | [#565](https://github.com/pingcap/br/issues/565) | 确保恢复时集群的 `tidb_enable_clustered_index` 全局变量和备份时一致,否则会导致数据不一致的问题,例如 `default not found` 和数据索引不一致。 |
| New collation | [#352](https://github.com/pingcap/br/issues/352) | 确保恢复时集群的 `new_collations_enabled_on_first_bootstrap` 变量值和备份时的一致,否则会导致数据索引不一致和 checksum 通不过。更多信息,请参考 [FAQ - BR 为什么会报 `new_collations_enabled_on_first_bootstrap` 不匹配?](/faq/backup-and-restore-faq.md#br-为什么会报-new_collations_enabled_on_first_bootstrap-不匹配)|
| New collation | [#352](https://github.com/pingcap/br/issues/352) | 确保恢复时集群的 `new_collations_enabled_on_first_bootstrap` 变量值和备份时的一致,否则会导致数据索引不一致和 checksum 通不过。更多信息,请参考 [FAQ - BR 为什么会报 `new_collations_enabled_on_first_bootstrap` 不匹配?](/faq/backup-and-restore-faq.md#恢复时为什么会报-new_collations_enabled_on_first_bootstrap-不匹配)|
| 全局临时表 | | 确保使用 BR v5.3.0 及以上版本进行备份和恢复,否则会导致全局临时表的表定义错误。 |
| TiDB Lightning Physical Import| |上游数据库使用 TiDB Lightning Physical 方式导入的数据,无法作为数据日志备份下来。推荐在数据导入后执行一次全量备份,细节参考[上游数据库使用 TiDB Lightning Physical 方式导入数据的恢复](/faq/backup-and-restore-faq.md#上游数据库使用-tidb-lightning-physical-方式导入数据时为什么无法使用日志备份功能)|

Expand Down
42 changes: 21 additions & 21 deletions br/backup-and-restore-storages.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,14 @@ TiDB 支持 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage 和 NFS

```shell
./br backup full --pd "${PD_IP}:2379" \
--storage 'gcs://external/backup-20220915?credentials-file=${credentials-file-path}'
--storage "gcs://external/backup-20220915?credentials-file=${credentials_file_path}"
```

**从 GCS 恢复快照备份数据**

```shell
./br restore full --pd "${PD_IP}:2379" \
--storage 'gcs://external/backup-20220915?credentials-file=${credentials-file-path}'
--storage "gcs://external/backup-20220915?credentials-file=${credentials_file_path}"
```

</div>
Expand All @@ -104,14 +104,14 @@ TiDB 支持 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage 和 NFS

```shell
./br backup full -u "${PD_IP}:2379" \
--storage "azure://external/backup-20220915?account-name=${account name}&account-key=${account key}"
--storage "azure://external/backup-20220915?account-name=${account_name}&account-key=${account_key}"
```

**从 Azure Blob Storage 恢复快照备份数据中 `test` 数据库**

```shell
./br restore db --db test -u "${PD_IP}:2379" \
--storage "azure://external/backup-20220915account-name=${account name}&account-key=${account key}"
--storage "azure://external/backup-20220915account-name=${account_name}&account-key=${account_key}"
```

</div>
Expand All @@ -124,10 +124,10 @@ TiDB 支持 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage 和 NFS
<SimpleTab groupId="storage">
<div label="Amazon S3" value="amazon">

在备份之前,需要为 BR 访问 Amazon S3 中的备份目录设置相应的访问权限:
在备份之前,需要为 br 命令行工具访问 Amazon S3 中的备份目录设置相应的访问权限:

- 备份时 TiKV 和 BR 需要的访问备份数据目录的最小权限`s3:ListBucket``s3:PutObject``s3:AbortMultipartUpload`
- 恢复时 TiKV 和 BR 需要的访问备份数据目录的最小权限`s3:ListBucket``s3:GetObject`
- 备份时 TiKV 和 br 命令行工具需要的访问备份数据目录的最小权限`s3:ListBucket``s3:PutObject``s3:AbortMultipartUpload`
- 恢复时 TiKV 和 br 命令行工具需要的访问备份数据目录的最小权限`s3:ListBucket``s3:GetObject`

如果你还没有创建备份数据保存目录,可以参考 [创建存储桶](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/user-guide/create-bucket.html)在指定的区域中创建一个 S3 存储桶。如果需要使用文件夹,可以参考 [使用文件夹在 Amazon S3 控制台中组织对象](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/user-guide/create-folder.html)在存储桶中创建一个文件夹。

Expand All @@ -137,14 +137,14 @@ TiDB 支持 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage 和 NFS

如果指定访问密钥和秘密访问密钥,将按照指定的访问密钥和秘密访问密钥进行鉴权。除了在 URL 中指定密钥外,还支持以下方式:

- BR 读取 `$AWS_ACCESS_KEY_ID``$AWS_SECRET_ACCESS_KEY` 环境变量
- BR 读取 `$AWS_ACCESS_KEY``$AWS_SECRET_KEY` 环境变量
- BR 读取共享凭证文件,路径由 `$AWS_SHARED_CREDENTIALS_FILE` 环境变量指定
- BR 读取共享凭证文件,路径为 `~/.aws/credentials`
- br 命令行工具读取 `$AWS_ACCESS_KEY_ID``$AWS_SECRET_ACCESS_KEY` 环境变量
- br 命令行工具读取 `$AWS_ACCESS_KEY``$AWS_SECRET_KEY` 环境变量
- br 命令行工具读取共享凭证文件,路径由 `$AWS_SHARED_CREDENTIALS_FILE` 环境变量指定
- br 命令行工具读取共享凭证文件,路径为 `~/.aws/credentials`

- 方式二:基于 IAM Role 进行访问

为运行 TiKV 和 BR 的 EC2 实例关联一个配置了访问 S3 访问权限的 IAM role。正确设置后,BR 可以直接访问对应的 S3 中的备份目录,而不需要额外的设置。
为运行 TiKV 和 br 命令行工具的 EC2 实例关联一个配置了访问 S3 访问权限的 IAM role。正确设置后,br 命令行工具可以直接访问对应的 S3 中的备份目录,而不需要额外的设置。

```shell
br backup full --pd "${PD_IP}:2379" \
Expand All @@ -156,20 +156,20 @@ TiDB 支持 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage 和 NFS

配置访问 GCS 的账户可以通过指定访问密钥的方式。如果指定了 `credentials-file` 参数,将按照指定的 `credentials-file` 进行鉴权。除了在 URL 中指定密钥文件外,还支持以下方式:

- BR 读取位于 `$GOOGLE_APPLICATION_CREDENTIALS` 环境变量所指定路径的文件内容
- BR 读取位于 `~/.config/gcloud/application_default_credentials.json` 的文件内容
- br 命令行工具读取位于 `$GOOGLE_APPLICATION_CREDENTIALS` 环境变量所指定路径的文件内容
- br 命令行工具读取位于 `~/.config/gcloud/application_default_credentials.json` 的文件内容
- 在 GCE 或 GAE 中运行时,从元数据服务器中获取的凭证

</div>
<div label="Azure Blob Storage" value="azure">

- 方式一:指定访问密钥

在 URL 配置 `account-name``account-key`,则使用该参数指定的密钥。除了在 URL 中指定密钥文件外,还支持 BR 读取 `$AZURE_STORAGE_KEY` 的方式。
在 URL 配置 `account-name``account-key`,则使用该参数指定的密钥。除了在 URL 中指定密钥文件外,还支持 br 命令行工具读取 `$AZURE_STORAGE_KEY` 的方式。

- 方式二:使用 Azure AD 备份恢复

BR 运行环境配置环境变量 `$AZURE_CLIENT_ID``$AZURE_TENANT_ID``$AZURE_CLIENT_SECRET`
br 命令行工具运行环境配置环境变量 `$AZURE_CLIENT_ID``$AZURE_TENANT_ID``$AZURE_CLIENT_SECRET`

- 当集群使用 TiUP 启动时,TiKV 会使用 systemd 服务。以下示例介绍如何为 TiKV 配置上述三个环境变量:

Expand Down Expand Up @@ -199,19 +199,19 @@ TiDB 支持 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage 和 NFS
systemctl restart tikv-24000
```

- 为命令行启动的 TiKV 和 BR 配置 Azure AD 的信息,只需要确定运行环境中存在 `$AZURE_CLIENT_ID``$AZURE_TENANT_ID``$AZURE_CLIENT_SECRET`。通过运行下列命令行,可以确认 BR 和 TiKV 运行环境中是否存在这三个环境变量:
- 为命令行启动的 TiKV 和 br 命令行工具配置 Azure AD 的信息,只需要确定运行环境中存在 `$AZURE_CLIENT_ID``$AZURE_TENANT_ID``$AZURE_CLIENT_SECRET`。通过运行下列命令行,可以确认 br 命令行工具和 TiKV 运行环境中是否存在这三个环境变量:

```shell
echo $AZURE_CLIENT_ID
echo $AZURE_TENANT_ID
echo $AZURE_CLIENT_SECRET
```

- 使用 BR 将数据备份至 Azure Blob Storage:
- 使用 br 命令行工具将数据备份至 Azure Blob Storage:

```shell
./br backup full -u "${PD_IP}:2379" \
--storage "azure://external/backup-20220915?account-name=${account name}"
--storage "azure://external/backup-20220915?account-name=${account_name}"
```

</div>
Expand All @@ -221,8 +221,8 @@ TiDB 支持 Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage 和 NFS

### Amazon S3 存储服务端加密备份数据

BR 支持对备份到 Amazon S3 的数据进行 S3 服务端加密 (SSE)。BR S3 服务端加密也支持使用用户自行创建的 AWS KMS 密钥,详细信息请参考 [BR S3 服务端加密](/encryption-at-rest.md#br-s3-服务端加密)。
TiDB 备份恢复功能支持对备份到 Amazon S3 的数据进行 S3 服务端加密 (SSE)。S3 服务端加密也支持使用用户自行创建的 AWS KMS 密钥,详细信息请参考 [BR S3 服务端加密](/encryption-at-rest.md#br-s3-服务端加密)。

## 存储服务其他功能支持

v6.3.0 起,BR 支持 AWS S3 Object Lock 功能。你可以在 AWS 中开启 [S3 Object Lock](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html) 功能来防止备份数据写入后被修改或者删除。
TiDB 备份恢复功能从 v6.3.0 支持 AWS S3 Object Lock 功能。你可以在 AWS 中开启 [S3 Object Lock](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html) 功能来防止备份数据写入后被修改或者删除。
18 changes: 9 additions & 9 deletions br/backup-and-restore-use-cases.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ summary: 介绍 TiDB 备份与恢复的具体使用示例,包括推荐环境

通过 TiDB 提供的 PITR 功能,你可以满足业务团队的需求。

## 部署 TiDB 集群和 BR
## 部署 TiDB 集群和 br 命令行工具

使用 PITR 功能,需要部署 v6.2.0 或以上版本的 TiDB 集群,并且更新 BR 到与 TiDB 集群相同的版本,本文假设使用的是 v6.4.0 版本。
使用 PITR 功能,需要部署 v6.2.0 或以上版本的 TiDB 集群,并且更新 br 命令行工具到与 TiDB 集群相同的版本,本文假设使用的是 v6.4.0 版本。

下表介绍了在 TiDB 集群中使用日志备份功能的推荐配置。

Expand All @@ -25,20 +25,20 @@ summary: 介绍 TiDB 备份与恢复的具体使用示例,包括推荐环境
| TiDB | 8 核+ | 16 GB+ | SAS | c5.2xlarge | 2 |
| PD | 8 核+ | 16 GB+ | SSD | c5.2xlarge | 3 |
| TiKV | 8 核+ | 32 GB+ | SSD | m5.2xlarge | 3 |
| BR | 8 核+ | 16 GB+ | SAS | c5.2xlarge | 1 |
| br cli | 8 核+ | 16 GB+ | SAS | c5.2xlarge | 1 |
| 监控 | 8 核+ | 16 GB+ | SAS | c5.2xlarge | 1 |

> **注意:**
>
> - BR 执行备份恢复功能需要访问 PD 和 TiKV,请确保 BR 与所有 PD 和 TiKV 连接正常。
> - BR 与 PD 所在服务器时区需要相同。
> - br 命令行工具执行备份恢复功能需要访问 PD 和 TiKV,请确保 br 命令行工具与所有 PD 和 TiKV 连接正常。
> - br 命令行工具与 PD 所在服务器时区需要相同。
使用 TiUP 部署或升级 TiDB 集群:

- 如果没有部署 TiDB 集群,请[部署 TiDB 集群](/production-deployment-using-tiup.md)
- 如果已经部署的 TiDB 集群版本低于 v6.2.0,请[升级 TiDB 集群](/upgrade-tidb-using-tiup.md)

使用 TiUP 安装或升级 BR
使用 TiUP 安装或升级 br 命令行工具

- 安装:

Expand Down Expand Up @@ -67,10 +67,10 @@ summary: 介绍 TiDB 备份与恢复的具体使用示例,包括推荐环境
1. 创建 bucket。你也可以选择已有的 S3 bucket 来保存备份数据。如果没有可用的 bucket,可以参照 [AWS 官方文档](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/user-guide/create-bucket.html)创建一个 S3 Bucket。本文使用的 bucket 名为 `tidb-pitr-bucket`
2. 创建备份数据总目录。在上一步创建的 bucket(例如 `tidb-pitr-bucket`)下创建目录 `backup-data`,参考 [AWS 官方文档](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/user-guide/create-folder.html)。

2. 配置 BR 和 TiKV 访问 S3 中的备份目录的权限。本文推荐使用最安全的 IAM 访问方式,配置过程可以参考[控制存储桶访问](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/walkthrough1.html)。权限要求如下:
2. 配置 br 命令行工具和 TiKV 访问 S3 中的备份目录的权限。本文推荐使用最安全的 IAM 访问方式,配置过程可以参考[控制存储桶访问](https://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/walkthrough1.html)。权限要求如下:

- 备份集群的 TiKV 和 BR 需要的 `s3://tidb-pitr-bucket/backup-data` 权限:`s3:ListBucket``s3:PutObject``s3:AbortMultipartUpload`
- 恢复集群的 TiKV 和 BR 需要 `s3://tidb-pitr-bucket/backup-data` 的最小权限:`s3:ListBucket``s3:GetObject`
- 备份集群的 TiKV 和 br 命令行工具需要的 `s3://tidb-pitr-bucket/backup-data` 权限:`s3:ListBucket``s3:PutObject``s3:AbortMultipartUpload`
- 恢复集群的 TiKV 和 br 命令行工具需要 `s3://tidb-pitr-bucket/backup-data` 的最小权限:`s3:ListBucket``s3:GetObject`

3. 规划备份数据保存的目录结构,以及快照(全量)备份和日志备份的目录。

Expand Down
Loading

0 comments on commit 5b96e08

Please sign in to comment.