From 3064167f9bef1e9f78214f361941f45fba79bd22 Mon Sep 17 00:00:00 2001 From: Ran Date: Wed, 8 Jul 2020 16:59:50 +0800 Subject: [PATCH 1/9] add br storages --- TOC.md | 4 ++ br/backup-and-restore-storages.md | 82 +++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 br/backup-and-restore-storages.md diff --git a/TOC.md b/TOC.md index 54b1fe3f2c32..57d9aac758ed 100644 --- a/TOC.md +++ b/TOC.md @@ -65,6 +65,7 @@ + 使用 BR 工具(推荐) + [使用 BR 进行备份与恢复](/br/backup-and-restore-tool.md) + [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) + + [BR 存储](/br/backup-and-restore-storages.md) + [使用 Dumpling 和 TiDB Lightning 进行备份与恢复(推荐)](/backup-and-restore-using-dumpling-lightning.md) + [使用 Mydumper 和 TiDB Lightning 进行备份与恢复](/backup-and-restore-using-mydumper-lightning.md) + [读取历史数据](/read-historical-data.md) @@ -246,6 +247,7 @@ - [`ALTER TABLE`](/sql-statements/sql-statement-alter-table.md) - [`ALTER USER`](/sql-statements/sql-statement-alter-user.md) - [`ANALYZE TABLE`](/sql-statements/sql-statement-analyze-table.md) + - [`BACKUP`](/sql-statements/sql-statement-backup.md) - [`BEGIN`](/sql-statements/sql-statement-begin.md) - [`CHANGE COLUMN`](/sql-statements/sql-statement-change-column.md) - [`CHANGE DRAINER`](/sql-statements/sql-statement-change-drainer.md) @@ -291,6 +293,7 @@ - [`RENAME INDEX`](/sql-statements/sql-statement-rename-index.md) - [`RENAME TABLE`](/sql-statements/sql-statement-rename-table.md) - [`REPLACE`](/sql-statements/sql-statement-replace.md) + - [`RESTORE`](/sql-statements/sql-statement-restore.md) - [`REVOKE `](/sql-statements/sql-statement-revoke-privileges.md) - [`ROLLBACK`](/sql-statements/sql-statement-rollback.md) - [`SELECT`](/sql-statements/sql-statement-select.md) @@ -299,6 +302,7 @@ - [`SET ROLE`](/sql-statements/sql-statement-set-role.md) - [`SET TRANSACTION`](/sql-statements/sql-statement-set-transaction.md) - [`SET [GLOBAL|SESSION] `](/sql-statements/sql-statement-set-variable.md) + - [`SHOW [BACKUPS|RESTORES]`](/sql-statements/sql-statement-show-backups.md) - [`SHOW ANALYZE STATUS`](/sql-statements/sql-statement-show-analyze-status.md) - [`SHOW BINDINGS`](/sql-statements/sql-statement-show-bindings.md) - [`SHOW BUILTINS`](/sql-statements/sql-statement-show-builtins.md) diff --git a/br/backup-and-restore-storages.md b/br/backup-and-restore-storages.md new file mode 100644 index 000000000000..6e3529033116 --- /dev/null +++ b/br/backup-and-restore-storages.md @@ -0,0 +1,82 @@ +--- +title: BR 存储 +summary: 了解 BR 中所用存储服务的 URL 格式。 +category: reference +--- + +# BR 存储 + +Backup & Restore (BR) 支持在本地文件系统、Amazon S3 和 Google Cloud Storage (GCS) 上读写数据。通过传入 BR 的 `--storage` 参数中的不同 URL scheme,可以区分不同的存储方式。 + +## Scheme + +BR 支持以下存储服务: + +| 服务 | Scheme | 示例 | +|---------|---------|-------------| +| 本地文件系统(分布在各节点上) | local | `local:///path/to/dest/` | +| Amazon S3 及其他兼容 S3 的服务 | s3 | `s3://bucket-name/prefix/of/dest/` | +| GCS | gcs, gs | `gcs://bucket-name/prefix/of/dest/` | +| 不写入任何存储(仅作为基准测试) | noop | `noop://` | + +## 参数 + +S3 和 GCS 等云存储有时需要额外的连接配置,你可以为这类配置指定参数。例如: + +{{< copyable "shell-regular" >}} + +```shell +./br backup full -u 127.0.0.1:2379 -s 's3://bucket-name/prefix?region=us-west-2' +``` + +### S3 参数 + +| 参数 | 描述 | +|----------:|---------| +| `access-key` | 访问密钥 | +| `secret-access-key` | secret 访问密钥 | +| `region` | Amazon S3 服务区域(默认为 `us-east-1`) | +| `use-accelerate-endpoint` | 是否在 Amazon S3 上使用加速端点(默认为 `false`) | +| `endpoint` | S3 兼容服务自定义端点的 URL(例如 `https://s3.example.com/`)| +| `force-path-style` | 使用 path-style,而不是 virtual-hosted style(默认为 `false`) | +| `storage-class` | 上传对象的存储类别(例如 `STANDARD`、`STANDARD_IA`) | +| `sse` | 用于加密上传的服务器端加密算法(可以设置为空,`AES256` 或 `aws:kms`) | +| `sse-kms-key-id` | 如果 `sse` 设置为 `aws:kms`,则使用该参数指定 KMS ID | +| `acl` | 上传对象的 canned ACL(例如,`private`、`authenticated-read`) | + +> **注意:** +> +> 不建议在存储 URL 中直接传递访问密钥和 secret 访问密钥,因为这些密钥是明文记录的。BR 尝试按照以下顺序从环境中推断这些密钥: + +1. `$AWS_ACCESS_KEY_ID` 和 `$AWS_SECRET_ACCESS_KEY` 环境变量。 +2. `$AWS_ACCESS_KEY` 和 `$AWS_SECRET_KEY` 环境变量。 +3. BR 节点上的共享凭证文件,路径由 `$AWS_SHARED_CREDENTIALS_FILE` 环境变量指定。 +4. BR 节点上的共享凭证文件,路径为 `~/.aws/credentials`。 +5. 当前 Amazon EC2 容器的 IAM 角色。 +6. 当前 Amazon ECS 任务的 IAM 角色。 + +### GCS 参数 + +| 参数 | 描述 | +|----------:|---------| +| `credentials-file` | TiDB 节点上的凭证 JSON 文件的路径 | +| `storage-class` | 上传对象的存储类别(例如 `STANDARD`、`COLDLINE`) | +| `predefined-acl` | 上传对象的预定义 ACL(例如 `private`、`project-private` | + +如果没有指定 `credentials-file`,BR 尝试按照以下顺序从环境中推断出凭证: + +1. BR 节点上位于 `$GOOGLE_APPLICATION_CREDENTIALS` 环境变量所指定路径的文件内容。 +2. BR 节点上位于 `~/.config/gcloud/application_default_credentials.json` 的文件内容。 +3. 在 GCE 或 GAE 中运行时,从元数据服务器中获取的凭证。 + +## 向 TiKV 发送凭证 + +在默认情况下,使用 S3 和 GCS 存储时,BR 会将凭证发送到每个 TiKV 节点,以减少设置的复杂性。 + +但是,这个操作不适合云端环境,因为每个节点都有自己的角色和权限。在这种情况下,你需要用 `--send-credentials-to-tikv=false`(或简写为 `-c=0`)来禁止发送凭证: + +{{< copyable "shell-regular" >}} + +```shell +./br backup full -c=0 -u pd-service:2379 -s 's3://bucket-name/prefix' +``` From 0d54981fef546d9f890c671ab970e329baa53f13 Mon Sep 17 00:00:00 2001 From: Ran Date: Wed, 8 Jul 2020 19:37:45 +0800 Subject: [PATCH 2/9] add doc for sql stmt backup --- sql-statements/sql-statement-backup.md | 186 +++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 sql-statements/sql-statement-backup.md diff --git a/sql-statements/sql-statement-backup.md b/sql-statements/sql-statement-backup.md new file mode 100644 index 000000000000..322137e8cae3 --- /dev/null +++ b/sql-statements/sql-statement-backup.md @@ -0,0 +1,186 @@ +--- +title: BACKUP +summary: TiDB 数据库中 BACKUP 的使用概况。 +category: reference +--- + +# BACKUP + +`BACKUP` 语句用于对 TiDB 集群执行分布式备份操作。 + +`BACKUP` 语句使用的引擎与 [BR](/br/backup-and-restore-use-cases.md) 相同,但备份过程是由 TiDB 本身驱动,而非单独的 BR 工具。BR 工具的优势和警告也适用于 `BACKUP` 语句。 + +执行 `BACKUP` 需要 `SUPER` 权限。此外,执行备份的 TiDB 节点和集群中的所有 TiKV 节点都必须有对目标存储的读或写权限。 + +`BACKUP` 语句开始执行后将会被封锁,直到整个备份任务完成、失败或取消。因此,执行 `BACKUP` 时需要准备一个持久的连接。如需取消任务,可执行 `KILL TIDB QUERY` 语句。 + +一次只能执行一个 `BACKUP` 和 [`RESTORE`](/sql-statements/sql-statement-restore.md) 任务。如果在同一个 TiDB 服务器上已经在执行一个 `BACKUP` 或 `RESTORE` 语句,新的 `BACKUP` 将等待前面所有的任务完成后再执行。 + +## 语法图 + +**BackupStmt:** + +![BackupStmt](/media/sqlgram/BackupStmt.png) + +**BRIETables:** + +![BRIETables](/media/sqlgram/BRIETables.png) + +**BackupOption:** + +![BackupOption](/media/sqlgram/BackupOption.png) + +**Boolean:** + +![Boolean](/media/sqlgram/Boolean.png) + +**BackupTSO:** + +![BackupTSO](/media/sqlgram/BackupTSO.png) + +## 示例 + +### 备份数据库 + +{{< copyable "sql" >}} + +```sql +BACKUP DATABASE `test` TO 'local:///mnt/backup/2020/04/'; +``` + +```sql ++------------------------------+-----------+-----------------+---------------------+---------------------+ +| Destination | Size | BackupTS | Queue Time | Execution Time | ++------------------------------+-----------+-----------------+---------------------+---------------------+ +| local:///mnt/backup/2020/04/ | 248665063 | 416099531454472 | 2020-04-12 23:09:48 | 2020-04-12 23:09:48 | ++------------------------------+-----------+-----------------+---------------------+---------------------+ +1 row in set (58.453 sec) +``` + +上述示例中,`test` 数据库被备份到本地,数据以 SST 文件的形式存储在分布于所有 TiDB 和 TiKV 节点的 `/mnt/backup/2020/04/` 目录中。 + +输出结果的第一行描述如下: + +| 列名 | 描述 | +| :-------- | :--------- | +| `Destination` | 目标存储的 URL | +| `Size` | 备份文件的总大小,单位为字节 | +| `BackupTS` | 创建备份时的快照 TSO(用于[增量备份](#增量备份)) | +| `Queue Time` | `BACKUP` 任务开始排队的 timestamp(当前时区) | +| `Execution Time` | `BACKUP` 任务开始执行的 timestamp(当前时区) | + +### 备份表 + +{{< copyable "sql" >}} + +```sql +BACKUP TABLE `test`.`sbtest01` TO 'local:///mnt/backup/sbtest01/'; +``` + +{{< copyable "sql" >}} + +```sql +BACKUP TABLE sbtest02, sbtest03, sbtest04 TO 'local:///mnt/backup/sbtest/'; +``` + +### 备份集群 + +{{< copyable "sql" >}} + +```sql +BACKUP DATABASE * TO 'local:///mnt/backup/full/'; +``` + +注意,备份中不包含系统表 (`mysql.*`, `INFORMATION_SCHEMA.*`, `PERFORMANCE_SCHEMA.*`, …)。 + +### 远端存储 + +BR 支持备份数据到 Amazon S3 或 Google Cloud Storage (GCS): + +{{< copyable "sql" >}} + +```sql +BACKUP DATABASE `test` TO 's3://example-bucket-2020/backup-05/?region=us-west-2'; +``` + +有关详细的 URL 语法,见 [BR 存储](/br/backup-and-restore-storages.md)。 + +当运行在云环境中时,不能分发凭证,可设置 `SEND_CREDENTIALS_TO_TIKV` 选项为 `FALSE`: + +{{< copyable "sql" >}} + +```sql +BACKUP DATABASE `test` TO 's3://example-bucket-2020/backup-05/?region=us-west-2' + SEND_CREDENTIALS_TO_TIKV = FALSE; +``` + +### 性能调优 + +如果你需要减少网络带宽占用,可以通过 `RATE_LIMIT` 来限制每个 TiKV 节点的平均上传速度。 + +默认情况下,每个 TiKV 节点上运行 4 个备份线程。可以通过 `CONCURRENCY` 选项来调整这个值。 + +在备份完成之前,`BACKUP` 将对集群上的数据进行校验,以验证数据的正确性。如果你确信无需进行校验,可以通过 `CHECKSUM` 选项禁用这一步骤。 + +{{< copyable "sql" >}} + +```sql +BACKUP DATABASE `test` TO 's3://example-bucket-2020/backup-06/' + RATE_LIMIT = 120 MB/SECOND + CONCURRENCY = 8 + CHECKSUM = FALSE; +``` + +### 快照 + +可以指定一个时间戳、TSO 或相对时间,来备份历史数据。 + +{{< copyable "sql" >}} + +```sql +-- 相对时间 +BACKUP DATABASE `test` TO 'local:///mnt/backup/hist01' + SNAPSHOT = 36 HOUR AGO; +-- 时间戳(当前时区) +BACKUP DATABASE `test` TO 'local:///mnt/backup/hist02' + SNAPSHOT = '2020-04-01 12:00:00'; +-- TSO +BACKUP DATABASE `test` TO 'local:///mnt/backup/hist03' + SNAPSHOT = 415685305958400; +``` + +对于相对时间,支持以下时间单位: + +* MICROSECOND(微秒) +* SECOND(秒) +* MINUTE(分钟) +* HOUR(小时) +* DAY(天) +* WEEK(周) + +注意,相对时间的单位遵循 SQL 标准,永远使用单数。 + +### 增量备份 + +提供 `LAST_BACKUP` 选项,只备份从上一次备份到当前快照之间的增量数据。 + +{{< copyable "sql" >}} + +```sql +-- 时间戳(当前时区) +BACKUP DATABASE `test` TO 'local:///mnt/backup/hist02' + LAST_BACKUP = '2020-04-01 12:00:00'; + +-- TSO +BACKUP DATABASE `test` TO 'local:///mnt/backup/hist03' + LAST_BACKUP = 415685305958400; +``` + +## MySQL 兼容性 + +该语句是 TiDB 对 MySQL 语法的扩展。 + +## 另请参阅 + +* [RESTORE](/sql-statements/sql-statement-restore.md) +* [SHOW BACKUPS](/sql-statements/sql-statement-show-backups.md) From d9a8136402d2be3335e97b27752bdde2c4c530c0 Mon Sep 17 00:00:00 2001 From: Ran Date: Thu, 9 Jul 2020 15:26:25 +0800 Subject: [PATCH 3/9] add 2 sql stmt: restore and show backups --- sql-statements/sql-statement-backup.md | 4 +- sql-statements/sql-statement-restore.md | 161 +++++++++++++++++++ sql-statements/sql-statement-show-backups.md | 99 ++++++++++++ 3 files changed, 262 insertions(+), 2 deletions(-) create mode 100644 sql-statements/sql-statement-restore.md create mode 100644 sql-statements/sql-statement-show-backups.md diff --git a/sql-statements/sql-statement-backup.md b/sql-statements/sql-statement-backup.md index 322137e8cae3..353a76d5eaa9 100644 --- a/sql-statements/sql-statement-backup.md +++ b/sql-statements/sql-statement-backup.md @@ -12,9 +12,9 @@ category: reference 执行 `BACKUP` 需要 `SUPER` 权限。此外,执行备份的 TiDB 节点和集群中的所有 TiKV 节点都必须有对目标存储的读或写权限。 -`BACKUP` 语句开始执行后将会被封锁,直到整个备份任务完成、失败或取消。因此,执行 `BACKUP` 时需要准备一个持久的连接。如需取消任务,可执行 `KILL TIDB QUERY` 语句。 +`BACKUP` 语句开始执行后将会被封锁,直到整个备份任务完成、失败或取消。因此,执行 `BACKUP` 时需要准备一个持久的连接。如需取消任务,可执行 [`KILL TIDB QUERY`](/sql-statements/sql-statement-kill.md) 语句。 -一次只能执行一个 `BACKUP` 和 [`RESTORE`](/sql-statements/sql-statement-restore.md) 任务。如果在同一个 TiDB 服务器上已经在执行一个 `BACKUP` 或 `RESTORE` 语句,新的 `BACKUP` 将等待前面所有的任务完成后再执行。 +一次只能执行一个 `BACKUP` 和 [`RESTORE`](/sql-statements/sql-statement-restore.md) 任务。如果 TiDB server 上已经在执行一个 `BACKUP` 或 `RESTORE` 语句,新的 `BACKUP` 将等待前面所有的任务完成后再执行。 ## 语法图 diff --git a/sql-statements/sql-statement-restore.md b/sql-statements/sql-statement-restore.md new file mode 100644 index 000000000000..8eca54008386 --- /dev/null +++ b/sql-statements/sql-statement-restore.md @@ -0,0 +1,161 @@ +--- +title: RESTORE +summary: TiDB 数据库中 RESTORE 的使用概况。 +category: reference +--- + +# RESTORE + +`RESTORE` 语句用于执行分布式恢复,把 [`BACKUP` 语句](/sql-statements/sql-statement-backup.md)生成的备份文件恢复到 TiDB 集群中。 + +`RESTORE` 语句使用的引擎与 [BR](/br/backup-and-restore-use-cases.md) 相同,但恢复过程是由 TiDB 本身驱动,而非单独的 BR 工具。BR 工具的优势和警告也适用于 `BACKUP` 语句。需要注意的是,**`RESTORE` 语句目前不遵循 ACID 原则**。 + +执行 `RESTORE` 语句前,确保集群已满足以下要求: + +* 集群处于“下线”状态,当前的 TiDB 会话是唯一在访问要恢复的表的活跃 SQL 连接。 +* 执行全量恢复时,确保即将恢复的表不存在于集群中,因为现有的数据可能被覆盖,从而导致数据与索引不一致。 +* 执行增量恢复时,表的状态应该与创建备份时 `LAST_BACKUP` 时间戳的状态完全一致。 + +执行 `RESTORE` 需要 `SUPER` 权限。此外,执行恢复操作的 TiDB 节点和集群中的所有 TiKV 节点都必须有对目标存储的读权限。 + +`RESTORE` 语句开始执行后将会被封锁,直到整个恢复任务完成、失败或取消。因此,执行 `RESTORE` 时需要准备一个持久的连接。如需取消任务,可执行 [`KILL TIDB QUERY`](/sql-statements/sql-statement-kill.md) 语句。 + +一次只能执行一个 `BACKUP` 和 `RESTORE` 任务。如果 TiDB server 上已经在执行一个 `BACKUP` 或 `RESTORE` 语句,新的 `RESTORE` 将等待前面所有的任务完成后再执行。 + +`RESTORE` 只能在 "tikv" 存储引擎上使用,如果使用 "mocktikv" 存储引擎, `RESTORE` 操作会失败。 + +## 语法图 + +**RestoreStmt:** + +![RestoreStmt](/media/sqlgram/RestoreStmt.png) + +**BRIETables:** + +![BRIETables](/media/sqlgram/BRIETables.png) + +**RestoreOption:** + +![RestoreOption](/media/sqlgram/RestoreOption.png) + +**Boolean:** + +![Boolean](/media/sqlgram/Boolean.png) + +## 示例 + +### 从备份文件恢复 + +{{< copyable "sql" >}} + +```sql +RESTORE DATABASE * FROM 'local:///mnt/backup/2020/04/'; +``` + +```sql ++------------------------------+-----------+----------+---------------------+---------------------+ +| Destination | Size | BackupTS | Queue Time | Execution Time | ++------------------------------+-----------+----------+---------------------+---------------------+ +| local:///mnt/backup/2020/04/ | 248665063 | 0 | 2020-04-21 17:16:55 | 2020-04-21 17:16:55 | ++------------------------------+-----------+----------+---------------------+---------------------+ +1 row in set (28.961 sec) +``` + +上述示例中,所有数据均从本地的备份文件中恢复到集群中。`RESTORE` 从 SST 文件里读取数据,SST 文件存储在所有 TiDB 和 TiKV 节点的 `/mnt/backup/2020/04/` 目录下。 + +输出结果的第一行描述如下: + +| 列名 | 描述 | +| :-------- | :--------- | +| `Destination` | 读取的目标存储 URL | +| `Size` | 备份文件的总大小,单位为字节 | +| `BackupTS` | 不适用 | +| `Queue Time` | `RESTORE` 任务开始排队的 timestamp(当前时区) | +| `Execution Time` | `RESTORE` 任务开始执行的 timestamp(当前时区) | + +### 部分恢复 + +你可以指定恢复部分数据库或表的数据。如果备份文件中缺失了某些数据库或表,缺失的部分将被忽略。此时,`RESTORE` 语句不进行任何操作即完成执行。 + +{{< copyable "sql" >}} + +```sql +RESTORE DATABASE `test` FROM 'local:///mnt/backup/2020/04/'; +``` + +{{< copyable "sql" >}} + +```sql +RESTORE TABLE `test`.`sbtest01`, `test`.`sbtest02` FROM 'local:///mnt/backup/2020/04/'; +``` + +### 远端存储 + +BR 支持从 Amazon S3 或 Google Cloud Storage (GCS) 恢复数据: + +{{< copyable "sql" >}} + +```sql +RESTORE DATABASE * FROM 's3://example-bucket-2020/backup-05/?region=us-west-2'; +``` + +有关详细的 URL 语法,见 [BR 存储](/br/backup-and-restore-storages.md)。 + +当运行在云环境中时,不能分发凭证,可设置 `SEND_CREDENTIALS_TO_TIKV` 选项为 `FALSE`: + +{{< copyable "sql" >}} + +```sql +RESTORE DATABASE * FROM 's3://example-bucket-2020/backup-05/?region=us-west-2' + SEND_CREDENTIALS_TO_TIKV = FALSE; +``` + +### 性能调优 + +如果你需要减少网络带宽占用,可以通过 `RATE_LIMIT` 来限制每个 TiKV 节点的平均下载速度。 + +默认情况下,每个 TiKV 节点上运行 128 个恢复线程。可以通过 `CONCURRENCY` 选项来调整这个值。 + +在恢复完成之前,`RESTORE` 将对备份文件中的数据进行校验,以验证数据的正确性。如果你确信无需进行校验,可以通过 `CHECKSUM` 选项禁用这一步骤。 + +{{< copyable "sql" >}} + +```sql +RESTORE DATABASE * FROM 's3://example-bucket-2020/backup-06/' + RATE_LIMIT = 120 MB/SECOND + CONCURRENCY = 64 + CHECKSUM = FALSE; +``` + +### 增量恢复 + +增量恢复没有特殊的语法。TiDB 将识别备份文件属于全量备份或增量备份,然后执行对应的恢复操作,用户只需按照正确顺序进行增量恢复。 + +假设按照如下方式创建一个备份任务: + +{{< copyable "sql" >}} + +```sql +BACKUP DATABASE `test` TO 's3://example-bucket/full-backup' SNAPSHOT = 413612900352000; +BACKUP DATABASE `test` TO 's3://example-bucket/inc-backup-1' SNAPSHOT = 414971854848000 LAST_BACKUP = 413612900352000; +BACKUP DATABASE `test` TO 's3://example-bucket/inc-backup-2' SNAPSHOT = 416353458585600 LAST_BACKUP = 414971854848000; +``` + +在恢复备份时,需要采取同样的顺序: + +{{< copyable "sql" >}} + +```sql +RESTORE DATABASE * FROM 's3://example-bucket/full-backup'; +RESTORE DATABASE * FROM 's3://example-bucket/inc-backup-1'; +RESTORE DATABASE * FROM 's3://example-bucket/inc-backup-2'; +``` + +## MySQL 兼容性 + +该语句是 TiDB 对 MySQL 语法的扩展。 + +## 另请参阅 + +* [BACKUP](/sql-statements/sql-statement-backup.md) +* [SHOW RESTORES](/sql-statements/sql-statement-show-backups.md) diff --git a/sql-statements/sql-statement-show-backups.md b/sql-statements/sql-statement-show-backups.md new file mode 100644 index 000000000000..0bb615049704 --- /dev/null +++ b/sql-statements/sql-statement-show-backups.md @@ -0,0 +1,99 @@ +--- +title: SHOW [BACKUPS|RESTORES] +summary: TiDB 数据库中 SHOW [BACKUPS|RESTORES] 的使用概况。 +category: reference +--- + +# SHOW [BACKUPS|RESTORES] + +`SHOW [BACKUPS|RESTORES]` 语句会列出所有队列中或正在执行的 [`BACKUP`](/sql-statements/sql-statement-backup.md) 和 [`RESTORE`](/sql-statements/sql-statement-restore.md) 任务。 + +查询 `BACKUP` 任务时,使用 `SHOW BACKUPS` 语句。查询 `RESTORE` 任务时,使用 `SHOW RESTORES` 语句。执行两个语句均需要 `SUPER` 权限。 + +## 语法图 + +**ShowBRIEStmt:** + +![ShowBRIEStmt](/media/sqlgram/ShowBRIEStmt.png) + +**ShowLikeOrWhereOpt:** + +![ShowLikeOrWhereOpt](/media/sqlgram/ShowLikeOrWhereOpt.png) + +## 示例 + +在一个连接中,执行以下命令备份数据库: + +{{< copyable "sql" >}} + +```sql +BACKUP DATABASE `test` TO 's3://example-bucket/backup-01/?region=us-west-1'; +``` + +在备份完成之前,在新的连接中执行 `SHOW BACKUPS`: + +{{< copyable "sql" >}} + +```sql +SHOW BACKUPS; +``` + +```sql ++--------------------------------+---------+----------+---------------------+---------------------+-------------+------------+ +| Destination | State | Progress | Queue_Time | Execution_Time | Finish_Time | Connection | ++--------------------------------+---------+----------+---------------------+---------------------+-------------+------------+ +| s3://example-bucket/backup-01/ | Backup | 98.38 | 2020-04-12 23:09:03 | 2020-04-12 23:09:25 | NULL | 4 | ++--------------------------------+---------+----------+---------------------+---------------------+-------------+------------+ +1 row in set (0.00 sec) +``` + +输出结果的第一行描述如下: + +| 列名 | 描述 | +| :-------- | :--------- | +| `Destination` | 目标存储的 URL(为避免泄露密钥,所有参数均不显示) | +| `State` | 任务状态 | +| `Progress` | 当前状态的进度(百分比) | +| `Queue Time` | 任务开始排队的时间 | +| `Execution Time` | 任务开始执行的时间;对于队列中任务,该值为 `0000-00-00 00:00:00` | +| `Finish_Time` | (暂不适用) | +| `Connection` | 运行任务的连接 ID | + +连接 ID 可用于在 [`KILL TIDB QUERY`](/sql-statements/sql-statement-kill.md) 语句中取消备份/恢复任务: + +{{< copyable "sql" >}} + +```sql +KILL TIDB QUERY 4; +``` + +```sql +Query OK, 0 rows affected (0.00 sec) +``` + +### 过滤 + +在 `LIKE` 子句中使用通配符,可以按目标存储 URL 筛选任务: + +{{< copyable "sql" >}} + +```sql +SHOW BACKUPS LIKE 's3://%'; +``` + +使用 `WHERE` 子句,可以按列筛选任务: + +{{< copyable "sql" >}} + +```sql +SHOW BACKUPS WHERE `Progress` < 25.0; +``` + +## MySQL 兼容性 + +该语句是 TiDB 对 MySQL 语法的扩展。 + +## 另请参阅 + +* [BACKUP](/sql-statements/sql-statement-backup.md) +* [RESTORE](/sql-statements/sql-statement-restore.md) From 3d4097e20e1fbcdf24e9ce44cdb982075650eb7b Mon Sep 17 00:00:00 2001 From: Ran Date: Thu, 9 Jul 2020 16:23:19 +0800 Subject: [PATCH 4/9] add 7 synopsis --- media/sqlgram/BackupOption.png | Bin 0 -> 11980 bytes media/sqlgram/BackupStmt.png | Bin 0 -> 3034 bytes media/sqlgram/BackupTSO.png | Bin 0 -> 1418 bytes media/sqlgram/RestoreOption.png | Bin 0 -> 7323 bytes media/sqlgram/RestoreStmt.png | Bin 0 -> 2860 bytes media/sqlgram/ShowBRIEStmt.png | Bin 0 -> 3370 bytes media/sqlgram/ShowLikeOrWhereOpt.png | Bin 7022 -> 6656 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/sqlgram/BackupOption.png create mode 100644 media/sqlgram/BackupStmt.png create mode 100644 media/sqlgram/BackupTSO.png create mode 100644 media/sqlgram/RestoreOption.png create mode 100644 media/sqlgram/RestoreStmt.png create mode 100644 media/sqlgram/ShowBRIEStmt.png diff --git a/media/sqlgram/BackupOption.png b/media/sqlgram/BackupOption.png new file mode 100644 index 0000000000000000000000000000000000000000..4425d81c996e06d6d8f3d2cd8e70a826456bba40 GIT binary patch literal 11980 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�~LoqQiMn*>E<>i5afns7}f`WopR#rVdJw!xAu&}UZ zW@gLF%TG^FT3T9AP*B|5+?SV^*x1->YimNG{HOo`3O`9iK~#9!?Va~y+DI11MG$%- zlGqRs#uPaQgN-Y0v7NTbrfu%Fw=27MyVraB|9`nD8i7Cp$*2*%?+=L>2|UAm^ya-m zGf$FG@4Y@qSJ(ll1u8?jy1*_#Ex_}Cchl6jh$m_hp5;{keEnIu{5$LgR7UaKRN*f6 z0xGL`0^*56JW+@z;)y~$QHUqvi9$RPPZZ*bLOc;q6yk|OJP}XS+Tf{G5l>XwcvfYq zYB)SK@)pfiV(8?bnp{IXQIX-(*Ei z*^uM6HHrlX7KLIC2IlsTdSbHds&aq$ZYL zV4K>eJXOZ5C&jZ$38#FrQ<{Nzq894j#d9B^JXM{>07fQuR4!$KW(Dy*snH{TCN+Bwp0cKS;^`XPZ-M9B z;I1^_Ep}B7bp$8DLL)McGb{;mlfhlmScGo42X`klqJE`Q7GiMs@I95mId)bKZKo12 za@TDvY3Qyyp%F8v^n#i!@T5V{)WnigMuD6OjY8llnS&$juAHfTPz(^cJE0LhVwCCR zpvLg5&=bTZ)p_LZ%-`!Gnwpg9^Ak%U@Ra(1{%6iq90!9f@-?Rftu?|^8uYQt@}&MiiWJX?)6yk|^q7Y9M;)!^o5KqJt@kBgPYlvs5oTgqOo~Q+Q{?IX+MewoX!5x_ZuKn`McBb(>8VB@dte$~*ritfu9PL(MoMk*)o=e6(_37E?h-Z3uo{VFu z-iu>B!+4$s|MFVkhce=s0G=_eS?Ztp^lB#XJP5Il@DJ)2nZUD=M?Bkc?dJe+m03I$ z2=O7-aA+Z(Dd8Ear^4t0yur@`o}s=w1=No+fai&}R(PI9v&)h)j;Vfsf+s(JFYuH= z_1*y?Sv+I2Bk}0kiY79OYs~olA$*)!JVV{u06Qn?<0%E7Y{-E8_B8SJF=LLf=06zV zWej+VeO4;2OcJq1!2rWz2Jl>~UA2niKuA6pk7pELDFN`@C@|I83zHn#?xV?yH`oQ_ zWrrSj3mwTW=&;k>Sv+Amo|8O0#`MmARsK?zYqBjZHazQv!lcz3c01j89*4klD(8xK zVj%m1n%IOmD4zX;_1RUcJ^Qf2^SQ@_lvm_Sh2uSbqId`ol^}RZ(pI6cC0OM>Mey6E zuebOGb=H+GJiGLD;TCv0d3X$##6%Ol>etJ$SkEnSABtOW+l?pO4o`1QT@VUSNn4*i zhab$waSn$9&WCVF@l@3wJ5k(G!3$6iJhyH0$xMoEUs!+DIi6db+F3jW)#35vd3c5t;sdp-NdK3B%wgI}fI-cA1Xi;~Y&tQ0pO7M!aYO<68A|DXj2HSAq8Pa;v zJ=GSb^!1~S?+soa8uIZ2yRb#V;d7E)5Ch2xAZ+J zS`1Iwa9K;44eQR}-qfbk@z`l2w5I3MM;7-26k=LiFGocZ$gb$vzzOTCeMSV|l z`qEnNdvZKEeaw)GPRbc zr5PHD+stopudP0~udf^q$+2}gR2@9kL-?>oBX@H8(h3r}Gizz`A)Jv)=Zt11mO5-G zG^xSaS{+YawtdeUHIiO@8c(MZEV}c+lg4!wcjRtg zn-4r~4wk$T6OSd#gaj%Roj8c&~T`9P7osD#cZmS*v!&a=j>CvO>RfF5RIX|3@T911}9 zdixa5j$K&1{4Bt)Mp6E(6$sCG71fWL5Y>;GhH>jUuQ{Hb*(tHlF3Feb6#7k=A)X20 z*{n)Z#q(FrJmA?1ScZ6}g{L!dmPb5qD^&c@@&`BX6;=Tq-N zb{BIPA%)`opygkY447#C0^{myQSoGe_5kX^pCw;@~?-*Wt-IgC!IQ@ cP^j4Te`c~V<`K0bkpKVy07*qoM6N<$f}OnYVE_OC literal 0 HcmV?d00001 diff --git a/media/sqlgram/BackupTSO.png b/media/sqlgram/BackupTSO.png new file mode 100644 index 0000000000000000000000000000000000000000..29ea0bf28a549b892ca0a08eccd0271178ae4e84 GIT binary patch literal 1418 zcmV;51$Fv~P)+9>Osj0}w z$WBg9t*x!s*Vn5=NEG#T3DJeieK-SjQpP!#xTwEt7CoeBA zJUl!zGc&upyRNRTDk>^!YHB$-Igyc(FfcH8cXvNOKTAtXK|w(}Iyx;aEml@m%gf6s zC@8tPxm8tFXJ==GgoJ5nY31eRJv}|l%*;18H-&|TkdTnc$;mrAJ3c->-QC@cjEt|Z zuhP=ewVQQYxiVDy32?r82eBTx=L_5lYm|RXMUZ+YEa4y)*uY z29BFt*+jdJ=SM7+NTFLg%2uh}t*<%F*MI2Q(;jzf=Z#p-v`VCOa!{)M6{q>Sp|<(i z1Lo9DK<&qHhA5kgLc5QeWCPO%oir$jzcjDgkxs!>iFE&btYby#TKobDl>ma%JZ%5~ zSCSor-lsF7ggDM%C4KEGG$FgB+ti`>t^Qap+L3M%%&L+!bm?1wPzohM^iHUg7*!CI zWXF?puLr=L7w_s?eP=wsAE4~8VZdFUnbbg4qH@trY-D?FEd2}UI6z6dySQ~&@3i^^ zz;|9e;6_mi>J+B_5!3##)$-`3*V+<4e*`FLx{nemjYlPen55TfiTw2?KXQPx4Tg?Y)0eDPsUuAIUn z`ry<~)bqxjwWrM(jF_tr9ZcO4G>CTHUz669fap`|2Oj=j0C`l$We*CS(|o&$f9 za3ein!$`uJ+0m4ILi!tmhOC?lX72&wPZCkd`1A;rd@M&`ifinH)$B7**;uv~gEiIy zJwq*nPk7CwpX(whotB8&oMEOD;p*e7bjq$S%+?%~Zup#v5jKp{DQO0$M}{iLIFo;Q z@VL_dc{xrdmw(|@TG=u)xxCh@v~p$~f)b=sDy32?rE+hTzit#6B`I%0u~Cll`a7ed zm}M#ZjRIp(lJaJ;@unPQ6+$YdQYxiVDy32?rLqv^(_8t(=SnG$hq-)Mja!AkpWhY0 zm*d9=pzIBf4nP^R-cBl|@*tJ-gHRf?Dl2Ws=C%e@S!raX3@e|ghSD5nbl;&_VP!_e z6XZgZ3M*%3M)!4tQ??RH)3dX>aSKOR3iaz&U@_CO#MBC|b&sWVXIf@&ukBqXQ3i)_ zKx(CpafVqm^02#0xmkn%SLtjP=?kUb{;|oG#uc`+oGdPe%MV+XtUMjB)Zo)%?yw?# zwlmdO+VcrGcE*c>@e*J%xzIwY^E-|ni@@#$e(RrzJu+oa7EaSI%QI&jhhGwkwA1E!vo`D^) z27g7lEYcU0U1i_KlGWySYGMukigH<`@0anjiHg!aNlMDtT@j^7f3KC1i}d$f8MR1% z|1-8Gl~O5{QYn>EDV0*Wx5}KVC#t1<+HU7jx7~wEDQkIE=T}adPgG2q(+^}`)np`y Yf5q>DI^O$z&Hw-a07*qoM6N<$f*ugIZU6uP literal 0 HcmV?d00001 diff --git a/media/sqlgram/RestoreOption.png b/media/sqlgram/RestoreOption.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff807478df1590886ae3e39c887093adfec934b GIT binary patch literal 7323 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 literal 0 HcmV?d00001 diff --git a/media/sqlgram/RestoreStmt.png b/media/sqlgram/RestoreStmt.png new file mode 100644 index 0000000000000000000000000000000000000000..7fae5bc1152b7463e4ba21b44e4d1194a3f013ac GIT binary patch literal 2860 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 OlDv$vbOp#H@P7b9cDZ{1 delta 6950 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 HXAb`_4O@Ms From 7965e25fa31598f2b5b5b6a710139ee4230c7851 Mon Sep 17 00:00:00 2001 From: Ran Date: Fri, 10 Jul 2020 11:41:42 +0800 Subject: [PATCH 5/9] Apply suggestions from code review Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- sql-statements/sql-statement-backup.md | 6 +++--- sql-statements/sql-statement-restore.md | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sql-statements/sql-statement-backup.md b/sql-statements/sql-statement-backup.md index 353a76d5eaa9..251490b8f833 100644 --- a/sql-statements/sql-statement-backup.md +++ b/sql-statements/sql-statement-backup.md @@ -66,8 +66,8 @@ BACKUP DATABASE `test` TO 'local:///mnt/backup/2020/04/'; | `Destination` | 目标存储的 URL | | `Size` | 备份文件的总大小,单位为字节 | | `BackupTS` | 创建备份时的快照 TSO(用于[增量备份](#增量备份)) | -| `Queue Time` | `BACKUP` 任务开始排队的 timestamp(当前时区) | -| `Execution Time` | `BACKUP` 任务开始执行的 timestamp(当前时区) | +| `Queue Time` | `BACKUP` 任务开始排队的时间戳(当前时区) | +| `Execution Time` | `BACKUP` 任务开始执行的时间戳(当前时区) | ### 备份表 @@ -91,7 +91,7 @@ BACKUP TABLE sbtest02, sbtest03, sbtest04 TO 'local:///mnt/backup/sbtest/'; BACKUP DATABASE * TO 'local:///mnt/backup/full/'; ``` -注意,备份中不包含系统表 (`mysql.*`, `INFORMATION_SCHEMA.*`, `PERFORMANCE_SCHEMA.*`, …)。 +注意,备份中不包含系统表 (`mysql.*`、`INFORMATION_SCHEMA.*`、`PERFORMANCE_SCHEMA.*` 等)。 ### 远端存储 diff --git a/sql-statements/sql-statement-restore.md b/sql-statements/sql-statement-restore.md index 8eca54008386..d7a9a459de16 100644 --- a/sql-statements/sql-statement-restore.md +++ b/sql-statements/sql-statement-restore.md @@ -8,11 +8,11 @@ category: reference `RESTORE` 语句用于执行分布式恢复,把 [`BACKUP` 语句](/sql-statements/sql-statement-backup.md)生成的备份文件恢复到 TiDB 集群中。 -`RESTORE` 语句使用的引擎与 [BR](/br/backup-and-restore-use-cases.md) 相同,但恢复过程是由 TiDB 本身驱动,而非单独的 BR 工具。BR 工具的优势和警告也适用于 `BACKUP` 语句。需要注意的是,**`RESTORE` 语句目前不遵循 ACID 原则**。 +`RESTORE` 语句使用的引擎与 [BR](/br/backup-and-restore-use-cases.md) 相同,但恢复过程是由 TiDB 本身驱动,而非单独的 BR 工具。BR 工具的优势和警告也适用于 `RESTORE` 语句。需要注意的是,**`RESTORE` 语句目前不遵循 ACID 原则**。 执行 `RESTORE` 语句前,确保集群已满足以下要求: -* 集群处于“下线”状态,当前的 TiDB 会话是唯一在访问要恢复的表的活跃 SQL 连接。 +* 集群处于“下线”状态,当前的 TiDB 会话是唯一在访问待恢复表的活跃 SQL 连接。 * 执行全量恢复时,确保即将恢复的表不存在于集群中,因为现有的数据可能被覆盖,从而导致数据与索引不一致。 * 执行增量恢复时,表的状态应该与创建备份时 `LAST_BACKUP` 时间戳的状态完全一致。 @@ -22,7 +22,7 @@ category: reference 一次只能执行一个 `BACKUP` 和 `RESTORE` 任务。如果 TiDB server 上已经在执行一个 `BACKUP` 或 `RESTORE` 语句,新的 `RESTORE` 将等待前面所有的任务完成后再执行。 -`RESTORE` 只能在 "tikv" 存储引擎上使用,如果使用 "mocktikv" 存储引擎, `RESTORE` 操作会失败。 +`RESTORE` 只能在 "tikv" 存储引擎上使用,如果使用 "mocktikv" 存储引擎,`RESTORE` 操作会失败。 ## 语法图 @@ -70,12 +70,12 @@ RESTORE DATABASE * FROM 'local:///mnt/backup/2020/04/'; | `Destination` | 读取的目标存储 URL | | `Size` | 备份文件的总大小,单位为字节 | | `BackupTS` | 不适用 | -| `Queue Time` | `RESTORE` 任务开始排队的 timestamp(当前时区) | -| `Execution Time` | `RESTORE` 任务开始执行的 timestamp(当前时区) | +| `Queue Time` | `RESTORE` 任务开始排队的时间戳(当前时区) | +| `Execution Time` | `RESTORE` 任务开始执行的时间戳(当前时区) | ### 部分恢复 -你可以指定恢复部分数据库或表的数据。如果备份文件中缺失了某些数据库或表,缺失的部分将被忽略。此时,`RESTORE` 语句不进行任何操作即完成执行。 +你可以指定恢复部分数据库或部分表数据。如果备份文件中缺失了某些数据库或表,缺失的部分将被忽略。此时,`RESTORE` 语句不进行任何操作即完成执行。 {{< copyable "sql" >}} From 37bc944bcfe3f195f14e97c020fbfeb53d28e295 Mon Sep 17 00:00:00 2001 From: Ran Date: Fri, 10 Jul 2020 12:04:44 +0800 Subject: [PATCH 6/9] address comments; update pic --- media/sqlgram/BRIETables.png | Bin 10707 -> 4898 bytes media/sqlgram/Boolean.png | Bin 4682 -> 2919 bytes sql-statements/sql-statement-backup.md | 2 +- sql-statements/sql-statement-restore.md | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/media/sqlgram/BRIETables.png b/media/sqlgram/BRIETables.png index e460994bfdc00696690c0202f38ddb0a2f21fc39..f737423edcb11f951ebc96be1ab9cd12ae9473f0 100644 GIT binary patch literal 4898 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 JwOaO3{{h~DnRoyI literal 10707 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 YaT&xKf7k-wN{JvNsVGqimRR910 diff --git a/media/sqlgram/Boolean.png b/media/sqlgram/Boolean.png index b44f358d666e975617f5a72fcbeec8135fe8ff82..cedd61a77534488a8bf4dabe3f4e2a6e405824a3 100644 GIT binary patch literal 2919 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 R`zinc002ovPDHLkV1lXqVsHQe literal 4682 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 KYE(e%qW%v~UG9ef diff --git a/sql-statements/sql-statement-backup.md b/sql-statements/sql-statement-backup.md index 251490b8f833..f45f8d26796a 100644 --- a/sql-statements/sql-statement-backup.md +++ b/sql-statements/sql-statement-backup.md @@ -12,7 +12,7 @@ category: reference 执行 `BACKUP` 需要 `SUPER` 权限。此外,执行备份的 TiDB 节点和集群中的所有 TiKV 节点都必须有对目标存储的读或写权限。 -`BACKUP` 语句开始执行后将会被封锁,直到整个备份任务完成、失败或取消。因此,执行 `BACKUP` 时需要准备一个持久的连接。如需取消任务,可执行 [`KILL TIDB QUERY`](/sql-statements/sql-statement-kill.md) 语句。 +`BACKUP` 语句开始执行后将会加锁,直到整个备份任务完成、失败或取消。因此,执行 `BACKUP` 时需要准备一个持久的连接。如需取消任务,可执行 [`KILL TIDB QUERY`](/sql-statements/sql-statement-kill.md) 语句。 一次只能执行一个 `BACKUP` 和 [`RESTORE`](/sql-statements/sql-statement-restore.md) 任务。如果 TiDB server 上已经在执行一个 `BACKUP` 或 `RESTORE` 语句,新的 `BACKUP` 将等待前面所有的任务完成后再执行。 diff --git a/sql-statements/sql-statement-restore.md b/sql-statements/sql-statement-restore.md index d7a9a459de16..94309fc30f97 100644 --- a/sql-statements/sql-statement-restore.md +++ b/sql-statements/sql-statement-restore.md @@ -18,7 +18,7 @@ category: reference 执行 `RESTORE` 需要 `SUPER` 权限。此外,执行恢复操作的 TiDB 节点和集群中的所有 TiKV 节点都必须有对目标存储的读权限。 -`RESTORE` 语句开始执行后将会被封锁,直到整个恢复任务完成、失败或取消。因此,执行 `RESTORE` 时需要准备一个持久的连接。如需取消任务,可执行 [`KILL TIDB QUERY`](/sql-statements/sql-statement-kill.md) 语句。 +`RESTORE` 语句开始执行后将会加锁,直到整个恢复任务完成、失败或取消。因此,执行 `RESTORE` 时需要准备一个持久的连接。如需取消任务,可执行 [`KILL TIDB QUERY`](/sql-statements/sql-statement-kill.md) 语句。 一次只能执行一个 `BACKUP` 和 `RESTORE` 任务。如果 TiDB server 上已经在执行一个 `BACKUP` 或 `RESTORE` 语句,新的 `RESTORE` 将等待前面所有的任务完成后再执行。 From 8cc17665c4df576beeab794050e68b8b12cf1527 Mon Sep 17 00:00:00 2001 From: Ran Date: Fri, 10 Jul 2020 19:50:50 +0800 Subject: [PATCH 7/9] use previous pics --- media/sqlgram/BRIETables.png | Bin 4898 -> 10707 bytes media/sqlgram/Boolean.png | Bin 2919 -> 4682 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/media/sqlgram/BRIETables.png b/media/sqlgram/BRIETables.png index f737423edcb11f951ebc96be1ab9cd12ae9473f0..e460994bfdc00696690c0202f38ddb0a2f21fc39 100644 GIT binary patch literal 10707 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 YaT&xKf7k-wN{JvNsVGqimRR910 literal 4898 zcmZ{ocTm$$x5iOG1q1{H1yqnGEg&t@5s(t9AOaddl!W>Xy*KHKv_L372)&B*1VU2* z5lo~>3kd-MLy_JDrC;BB=gz$|_q{XE>~qfUKRbKQes*T#ADZYfGx9Lf(9keL^dFeh z(452ljn6L8{vF@_rv2B1??WRCowKtuMn*;gfe;!R3WY*ZD3q|Uu!x8V9*<8;OJinc z9vvN(lat%t-X;=>W@ct4CMFdX6{n}CHa0djH8sh}$==@HZ{NOMU0tP8sg;$LQc_YW zDJkvk?GqCdot>Tj{{DCG-Ze5ZDkvyeSy>Sm7nhZly?_6HS67#(r)Nw|jI^{g2n5p9 z)RdHzl#q}R6BDbgt#xs62?z*?jg1u*6}@xkj;pJyii(P=s%l|jp}M-dv9Ym?jEug% z{^Q4w)zs9GNTipS*OMntQd3ivm6a_mEfp0N9UUDF3=9kn4Wpx@qoSf-ym%omFK=OC zp{J*(q@-kPYYT(H>g($r92~;K!=FBV3V}e}+}wP8e5|ajA|oR;G&HKKs~Z{`+}+(h zJUo1TeXXsn)6>%v5)$(B^L2G~g@lAgMn>l6=QlPs6ciNv{QLp~10OzoSXx>d5fNc$ zXP1Cl$~x8 zv7~|u0Ja!K@5Sl~YCGfOYc-diH|}Uur4^^O<~my6(P|in=|DaXvfZ-8yPhclRgp6a zY-0jdF6M$60w){KBwCq4mO6zK1)ME$7Cd4#KesikJUJ+9E6`U3OnpQ%{ii)`M}}*U z30H_w+>0{_Pj$3{LG7dvw%^ah=N@;B!!;?*ECoNlepKj4hLS$17`8o;Uc9s+G*GuX zB=VWk7stLG)pk()+Eo^Lb)p=75_rOAml)VpA&aMnaqv$|Gx$=+>CKqyocBLU@uO=? z+ms^$)e7-e34Sf&{AhedKaq2yk4T5#{H{@85&X25+)rt^$tR6T?cb#fJ-CEOn=86_ zN9+B}mG5&;U-CU!99rF zj1ON_2=z)5sy1(hb~_#KtxPO&G(Pgspb7L$2eH^(fevUE3lk)a9^qWPZ6;Zqu={oh zFVu_HaBy?u0*blNWKOk_8yvxeoes!4+_JY|FEPFL=g)uu+Rzh_Zhr6Y{t0XxjF?E) z2vLOu4>fa<)O8UfYnDe4S9gjf8jjW2oH1CAyDs-k+%`ykuj=BhoRk`%FDM}^EMbY_ zTRHG5#xJF7aqOi+9X^rln5JSULEM4o4aPruE^7d71&oO`ioEY)5O%(%Ba&G!dps1a z`Cw@tpA@A;3^{N+!m2L5(}$SmP5%UirgLxJYY9I=FRPo79MhyIKMbd%{Oe)DV!o2g zi#RII*edN_+BlomuDdY9V#e1>k3)6b4!tT{u2g)|KHw->!YriVm^B~xp5*P;Dnl{y zjzi?Ay$$M)j9#FCOHLx@vy)VvdCh{p`a_1D13jfE^zX~j9@uPkd8eUz4Q@9Y{`Q-! z%>lBGXyZ1(7kLk*=9!+NMig!r@(%gO2~31=U=KnT40nT{`j2@WIp8Lu?oDlcusPlV z3$Z)2e307^RURM?rX#>g>uHjXZZ|?&Zhk|hYYs`H2NloH_02@Py^O8+=)F&?@!ePZ zG9Bh~^>GWQJk1r;oj!j7sZvEA=bOq~x zYLHWSabVH)#F_FkixAt(;KkO9>p#0o(Qt=#D@%1p-|L6Vx2CzS1N}9#CF&=2()ap$ zpC06Z-;m?V4vUhcZ0H(Xu3%Ym=uXJas3rFXmi?M#ets0<8)RGiqr=T<$FQJZua#{| zI+hR*lO7vaSFt-_D%t-oW_FD^WCTgP&jd(R;yoQ0_0O-t(8HSPml1)F{r)r?ly}UZ z6d?g`*9l%fpb2X#1GQc_LMAUiYOl`@zD-u#GgJP+-ej60$sj}4N0B9NgN|-Wf1GFfWhXTv2bsD8df7WE;H7*}u$1W=h z=^1>(8g7yeYwLljQ!&+B%g=;3m%6PQ<<3{w24xJFgg)J5@d(|t4mKQK+tkdExXW9S zDUD_q;(WQ>y3~AJ=v7tkHFgoQ0|P zFE$Nw<_<`C(uSD6&thi?DR>s}DLneknzeJD8#Med**4-DcMH;Y7x0BgrS>Pvwq5aJ zo0L7#eDdv%hw~*Zk-_63I?CdCZ)JtcnA^PnPEatZao4OTVYoF8Xtn1Mw>K8~xMBT} z4GB5|N?POT8#}(gxP^cjzDg2Jn4ta23Z)}s`gPL_2~h+q)>Kd*&^;@bPoTO*0oia4 zYmUsmEhbG|HAbwT5Rz>}rrVFzr<1Z1fP%@&wEI3Cky4sCBTTF3J8KF+;daIz+-CS0el>Qw-g1hs{$*l z^tjQK;ZYN5PP048{Lt5A{qt`7A1TGxdwT1ZZ1)0f~&m|&@UD5A^6vm_2F+EOI zjeBn=CPICVYTFT`6i!$|ANaEBt(BKyZdIAEEFl<+JIo<0{Pxb?D=KtbXdHD_3(QJB zUxnBGwaOYA3yME?za$FqB3a+_-2V{nB(dy;?#*%KA)k*{i1(iCMl4#4;<>I?x58__ zb(gL>Iponr0+C&Eiw6uEV&`&J)g?3+Qb8AZCHTS_uZ&HEy-!luRLAsueUYWP; zuK;d16<<}6kR_~Mw(I=c57sA%o(4r09A7(kM&~;iEEjoX#!opU;R#|kNxe&~iM5^C zCS;=*L^l|ek5})VNO}lDnZcvosysjplK>TPI^(DCkQGhBCO0xGuy!4rCo zz}InOX^j>9_I+IpcVV3za!2IGmHQo+y}$7|BobSC|U9J7-4+ol=00}5Cpfm zA;La$8(ItmpvcMXo=bygNYG1Q0n39~NMT<2S8e}Gmex3bB3bf6%427+T~d}Qdcb~7 zJz82GTEdp=WZRwx=5;%=K8UKXGbM;hx(ZF@6K6%i~xQWSAaVqaCMWPg!8Aq z{OIoaM#NZc+ZS>V!Ul3n%$QfA_oK^hfcMJG{a zDu71ApvF!vx0ajtkcc4gR} z%N_ONlAVlTR8c3AA4(*{;tS9hH3M%G@R%$Ha53W?OCX!TLmbQ~w$L`P0!<8wX%2xsF=zT`NF>&_FeVTOM&;RwBS% z8`nCkeR$yddq?SCFsoK&ps|JZ3G(9cnR?)JWN-Ywz7FmNMnUJluLusnE|Uqq$ANWI9nsMfvX|D-+z%Qlxc&>Pu$`&UsJvi-{hD>4$ zElw#wIJwc%(k$BUA_q1Onjw~75N}=s{pBx_d+231};D(|u`joR0lEH^%SK2q*-cDj+5BvWbJsXlXKCqL&3 z#j5^zTcu!qH}&$PvNyRV3_7yEUC<5zt{j4KV1HAo;i%kvM$kuhU*j)iOv@JNKS zO*NU#|Dw^t$)n3Rd*{&#jsUiqj{N2?8;d+PY_x`Fwp6lfqk$f{poZy}O@md!Nc(mK zmYa^u*smMD&Ybw#QYi6{LZZ2PaF4x{{QJ^O2}NgLBQG2>YVmvLh7&%h>WI4q%^rPVH23HoS;|n|e z`11?nKGUE-wAW@nONstw>dT~PcYcyO7m{Zaz;u=l#$l(hcF)P)?VWa9d$U2GP$TE9 za!2||?=d2=@IJSQ1kf{4%w|zV`O+Zx^)zGfCz2(UyoNiQ9LqUqSODiHE--{t6$MLE zmd&o*MW%Jx1(i)$54lzA_A)N&Tr6_{Ce}%&8{?Z!qfvL8>&ZO*0QnPXMTz-)sp)69 z*B$?g4m84)R^nN?rllotI%LAar zIuoM@f3j<_-F;WZvThA=`FAMCP_IPKsQ#P0$l)+D?%8KdcKFE`a?aDN=e{Ssj7|=y zT#)Dj*01%swdBVP3E_T>_>vN-)L_SVy8Ks-$#cy~1MdnBn!yW6J;S!R$EcXwO_WZY zcoQM>N6x%x1Yskmrm{iX+FJZ8F%kTLPYgZRtSextH~WtY z@67&l;mW3C5eCtww%jCR(yF-`uAU_5$P_wQB#a>oMYiZGPIEnk;AXez0MA@k9TOUP z4GQUUh^=chNEH+q17u6N!yS(JY9Rvu`6x_t#OHC206Z{MugJ~@7(-yRB^APm>4QjP z%S-KHr<`RDFcfEIVKkbScJv8eL?W&(_Wgh<(_*AlF_A45JU$hQ&-!A_>dE>NjY?N~1vo{Z`)K83t3AP=| z?3IhnI@TI?7)@+1Tqo1T3|l>l&A_Sct~Y%C6KQXM>Gc_nlFx$3Tiz|fzkgpe5FL{T JwOaO3{{h~DnRoyI diff --git a/media/sqlgram/Boolean.png b/media/sqlgram/Boolean.png index cedd61a77534488a8bf4dabe3f4e2a6e405824a3..b44f358d666e975617f5a72fcbeec8135fe8ff82 100644 GIT binary patch literal 4682 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 KYE(e%qW%v~UG9ef literal 2919 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 R`zinc002ovPDHLkV1lXqVsHQe From c85a6d0b265357b27fb4b027327d72fc95bb4fff Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Fri, 10 Jul 2020 21:24:59 +0800 Subject: [PATCH 8/9] remove category in metadata --- br/backup-and-restore-storages.md | 1 - sql-statements/sql-statement-backup.md | 1 - sql-statements/sql-statement-restore.md | 1 - 3 files changed, 3 deletions(-) diff --git a/br/backup-and-restore-storages.md b/br/backup-and-restore-storages.md index 6e3529033116..59aa6552e0ee 100644 --- a/br/backup-and-restore-storages.md +++ b/br/backup-and-restore-storages.md @@ -1,7 +1,6 @@ --- title: BR 存储 summary: 了解 BR 中所用存储服务的 URL 格式。 -category: reference --- # BR 存储 diff --git a/sql-statements/sql-statement-backup.md b/sql-statements/sql-statement-backup.md index f45f8d26796a..61dd7a8801ab 100644 --- a/sql-statements/sql-statement-backup.md +++ b/sql-statements/sql-statement-backup.md @@ -1,7 +1,6 @@ --- title: BACKUP summary: TiDB 数据库中 BACKUP 的使用概况。 -category: reference --- # BACKUP diff --git a/sql-statements/sql-statement-restore.md b/sql-statements/sql-statement-restore.md index 94309fc30f97..6bc1bf8e015c 100644 --- a/sql-statements/sql-statement-restore.md +++ b/sql-statements/sql-statement-restore.md @@ -1,7 +1,6 @@ --- title: RESTORE summary: TiDB 数据库中 RESTORE 的使用概况。 -category: reference --- # RESTORE From 00e33e66bc20fc8f7f24933956df247a10f49bc7 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Mon, 13 Jul 2020 10:32:55 +0800 Subject: [PATCH 9/9] Update sql-statements/sql-statement-show-backups.md --- sql-statements/sql-statement-show-backups.md | 1 - 1 file changed, 1 deletion(-) diff --git a/sql-statements/sql-statement-show-backups.md b/sql-statements/sql-statement-show-backups.md index 0bb615049704..764dff7129d3 100644 --- a/sql-statements/sql-statement-show-backups.md +++ b/sql-statements/sql-statement-show-backups.md @@ -1,7 +1,6 @@ --- title: SHOW [BACKUPS|RESTORES] summary: TiDB 数据库中 SHOW [BACKUPS|RESTORES] 的使用概况。 -category: reference --- # SHOW [BACKUPS|RESTORES]