From 764f465d9a05ef8d4970bc1a999e1e6297dff3f1 Mon Sep 17 00:00:00 2001 From: Hillium Date: Tue, 19 May 2020 17:05:46 +0800 Subject: [PATCH 01/14] dumpling: add a how-to of dumpling. --- TOC.md | 1 + ...up-and-restore-using-mydumper-lightning.md | 6 ++ export-using-dumpling.md | 96 +++++++++++++++++++ mydumper-overview.md | 6 ++ 4 files changed, 109 insertions(+) create mode 100644 export-using-dumpling.md diff --git a/TOC.md b/TOC.md index 3577ed79de78..56139f9e1724 100644 --- a/TOC.md +++ b/TOC.md @@ -165,6 +165,7 @@ - [Ansible 常见运维操作](/maintain-tidb-using-ansible.md) + 备份与恢复 - [使用 Mydumper/TiDB Lightning 进行备份与恢复](/backup-and-restore-using-mydumper-lightning.md) + - [使用 Dumpling 进行数据导出](/export-using-dumpling.md) - [使用 BR 进行备份与恢复](/br/backup-and-restore-tool.md) - [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) + 定位异常查询 diff --git a/backup-and-restore-using-mydumper-lightning.md b/backup-and-restore-using-mydumper-lightning.md index a6a73e048724..f9dd1874a023 100644 --- a/backup-and-restore-using-mydumper-lightning.md +++ b/backup-and-restore-using-mydumper-lightning.md @@ -6,6 +6,12 @@ aliases: ['/docs-cn/dev/how-to/maintain/backup-and-restore/mydumper-lightning/', # 使用 Mydumper/TiDB Lightning 进行备份与恢复 +> **警告:** +> +> 本文中提到的 `MyDumper` 已经不再由我们维护。 +> +> 建议尽可能转移到新的数据导出工具 [Dumpling](/export-using-dumpling.md) 加上现有的 [TiDB Lightning](/tidb-lightning/tidb-lightning-overview.md) 完成全量数据的备份与恢复。 + 本文档将详细介绍如何使用 Mydumper/TiDB Lightning 对 TiDB 进行全量备份与恢复。增量备份与恢复可使用 [TiDB Binlog](/tidb-binlog/tidb-binlog-overview.md)。 这里假定 TiDB 服务信息如下: diff --git a/export-using-dumpling.md b/export-using-dumpling.md new file mode 100644 index 000000000000..43aced6ba2dc --- /dev/null +++ b/export-using-dumpling.md @@ -0,0 +1,96 @@ +--- +title: 使用 Dumpling 进行数据导出 +summary: 使用新的导出工具 Dumpling 导出或者备份数据。 +category: how-to +--- + +# 使用 Dumpling 进行数据导出 + +本文档将会介绍如何使用新的导出工具 Dumpling。 +它可以把 TiDB 中存储的数据导出为 SQL 或者 CSV 格式,可以用它完成逻辑上的全量备份或者导出。 +如果需要直接备份 SST 文件(KV 对)或者对延迟不敏感的增量备份,请参阅 [BR](/br/backup-and-restore-tool.md)。 +如果需要实时的增量备份,请参阅 [TiCDC](/ticdc/ticdc-overview.md)。 + +接下来,我们会假设你已经启动了待导出的集群。当然,如果你只是想玩一下这个工具,也可以用 [TiUP](/tiup/tiup-overview.md) 现场搭建一个: + +{{< copyable "shell-regular" >}} + +```shell +tiup playground +``` + +然后用 `sysbench` 灌入测试用的数据: + +{{< copyable "shell-regular" >}} + +```shell +sysbench --mysql-host=127.0.0.1 \ + --mysql-user=root \ + --mysql-port=4000 \ + --mysql-db=test \ + oltp_insert \ + --tables=3 --table-size=1000 prepare +``` + +## 从 TiDB 导出数据 + +使用如下命令导出数据: + +{{< copyable "shell-regular" >}} + +```shell +dumpling \ + -u root \ + -P 4000 \ + -H 127.0.0.1 \ + --filetype sql \ + --threads 32 \ + -o /tmp/test \ + -F $(( 1024 * 1024 * 256 )) +``` + +这个命令中,`-H`,`-P`,`-u` 是经典的“地址,端口,用户”三元组。如果需要密码验证,可以用 `-p $YOUR_SECRET_PASSWORD` 传给 Dumpling。 + +默认情况下,除了系统数据库中的表之外,Dumpling 会导出整个数据库的表。你可以使用 `--where` 来选定要导出的记录。假如导出数据的格式是 CSV(使用 `--filetype csv` 即可导出 CSV 文件),还可以使用 `--sql` 导出指定 SQL 选择出来的记录。 + +> **注意:** +> +> 截止到这篇文章写作时候,Dumpling 暂时还不支持仅导出用户指定的某几张表(见[这个 issue](https://github.com/pingcap/dumpling/issues/76))。 +> 如果你确实需要这些功能,可以先使用 [MyDumper](/backup-and-restore-using-mydumper-lightning.md)。 + +默认情况下,导出的文件会存储到 `./export-` 目录下。你可以使用 `-o` 来选择存储导出文件的目录。`-F` 选项能够指定单个文件的最大大小(和 MyDumper 不同,这里的单位是字节),与之相似的是 `-r` 选项,它指定单个文件的最大记录数(或者说,数据库中的行数)。利用这些参数可以让 Dumpling 的并行度更高。 + +除此之外,你可以使用 `--snapshot` 标志来指定欲导出快照的时间戳。与之相关的是 `--consistency`,这个标志控制导出数据“一致性保证”的方式。对于 TiDB 来说,默认情况下我们会通过获取某个时间戳的快照来保证一致性,因此我们才可以使用 `--snapshot` 参数指定要备份的时间戳。 + +一切完成之后,你应该可以在 `/tmp/test` 看到导出的文件了: + +``` shell +$ ls -lh /tmp/test | awk '{print $5 "\t" $9}' + +140B metadata +66B test-schema-create.sql +300B test.sbtest1-schema.sql +190K test.sbtest1.0.sql +300B test.sbtest2-schema.sql +190K test.sbtest2.0.sql +300B test.sbtest3-schema.sql +190K test.sbtest3.0.sql +``` + +另外,假如数据量非常大,可以提前调长 GC 时间避免因为导出中 GC 导致导出失败: + +{{< copyable "sql" >}} + +```sql +update mysql.tidb set VARIABLE_VALUE = '720h' where VARIABLE_NAME = 'tikv_gc_life_time'; +``` + +在操作结束之后,再将 GC 时间调回原样(默认是 `10m`): + +{{< copyable "sql" >}} + +```sql +update mysql.tidb set VARIABLE_VALUE = '10m' where VARIABLE_NAME = 'tikv_gc_life_time'; +``` + +最后,所有的这些导出数据都可以用 [Lightning](/tidb-lightning/tidb-lightning-tidb-backend.md) 导入回 TiDB。 \ No newline at end of file diff --git a/mydumper-overview.md b/mydumper-overview.md index 49cb804b0df0..7bf178200243 100644 --- a/mydumper-overview.md +++ b/mydumper-overview.md @@ -7,6 +7,12 @@ aliases: ['/docs-cn/dev/reference/tools/mydumper/'] # Mydumper 使用文档 +> **警告:** +> +> 本文中提到的 `MyDumper` 已经不再由我们维护。 +> +> 建议尽可能转移到新的数据导出工具 [Dumpling](/export-using-dumpling.md)。 + ## Mydumper 简介 [Mydumper](https://github.com/pingcap/mydumper) 是一个 fork 项目,针对 TiDB 的特性进行了优化,推荐使用此工具对 TiDB 进行逻辑备份。 From feb154c63035e240aa72635b1e6c8d9fe2a8f78c Mon Sep 17 00:00:00 2001 From: Hillium Date: Wed, 20 May 2020 10:36:55 +0800 Subject: [PATCH 02/14] dumpling: change document by code review. --- export-using-dumpling.md | 50 ++++++++++++++++++++++------------------ mydumper-overview.md | 2 +- 2 files changed, 28 insertions(+), 24 deletions(-) diff --git a/export-using-dumpling.md b/export-using-dumpling.md index 43aced6ba2dc..8f96f232f9bb 100644 --- a/export-using-dumpling.md +++ b/export-using-dumpling.md @@ -11,26 +11,7 @@ category: how-to 如果需要直接备份 SST 文件(KV 对)或者对延迟不敏感的增量备份,请参阅 [BR](/br/backup-and-restore-tool.md)。 如果需要实时的增量备份,请参阅 [TiCDC](/ticdc/ticdc-overview.md)。 -接下来,我们会假设你已经启动了待导出的集群。当然,如果你只是想玩一下这个工具,也可以用 [TiUP](/tiup/tiup-overview.md) 现场搭建一个: - -{{< copyable "shell-regular" >}} - -```shell -tiup playground -``` - -然后用 `sysbench` 灌入测试用的数据: - -{{< copyable "shell-regular" >}} - -```shell -sysbench --mysql-host=127.0.0.1 \ - --mysql-user=root \ - --mysql-port=4000 \ - --mysql-db=test \ - oltp_insert \ - --tables=3 --table-size=1000 prepare -``` +Dumpling 需要在已经启动的集群上执行导出命令。这篇文章接下来假设在 `127.0.0.1:4000` 有一个 TiDB 实例,并且那个 TiDB 中有无密码的 root 用户。 ## 从 TiDB 导出数据 @@ -51,16 +32,39 @@ dumpling \ 这个命令中,`-H`,`-P`,`-u` 是经典的“地址,端口,用户”三元组。如果需要密码验证,可以用 `-p $YOUR_SECRET_PASSWORD` 传给 Dumpling。 -默认情况下,除了系统数据库中的表之外,Dumpling 会导出整个数据库的表。你可以使用 `--where` 来选定要导出的记录。假如导出数据的格式是 CSV(使用 `--filetype csv` 即可导出 CSV 文件),还可以使用 `--sql` 导出指定 SQL 选择出来的记录。 +默认情况下,除了系统数据库中的表之外,Dumpling 会导出整个数据库的表。你可以使用 `--where ` 来选定要导出的记录。假如导出数据的格式是 CSV(使用 `--filetype csv` 即可导出 CSV 文件),还可以使用 `--sql ` 导出指定 SQL 选择出来的记录;例如,导出所有 `id < 100` 的 > **注意:** > -> 截止到这篇文章写作时候,Dumpling 暂时还不支持仅导出用户指定的某几张表(见[这个 issue](https://github.com/pingcap/dumpling/issues/76))。 +> 截止到这篇文章写作时候,Dumpling 暂时还不支持仅导出用户指定的某几张表(即 `-T` 标志,见[这个 issue](https://github.com/pingcap/dumpling/issues/76))。 > 如果你确实需要这些功能,可以先使用 [MyDumper](/backup-and-restore-using-mydumper-lightning.md)。 默认情况下,导出的文件会存储到 `./export-` 目录下。你可以使用 `-o` 来选择存储导出文件的目录。`-F` 选项能够指定单个文件的最大大小(和 MyDumper 不同,这里的单位是字节),与之相似的是 `-r` 选项,它指定单个文件的最大记录数(或者说,数据库中的行数)。利用这些参数可以让 Dumpling 的并行度更高。 -除此之外,你可以使用 `--snapshot` 标志来指定欲导出快照的时间戳。与之相关的是 `--consistency`,这个标志控制导出数据“一致性保证”的方式。对于 TiDB 来说,默认情况下我们会通过获取某个时间戳的快照来保证一致性,因此我们才可以使用 `--snapshot` 参数指定要备份的时间戳。 +比如说,使用以下指令,可以导出所有 `id < 100` 的记录: + +{{< copyable "shell-regular" >}} + +```shell +./dumpling \ + -u root \ + -P 4000 \ + -H 127.0.0.1 \ + -o /tmp/test \ + --where "id < 100" +``` + +> **提示:** +> +> 这里需要在要导出的所有表上执行 `select * from where ` 语句。如果部分表没有指定的字段,那么导出会失败。 + +还有一个尚未在上面展示出来的标志是 `--consistency `,这个标志控制导出数据“一致性保证”的方式。对于 TiDB 来说,默认情况下我们会通过获取某个时间戳的快照来保证一致性(即 `--consistency snapshot`)。在使用 snapshot 来保证一致性的时候,我们可以使用 `--snapshot` 参数指定要备份的时间戳。我们还可以使用以下的一致性级别: + +- `flush`: 使用 [`FLUSH TABLES WITH READ LOCK`](https://dev.mysql.com/doc/refman/8.0/en/flush.html#flush-tables-with-read-lock) 来保证一致性。 +- `snapshot`: 获取指定时间戳的一致性快照并导出。 +- `lock`: 为待导出的所有表上读锁。 +- `none`: 不做任何一致性保证。 +- `auto`: 对 MySQL 使用 `flush`,对 TiDB 使用 `snapshot`。 一切完成之后,你应该可以在 `/tmp/test` 看到导出的文件了: diff --git a/mydumper-overview.md b/mydumper-overview.md index 7bf178200243..4b40a4ad2a64 100644 --- a/mydumper-overview.md +++ b/mydumper-overview.md @@ -15,7 +15,7 @@ aliases: ['/docs-cn/dev/reference/tools/mydumper/'] ## Mydumper 简介 -[Mydumper](https://github.com/pingcap/mydumper) 是一个 fork 项目,针对 TiDB 的特性进行了优化,推荐使用此工具对 TiDB 进行逻辑备份。 +[Mydumper](https://github.com/pingcap/mydumper) 是一个 fork 项目,针对 TiDB 的特性进行了优化,使用此工具可以完成对 TiDB 进行逻辑备份。 Mydumper 包含在 tidb-enterprise-tools 安装包中,可[在此下载](/download-ecosystem-tools.md)。 From d784de98a64ff427226a44722e91ca27f7511221 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Wed, 20 May 2020 10:40:37 +0800 Subject: [PATCH 03/14] Update mydumper-overview.md --- mydumper-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mydumper-overview.md b/mydumper-overview.md index 4b40a4ad2a64..4427fd54ce0c 100644 --- a/mydumper-overview.md +++ b/mydumper-overview.md @@ -15,7 +15,7 @@ aliases: ['/docs-cn/dev/reference/tools/mydumper/'] ## Mydumper 简介 -[Mydumper](https://github.com/pingcap/mydumper) 是一个 fork 项目,针对 TiDB 的特性进行了优化,使用此工具可以完成对 TiDB 进行逻辑备份。 +[Mydumper](https://github.com/pingcap/mydumper) 是一个 fork 项目,针对 TiDB 的特性进行了优化,使用此工具可以完成对 TiDB 的逻辑备份。 Mydumper 包含在 tidb-enterprise-tools 安装包中,可[在此下载](/download-ecosystem-tools.md)。 From 446d081c1c8f8c30a38ba8fbcc2670f06068be88 Mon Sep 17 00:00:00 2001 From: lilin90 Date: Wed, 20 May 2020 15:20:45 +0800 Subject: [PATCH 04/14] *: udpate file name and wording --- TOC.md | 4 +- ...mpling.md => export-data-using-dumpling.md | 42 ++++++++++--------- 2 files changed, 24 insertions(+), 22 deletions(-) rename export-using-dumpling.md => export-data-using-dumpling.md (52%) diff --git a/TOC.md b/TOC.md index b088874216a5..a120351c7333 100644 --- a/TOC.md +++ b/TOC.md @@ -75,7 +75,8 @@ + [使用 TiUP](/scale-tidb-using-tiup.md) @刘金龙 + [使用 TiDB Operator](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/scale-a-tidb-cluster/) + 备份与恢复 - + [使用 Mydumper 和 TiDB Lightning](/backup-and-restore-using-mydumper-lightning.md) @栾成 + + [使用 Mydumper 和 TiDB Lightning 进行备份与恢复](/backup-and-restore-using-mydumper-lightning.md) @栾成 + + [使用 Dumpling 导出 TiDB 数据](/export-data-using-dumpling.md) + 使用 BR 工具 + [使用 BR 进行备份与恢复](/br/backup-and-restore-tool.md) @栾成 + [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) @栾成 @@ -553,7 +554,6 @@ - [Ansible 常见运维操作](/maintain-tidb-using-ansible.md) + 备份与恢复 - [使用 Mydumper/TiDB Lightning 进行备份与恢复](/backup-and-restore-using-mydumper-lightning.md) - - [使用 Dumpling 进行数据导出](/export-using-dumpling.md) - [使用 BR 进行备份与恢复](/br/backup-and-restore-tool.md) - [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) + 定位异常查询 diff --git a/export-using-dumpling.md b/export-data-using-dumpling.md similarity index 52% rename from export-using-dumpling.md rename to export-data-using-dumpling.md index 8f96f232f9bb..e16d00815768 100644 --- a/export-using-dumpling.md +++ b/export-data-using-dumpling.md @@ -4,14 +4,13 @@ summary: 使用新的导出工具 Dumpling 导出或者备份数据。 category: how-to --- -# 使用 Dumpling 进行数据导出 +# 使用 Dumpling 导出 TiDB 数据 -本文档将会介绍如何使用新的导出工具 Dumpling。 -它可以把 TiDB 中存储的数据导出为 SQL 或者 CSV 格式,可以用它完成逻辑上的全量备份或者导出。 -如果需要直接备份 SST 文件(KV 对)或者对延迟不敏感的增量备份,请参阅 [BR](/br/backup-and-restore-tool.md)。 -如果需要实时的增量备份,请参阅 [TiCDC](/ticdc/ticdc-overview.md)。 +本文档介绍如何使用数据导出工具 [Dumpling](https://github.com/pingcap/dumpling)。该工具可以把存储在 TiDB 中的数据导出为 SQL 或者 CSV 格式,可以用于完成逻辑上的全量备份或者导出。 -Dumpling 需要在已经启动的集群上执行导出命令。这篇文章接下来假设在 `127.0.0.1:4000` 有一个 TiDB 实例,并且那个 TiDB 中有无密码的 root 用户。 +如果需要直接备份 SST 文件(KV 对)或者对延迟不敏感的增量备份,请参阅 [BR](/br/backup-and-restore-tool.md)。如果需要实时的增量备份,请参阅 [TiCDC](/ticdc/ticdc-overview.md)。 + +使用 Dumpling 时,需要在已经启动的集群上执行导出命令。本文假设在 `127.0.0.1:4000` 有一个 TiDB 实例,并且这个 TiDB 实例中有无密码的 root 用户。 ## 从 TiDB 导出数据 @@ -30,18 +29,21 @@ dumpling \ -F $(( 1024 * 1024 * 256 )) ``` -这个命令中,`-H`,`-P`,`-u` 是经典的“地址,端口,用户”三元组。如果需要密码验证,可以用 `-p $YOUR_SECRET_PASSWORD` 传给 Dumpling。 +上述命令中,`-H`、`-P`、`-u` 是经典的“地址,端口,用户”三元组。如果需要密码验证,可以用 `-p $YOUR_SECRET_PASSWORD` 传给 Dumpling。 -默认情况下,除了系统数据库中的表之外,Dumpling 会导出整个数据库的表。你可以使用 `--where ` 来选定要导出的记录。假如导出数据的格式是 CSV(使用 `--filetype csv` 即可导出 CSV 文件),还可以使用 `--sql ` 导出指定 SQL 选择出来的记录;例如,导出所有 `id < 100` 的 +默认情况下,除了系统数据库中的表之外,Dumpling 会导出整个数据库的表。你可以使用 `--where ` 来选定要导出的记录。假如导出数据的格式是 CSV(使用 `--filetype csv` 即可导出 CSV 文件),还可以使用 `--sql ` 导出指定 SQL 选择出来的记录,例如,导出所有 `id < 100` 的记录。 > **注意:** > -> 截止到这篇文章写作时候,Dumpling 暂时还不支持仅导出用户指定的某几张表(即 `-T` 标志,见[这个 issue](https://github.com/pingcap/dumpling/issues/76))。 -> 如果你确实需要这些功能,可以先使用 [MyDumper](/backup-and-restore-using-mydumper-lightning.md)。 +> 目前 Dumpling 不支持仅导出用户指定的某几张表(即 `-T` 标志,见[这个 issue](https://github.com/pingcap/dumpling/issues/76))。如果你确实需要这些功能,可以先使用 [MyDumper](/backup-and-restore-using-mydumper-lightning.md)。 + +默认情况下,导出的文件会存储到 `./export-` 目录下。常用参数如下: -默认情况下,导出的文件会存储到 `./export-` 目录下。你可以使用 `-o` 来选择存储导出文件的目录。`-F` 选项能够指定单个文件的最大大小(和 MyDumper 不同,这里的单位是字节),与之相似的是 `-r` 选项,它指定单个文件的最大记录数(或者说,数据库中的行数)。利用这些参数可以让 Dumpling 的并行度更高。 +- `-o` 用于选择存储导出文件的目录。 +- `-F` 选项用于指定单个文件的最大大小(和 MyDumper 不同,这里的单位是字节)。 +- `-r` 选项用于指定单个文件的最大记录数(或者说,数据库中的行数)。 -比如说,使用以下指令,可以导出所有 `id < 100` 的记录: +利用以上参数可以让 Dumpling 的并行度更高。比如,使用以下指令,可以导出所有 `id < 100` 的记录: {{< copyable "shell-regular" >}} @@ -54,17 +56,17 @@ dumpling \ --where "id < 100" ``` -> **提示:** +> **注意:** > > 这里需要在要导出的所有表上执行 `select * from where ` 语句。如果部分表没有指定的字段,那么导出会失败。 -还有一个尚未在上面展示出来的标志是 `--consistency `,这个标志控制导出数据“一致性保证”的方式。对于 TiDB 来说,默认情况下我们会通过获取某个时间戳的快照来保证一致性(即 `--consistency snapshot`)。在使用 snapshot 来保证一致性的时候,我们可以使用 `--snapshot` 参数指定要备份的时间戳。我们还可以使用以下的一致性级别: +还有一个尚未在上面展示出来的标志是 `--consistency `,这个标志控制导出数据“一致性保证”的方式。对于 TiDB 来说,默认情况下,会通过获取某个时间戳的快照来保证一致性(即 `--consistency snapshot`)。在使用 snapshot 来保证一致性的时候,可以使用 `--snapshot` 参数指定要备份的时间戳。还可以使用以下的一致性级别: -- `flush`: 使用 [`FLUSH TABLES WITH READ LOCK`](https://dev.mysql.com/doc/refman/8.0/en/flush.html#flush-tables-with-read-lock) 来保证一致性。 -- `snapshot`: 获取指定时间戳的一致性快照并导出。 -- `lock`: 为待导出的所有表上读锁。 -- `none`: 不做任何一致性保证。 -- `auto`: 对 MySQL 使用 `flush`,对 TiDB 使用 `snapshot`。 +- `flush`:使用 [`FLUSH TABLES WITH READ LOCK`](https://dev.mysql.com/doc/refman/8.0/en/flush.html#flush-tables-with-read-lock) 来保证一致性。 +- `snapshot`:获取指定时间戳的一致性快照并导出。 +- `lock`:为待导出的所有表上读锁。 +- `none`:不做任何一致性保证。 +- `auto`:对 MySQL 使用 `flush`,对 TiDB 使用 `snapshot`。 一切完成之后,你应该可以在 `/tmp/test` 看到导出的文件了: @@ -81,7 +83,7 @@ $ ls -lh /tmp/test | awk '{print $5 "\t" $9}' 190K test.sbtest3.0.sql ``` -另外,假如数据量非常大,可以提前调长 GC 时间避免因为导出中 GC 导致导出失败: +另外,假如数据量非常大,可以提前调长 GC 时间,以避免因为导出过程中发生 GC 导致导出失败: {{< copyable "sql" >}} From de2afb9c891cccb2b031381a9b9d6f1a225f759d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Thu, 21 May 2020 12:23:07 +0800 Subject: [PATCH 05/14] Apply suggestions from code review Co-authored-by: Lilian Lee --- TOC.md | 2 +- backup-and-restore-using-mydumper-lightning.md | 4 +--- export-data-using-dumpling.md | 4 ++-- mydumper-overview.md | 4 +--- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/TOC.md b/TOC.md index a120351c7333..002187f8e030 100644 --- a/TOC.md +++ b/TOC.md @@ -76,7 +76,7 @@ + [使用 TiDB Operator](https://pingcap.com/docs-cn/tidb-in-kubernetes/stable/scale-a-tidb-cluster/) + 备份与恢复 + [使用 Mydumper 和 TiDB Lightning 进行备份与恢复](/backup-and-restore-using-mydumper-lightning.md) @栾成 - + [使用 Dumpling 导出 TiDB 数据](/export-data-using-dumpling.md) + + [使用 Dumpling 导出或备份 TiDB 数据](/export-or-backup-using-dumpling.md) + 使用 BR 工具 + [使用 BR 进行备份与恢复](/br/backup-and-restore-tool.md) @栾成 + [BR 备份与恢复场景示例](/br/backup-and-restore-use-cases.md) @栾成 diff --git a/backup-and-restore-using-mydumper-lightning.md b/backup-and-restore-using-mydumper-lightning.md index f9dd1874a023..e1344746b57c 100644 --- a/backup-and-restore-using-mydumper-lightning.md +++ b/backup-and-restore-using-mydumper-lightning.md @@ -8,9 +8,7 @@ aliases: ['/docs-cn/dev/how-to/maintain/backup-and-restore/mydumper-lightning/', > **警告:** > -> 本文中提到的 `MyDumper` 已经不再由我们维护。 -> -> 建议尽可能转移到新的数据导出工具 [Dumpling](/export-using-dumpling.md) 加上现有的 [TiDB Lightning](/tidb-lightning/tidb-lightning-overview.md) 完成全量数据的备份与恢复。 +> 本文中提到的 `MyDumper` 导出方式我们已不再维护。建议使用新的数据导出工具 [Dumpling](/export-data-using-dumpling.md)。 本文档将详细介绍如何使用 Mydumper/TiDB Lightning 对 TiDB 进行全量备份与恢复。增量备份与恢复可使用 [TiDB Binlog](/tidb-binlog/tidb-binlog-overview.md)。 diff --git a/export-data-using-dumpling.md b/export-data-using-dumpling.md index e16d00815768..f185c4ac5cf5 100644 --- a/export-data-using-dumpling.md +++ b/export-data-using-dumpling.md @@ -4,7 +4,7 @@ summary: 使用新的导出工具 Dumpling 导出或者备份数据。 category: how-to --- -# 使用 Dumpling 导出 TiDB 数据 +# 使用 Dumpling 导出或备份 TiDB 数据 本文档介绍如何使用数据导出工具 [Dumpling](https://github.com/pingcap/dumpling)。该工具可以把存储在 TiDB 中的数据导出为 SQL 或者 CSV 格式,可以用于完成逻辑上的全量备份或者导出。 @@ -99,4 +99,4 @@ update mysql.tidb set VARIABLE_VALUE = '720h' where VARIABLE_NAME = 'tikv_gc_lif update mysql.tidb set VARIABLE_VALUE = '10m' where VARIABLE_NAME = 'tikv_gc_life_time'; ``` -最后,所有的这些导出数据都可以用 [Lightning](/tidb-lightning/tidb-lightning-tidb-backend.md) 导入回 TiDB。 \ No newline at end of file +最后,所有的这些导出数据都可以用 [Lightning](/tidb-lightning/tidb-lightning-tidb-backend.md) 导入回 TiDB。 diff --git a/mydumper-overview.md b/mydumper-overview.md index 4427fd54ce0c..cd6ca9e9fb36 100644 --- a/mydumper-overview.md +++ b/mydumper-overview.md @@ -9,9 +9,7 @@ aliases: ['/docs-cn/dev/reference/tools/mydumper/'] > **警告:** > -> 本文中提到的 `MyDumper` 已经不再由我们维护。 -> -> 建议尽可能转移到新的数据导出工具 [Dumpling](/export-using-dumpling.md)。 +> 本文中提到的 `MyDumper` 导出方式我们已不再维护。建议使用新的数据导出工具 [Dumpling](/export-data-using-dumpling.md)。 ## Mydumper 简介 From 0e037261e470c00d7e922ee03e42eae22b7fab3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Thu, 21 May 2020 14:32:07 +0800 Subject: [PATCH 06/14] dumpling: move intrduction of --sql and --where. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原先,介绍这两个命令的文字似乎被放在了错误的地方。 --- export-data-using-dumpling.md | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/export-data-using-dumpling.md b/export-data-using-dumpling.md index f185c4ac5cf5..d458c3b5d78c 100644 --- a/export-data-using-dumpling.md +++ b/export-data-using-dumpling.md @@ -31,19 +31,21 @@ dumpling \ 上述命令中,`-H`、`-P`、`-u` 是经典的“地址,端口,用户”三元组。如果需要密码验证,可以用 `-p $YOUR_SECRET_PASSWORD` 传给 Dumpling。 -默认情况下,除了系统数据库中的表之外,Dumpling 会导出整个数据库的表。你可以使用 `--where ` 来选定要导出的记录。假如导出数据的格式是 CSV(使用 `--filetype csv` 即可导出 CSV 文件),还可以使用 `--sql ` 导出指定 SQL 选择出来的记录,例如,导出所有 `id < 100` 的记录。 +默认情况下,除了系统数据库中的表之外,Dumpling 会导出整个数据库的表。你可以使用 `--where ` 来选定要导出的记录。假如导出数据的格式是 CSV(使用 `--filetype csv` 即可导出 CSV 文件),还可以使用 `--sql ` 导出指定 SQL 选择出来的记录,例如,导出 `test.sbtest1` 中所有 `id < 100` 的记录: -> **注意:** -> -> 目前 Dumpling 不支持仅导出用户指定的某几张表(即 `-T` 标志,见[这个 issue](https://github.com/pingcap/dumpling/issues/76))。如果你确实需要这些功能,可以先使用 [MyDumper](/backup-and-restore-using-mydumper-lightning.md)。 - -默认情况下,导出的文件会存储到 `./export-` 目录下。常用参数如下: +{{< copyable "shell-regular" >}} -- `-o` 用于选择存储导出文件的目录。 -- `-F` 选项用于指定单个文件的最大大小(和 MyDumper 不同,这里的单位是字节)。 -- `-r` 选项用于指定单个文件的最大记录数(或者说,数据库中的行数)。 +```shell +./dumpling \ + -u root \ + -P 4000 \ + -H 127.0.0.1 \ + -o /tmp/test \ + --filetype csv \ + --sql "select * from `test`.`sbtest1` where id < 100" +``` -利用以上参数可以让 Dumpling 的并行度更高。比如,使用以下指令,可以导出所有 `id < 100` 的记录: +在导出目标为 SQL 的时候,`--sql` 暂时不可用。但是仍旧可以用 `--where` 来过滤要导出的行,使用以下指令,可以导出所有 `id < 100` 的记录: {{< copyable "shell-regular" >}} @@ -56,6 +58,18 @@ dumpling \ --where "id < 100" ``` +> **注意:** +> +> 目前 Dumpling 不支持仅导出用户指定的某几张表(即 `-T` 标志,见[这个 issue](https://github.com/pingcap/dumpling/issues/76))。如果你确实需要这些功能,可以先使用 [MyDumper](/backup-and-restore-using-mydumper-lightning.md)。 + +默认情况下,导出的文件会存储到 `./export-` 目录下。常用参数如下: + +- `-o` 用于选择存储导出文件的目录。 +- `-F` 选项用于指定单个文件的最大大小(和 MyDumper 不同,这里的单位是字节)。 +- `-r` 选项用于指定单个文件的最大记录数(或者说,数据库中的行数)。 + +利用以上参数可以让 Dumpling 的并行度更高。 + > **注意:** > > 这里需要在要导出的所有表上执行 `select * from where ` 语句。如果部分表没有指定的字段,那么导出会失败。 From 63012c8e27c0f61f3bb95407ea46d26960d358ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Thu, 21 May 2020 14:33:44 +0800 Subject: [PATCH 07/14] dumpling: move a warnning of --where flag --- export-data-using-dumpling.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/export-data-using-dumpling.md b/export-data-using-dumpling.md index d458c3b5d78c..51eabcc80437 100644 --- a/export-data-using-dumpling.md +++ b/export-data-using-dumpling.md @@ -47,6 +47,10 @@ dumpling \ 在导出目标为 SQL 的时候,`--sql` 暂时不可用。但是仍旧可以用 `--where` 来过滤要导出的行,使用以下指令,可以导出所有 `id < 100` 的记录: +> **注意:** +> +> 这里需要在要导出的所有表上执行 `select * from where id < 100` 语句。如果部分表没有指定的字段,那么导出会失败。 + {{< copyable "shell-regular" >}} ```shell @@ -70,10 +74,6 @@ dumpling \ 利用以上参数可以让 Dumpling 的并行度更高。 -> **注意:** -> -> 这里需要在要导出的所有表上执行 `select * from where ` 语句。如果部分表没有指定的字段,那么导出会失败。 - 还有一个尚未在上面展示出来的标志是 `--consistency `,这个标志控制导出数据“一致性保证”的方式。对于 TiDB 来说,默认情况下,会通过获取某个时间戳的快照来保证一致性(即 `--consistency snapshot`)。在使用 snapshot 来保证一致性的时候,可以使用 `--snapshot` 参数指定要备份的时间戳。还可以使用以下的一致性级别: - `flush`:使用 [`FLUSH TABLES WITH READ LOCK`](https://dev.mysql.com/doc/refman/8.0/en/flush.html#flush-tables-with-read-lock) 来保证一致性。 From 66bd9c8791bdadab5fef967cbd470e2d8d7954d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Thu, 21 May 2020 14:40:28 +0800 Subject: [PATCH 08/14] Rename export-data-using-dumpling.md to export-or-backup-using-dumpling.md --- ...t-data-using-dumpling.md => export-or-backup-using-dumpling.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename export-data-using-dumpling.md => export-or-backup-using-dumpling.md (100%) diff --git a/export-data-using-dumpling.md b/export-or-backup-using-dumpling.md similarity index 100% rename from export-data-using-dumpling.md rename to export-or-backup-using-dumpling.md From a39267af021c1f5b6848c67f37bd5a53a6f08668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Thu, 21 May 2020 14:47:10 +0800 Subject: [PATCH 09/14] dumpling: fix some links --- backup-and-restore-using-mydumper-lightning.md | 2 +- mydumper-overview.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/backup-and-restore-using-mydumper-lightning.md b/backup-and-restore-using-mydumper-lightning.md index e1344746b57c..7b79b86901cf 100644 --- a/backup-and-restore-using-mydumper-lightning.md +++ b/backup-and-restore-using-mydumper-lightning.md @@ -8,7 +8,7 @@ aliases: ['/docs-cn/dev/how-to/maintain/backup-and-restore/mydumper-lightning/', > **警告:** > -> 本文中提到的 `MyDumper` 导出方式我们已不再维护。建议使用新的数据导出工具 [Dumpling](/export-data-using-dumpling.md)。 +> 本文中提到的 `MyDumper` 导出方式我们已不再维护。建议使用新的数据导出工具 [Dumpling](/export-or-backup-using-dumpling.md)。 本文档将详细介绍如何使用 Mydumper/TiDB Lightning 对 TiDB 进行全量备份与恢复。增量备份与恢复可使用 [TiDB Binlog](/tidb-binlog/tidb-binlog-overview.md)。 diff --git a/mydumper-overview.md b/mydumper-overview.md index cd6ca9e9fb36..5a340c26c83d 100644 --- a/mydumper-overview.md +++ b/mydumper-overview.md @@ -9,7 +9,7 @@ aliases: ['/docs-cn/dev/reference/tools/mydumper/'] > **警告:** > -> 本文中提到的 `MyDumper` 导出方式我们已不再维护。建议使用新的数据导出工具 [Dumpling](/export-data-using-dumpling.md)。 +> 本文中提到的 `MyDumper` 导出方式我们已不再维护。建议使用新的数据导出工具 [Dumpling](/export-or-backup-using-dumpling.md)。 ## Mydumper 简介 From 1ab5ee98977466f27c67de8cdc0b5df259197f7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Thu, 21 May 2020 23:33:13 +0800 Subject: [PATCH 10/14] Update export-or-backup-using-dumpling.md Co-authored-by: Lilian Lee --- export-or-backup-using-dumpling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export-or-backup-using-dumpling.md b/export-or-backup-using-dumpling.md index 51eabcc80437..cc826f53c1b6 100644 --- a/export-or-backup-using-dumpling.md +++ b/export-or-backup-using-dumpling.md @@ -1,5 +1,5 @@ --- -title: 使用 Dumpling 进行数据导出 +title: 使用 Dumpling 导出或备份 TiDB 数据 summary: 使用新的导出工具 Dumpling 导出或者备份数据。 category: how-to --- From d50d517c729b0e61ce14e5b331d958e19c5fe85a Mon Sep 17 00:00:00 2001 From: Hillium Date: Mon, 25 May 2020 16:04:03 +0800 Subject: [PATCH 11/14] mydumper: remove deprecated info for mydumper --- backup-and-restore-using-mydumper-lightning.md | 4 ---- mydumper-overview.md | 4 ---- 2 files changed, 8 deletions(-) diff --git a/backup-and-restore-using-mydumper-lightning.md b/backup-and-restore-using-mydumper-lightning.md index 7b79b86901cf..a6a73e048724 100644 --- a/backup-and-restore-using-mydumper-lightning.md +++ b/backup-and-restore-using-mydumper-lightning.md @@ -6,10 +6,6 @@ aliases: ['/docs-cn/dev/how-to/maintain/backup-and-restore/mydumper-lightning/', # 使用 Mydumper/TiDB Lightning 进行备份与恢复 -> **警告:** -> -> 本文中提到的 `MyDumper` 导出方式我们已不再维护。建议使用新的数据导出工具 [Dumpling](/export-or-backup-using-dumpling.md)。 - 本文档将详细介绍如何使用 Mydumper/TiDB Lightning 对 TiDB 进行全量备份与恢复。增量备份与恢复可使用 [TiDB Binlog](/tidb-binlog/tidb-binlog-overview.md)。 这里假定 TiDB 服务信息如下: diff --git a/mydumper-overview.md b/mydumper-overview.md index 5a340c26c83d..12bcc8097d2d 100644 --- a/mydumper-overview.md +++ b/mydumper-overview.md @@ -7,10 +7,6 @@ aliases: ['/docs-cn/dev/reference/tools/mydumper/'] # Mydumper 使用文档 -> **警告:** -> -> 本文中提到的 `MyDumper` 导出方式我们已不再维护。建议使用新的数据导出工具 [Dumpling](/export-or-backup-using-dumpling.md)。 - ## Mydumper 简介 [Mydumper](https://github.com/pingcap/mydumper) 是一个 fork 项目,针对 TiDB 的特性进行了优化,使用此工具可以完成对 TiDB 的逻辑备份。 From 325c78a0ef56145d4191f498a146909d056918e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Tue, 26 May 2020 15:18:46 +0800 Subject: [PATCH 12/14] Update export-or-backup-using-dumpling.md --- export-or-backup-using-dumpling.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/export-or-backup-using-dumpling.md b/export-or-backup-using-dumpling.md index cc826f53c1b6..d22cad6d27a7 100644 --- a/export-or-backup-using-dumpling.md +++ b/export-or-backup-using-dumpling.md @@ -29,7 +29,7 @@ dumpling \ -F $(( 1024 * 1024 * 256 )) ``` -上述命令中,`-H`、`-P`、`-u` 是经典的“地址,端口,用户”三元组。如果需要密码验证,可以用 `-p $YOUR_SECRET_PASSWORD` 传给 Dumpling。 +上述命令中,`-H`、`-P`、`-u` 分别是地址,端口,用户。如果需要密码验证,可以用 `-p $YOUR_SECRET_PASSWORD` 传给 Dumpling。 默认情况下,除了系统数据库中的表之外,Dumpling 会导出整个数据库的表。你可以使用 `--where ` 来选定要导出的记录。假如导出数据的格式是 CSV(使用 `--filetype csv` 即可导出 CSV 文件),还可以使用 `--sql ` 导出指定 SQL 选择出来的记录,例如,导出 `test.sbtest1` 中所有 `id < 100` 的记录: @@ -45,7 +45,7 @@ dumpling \ --sql "select * from `test`.`sbtest1` where id < 100" ``` -在导出目标为 SQL 的时候,`--sql` 暂时不可用。但是仍旧可以用 `--where` 来过滤要导出的行,使用以下指令,可以导出所有 `id < 100` 的记录: +注意,`--sql` 选择暂时仅仅可用于导出 csv 的场景。但是仍旧可以用 `--where` 来过滤要导出的行,使用以下指令,可以导出所有 `id < 100` 的记录: > **注意:** > From 4fe19d49902c80c68b008b35ae67fd2468db42ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Tue, 26 May 2020 15:32:03 +0800 Subject: [PATCH 13/14] Update export-or-backup-using-dumpling.md Co-authored-by: WangXiangUSTC --- export-or-backup-using-dumpling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export-or-backup-using-dumpling.md b/export-or-backup-using-dumpling.md index d22cad6d27a7..1cd2f5bdabe5 100644 --- a/export-or-backup-using-dumpling.md +++ b/export-or-backup-using-dumpling.md @@ -45,7 +45,7 @@ dumpling \ --sql "select * from `test`.`sbtest1` where id < 100" ``` -注意,`--sql` 选择暂时仅仅可用于导出 csv 的场景。但是仍旧可以用 `--where` 来过滤要导出的行,使用以下指令,可以导出所有 `id < 100` 的记录: +注意,`--sql` 选项暂时仅仅可用于导出 csv 的场景。但是仍旧可以用 `--where` 来过滤要导出的行,使用以下指令,可以导出所有 `id < 100` 的记录: > **注意:** > From 3b389f1588b2c40ce3021cc1ac989f7e922f224b Mon Sep 17 00:00:00 2001 From: Lilian Lee Date: Tue, 26 May 2020 16:52:58 +0800 Subject: [PATCH 14/14] Update export-or-backup-using-dumpling.md --- export-or-backup-using-dumpling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export-or-backup-using-dumpling.md b/export-or-backup-using-dumpling.md index 1cd2f5bdabe5..9b162aa576f3 100644 --- a/export-or-backup-using-dumpling.md +++ b/export-or-backup-using-dumpling.md @@ -84,7 +84,7 @@ dumpling \ 一切完成之后,你应该可以在 `/tmp/test` 看到导出的文件了: -``` shell +```shell $ ls -lh /tmp/test | awk '{print $5 "\t" $9}' 140B metadata