From 76ddf484ce53f3068dc8fd62f90a20cb5b8caa55 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, 7 Apr 2021 11:10:32 +0800 Subject: [PATCH 1/5] cherry pick #5905 to release-4.0 Signed-off-by: ti-srebot --- br/backup-and-restore-tool.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/br/backup-and-restore-tool.md b/br/backup-and-restore-tool.md index 80e88e9f3b7a..e216f59ad79e 100644 --- a/br/backup-and-restore-tool.md +++ b/br/backup-and-restore-tool.md @@ -63,7 +63,37 @@ SST 文件以 `storeID_regionID_regionEpoch_keyHash_cf` 的格式命名。格式 - 对于 v3.1 集群,TiDB 尚未支持 new collation,因此可以认为 new collation 未打开 - 对于 v4.0 集群,请通过 `SELECT VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME='new_collation_enabled';` 查看 new collation 是否打开。 +<<<<<<< HEAD 例如,数据备份在 v3.1 集群。如果恢复到 v4.0 集群中,查询恢复集群的 `new_collation_enabled` 的值为 `true`,则说明创建恢复集群时打开了 new collation 支持的开关。此时恢复数据,可能会出错。 +======= +BR 和 TiDB 集群的兼容性问题分为以下两方面: + ++ 某些功能在开启或关闭状态下,会导致 KV 格式发生变化,因此备份和恢复期间没有统一开启或关闭,就会带来不兼容的问题 ++ BR 部分版本和 TiDB 集群的接口不兼容 + +下表整理了会导致 KV 格式发生变化的功能。 + +| 功能 | 相关 issue | 解决方式 | +| ---- | ---- | ----- | +| 聚簇索引 | [#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 通不过。 | +| 恢复集群开启 TiCDC 同步 | [#364](https://github.com/pingcap/br/issues/364#issuecomment-646813965) | TiKV 暂不能将 BR ingest 的 SST 文件下推到 TiCDC,因此使用 BR 恢复时候需要关闭 TiCDC。 | + +在上述功能确保备份恢复一致的**前提**下,BR 和 TiKV/TiDB/PD 还可能因为版本内部协议不一致/接口不一致出现不兼容的问题,因此 BR 内置了版本检查。 + +### 版本检查 + +BR 内置版本会在执行备份和恢复操作前,对 TiDB 集群版本和自身版本进行对比检查。如果大版本不匹配(比如 BR v4.x 和 TiDB v5.x 上),BR 会提示退出。如要跳过版本检查,可以通过设置 `--check-requirements=false` 强行跳过版本检查,但是可能会遇到版本不兼容的问题。 + +需要注意的是,跳过检查可能会遇到版本不兼容的问题,现整理如下: + +| 备份版本(纵向) \ 恢复版本(横向) | BR nightly / TiDB nightly | BR v5.0 / TiDB v5.0| BR v4.0 / TiDB v4.0 | +| ---- | ---- | ---- | ---- | +| **BR nightly / TiDB nightly** | ✅ | ✅ | ✅ | +| **BR v5.0 / TiDB v5.0** | ✅ | ✅ | ✅ +| **BR v4.0 / TiDB v4.0** | ❌(如果恢复了使用非整数类型聚簇主键的表到 v4.0 的 TiDB 集群,BR 会无任何警告地导致数据错误) | ❌(如果恢复了使用非整数类型聚簇主键的表到 v4.0 的 TiDB 集群,BR 会无任何警告地导致数据错误) | ✅(如果 TiKV >= v4.0.0-rc.1,BR 包含 [#233](https://github.com/pingcap/br/pull/233) Bug 修复,且 TiKV 不包含 [#7241](https://github.com/tikv/tikv/pull/7241) Bug 修复,那么 BR 会导致 TiKV 节点重启) | +| **BR nightly 或 v5.0 / TiDB v4.0** | ❌(当 TiDB < v4.0.9 时会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | ❌(当 TiDB < v4.0.9 会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | ❌(当 TiDB < v4.0.9 会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | +>>>>>>> 0b851ba2... Update compatibility of BR (#5905) ### 运行 BR 的最低机型配置要求 From a2acf9b0e24fa73b100d9aaa5924a8b87f7dde2c Mon Sep 17 00:00:00 2001 From: hillium Date: Thu, 8 Apr 2021 13:51:58 +0800 Subject: [PATCH 2/5] *: reslove conflict --- br/backup-and-restore-tool.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/br/backup-and-restore-tool.md b/br/backup-and-restore-tool.md index e216f59ad79e..ef0c8ba9ab87 100644 --- a/br/backup-and-restore-tool.md +++ b/br/backup-and-restore-tool.md @@ -56,16 +56,11 @@ SST 文件以 `storeID_regionID_regionEpoch_keyHash_cf` 的格式命名。格式 下面是使用 BR 进行备份恢复的几条限制: -- BR 只支持在 TiDB v3.1 及以上版本使用。 - BR 恢复到 TiCDC / Drainer 的上游集群时,恢复数据无法由 TiCDC / Drainer 同步到下游。 - BR 只支持在 `new_collations_enabled_on_first_bootstrap` [开关值](/character-set-and-collation.md#排序规则支持)相同的集群之间进行操作。这是因为 BR 仅备份 KV 数据。如果备份集群和恢复集群采用不同的排序规则,数据校验会不通过。所以恢复集群时,你需要确保 `select VARIABLE_VALUE from mysql.tidb where VARIABLE_NAME='new_collation_enabled';` 语句的开关值查询结果与备份时的查询结果相一致,才可以进行恢复。 - - 对于 v3.1 集群,TiDB 尚未支持 new collation,因此可以认为 new collation 未打开 - - 对于 v4.0 集群,请通过 `SELECT VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME='new_collation_enabled';` 查看 new collation 是否打开。 +### 兼容性 -<<<<<<< HEAD - 例如,数据备份在 v3.1 集群。如果恢复到 v4.0 集群中,查询恢复集群的 `new_collation_enabled` 的值为 `true`,则说明创建恢复集群时打开了 new collation 支持的开关。此时恢复数据,可能会出错。 -======= BR 和 TiDB 集群的兼容性问题分为以下两方面: + 某些功能在开启或关闭状态下,会导致 KV 格式发生变化,因此备份和恢复期间没有统一开启或关闭,就会带来不兼容的问题 @@ -93,7 +88,6 @@ BR 内置版本会在执行备份和恢复操作前,对 TiDB 集群版本和 | **BR v5.0 / TiDB v5.0** | ✅ | ✅ | ✅ | **BR v4.0 / TiDB v4.0** | ❌(如果恢复了使用非整数类型聚簇主键的表到 v4.0 的 TiDB 集群,BR 会无任何警告地导致数据错误) | ❌(如果恢复了使用非整数类型聚簇主键的表到 v4.0 的 TiDB 集群,BR 会无任何警告地导致数据错误) | ✅(如果 TiKV >= v4.0.0-rc.1,BR 包含 [#233](https://github.com/pingcap/br/pull/233) Bug 修复,且 TiKV 不包含 [#7241](https://github.com/tikv/tikv/pull/7241) Bug 修复,那么 BR 会导致 TiKV 节点重启) | | **BR nightly 或 v5.0 / TiDB v4.0** | ❌(当 TiDB < v4.0.9 时会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | ❌(当 TiDB < v4.0.9 会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | ❌(当 TiDB < v4.0.9 会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | ->>>>>>> 0b851ba2... Update compatibility of BR (#5905) ### 运行 BR 的最低机型配置要求 From 5bc739ec95bbca8f4f4efd1b97779c2b591ab4e0 Mon Sep 17 00:00:00 2001 From: hillium Date: Mon, 12 Apr 2021 10:39:28 +0800 Subject: [PATCH 3/5] br: remove clustered index relative contents --- br/backup-and-restore-tool.md | 1 - 1 file changed, 1 deletion(-) diff --git a/br/backup-and-restore-tool.md b/br/backup-and-restore-tool.md index ef0c8ba9ab87..bf60229fb6c7 100644 --- a/br/backup-and-restore-tool.md +++ b/br/backup-and-restore-tool.md @@ -70,7 +70,6 @@ BR 和 TiDB 集群的兼容性问题分为以下两方面: | 功能 | 相关 issue | 解决方式 | | ---- | ---- | ----- | -| 聚簇索引 | [#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 通不过。 | | 恢复集群开启 TiCDC 同步 | [#364](https://github.com/pingcap/br/issues/364#issuecomment-646813965) | TiKV 暂不能将 BR ingest 的 SST 文件下推到 TiCDC,因此使用 BR 恢复时候需要关闭 TiCDC。 | From c56d62382bd35bbd6f61f46f5e0baeb0f4d1be8a Mon Sep 17 00:00:00 2001 From: hillium Date: Mon, 12 Apr 2021 17:06:00 +0800 Subject: [PATCH 4/5] br: use reference to compatibility table --- br/backup-and-restore-tool.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/br/backup-and-restore-tool.md b/br/backup-and-restore-tool.md index bf60229fb6c7..f6b37e65bfc3 100644 --- a/br/backup-and-restore-tool.md +++ b/br/backup-and-restore-tool.md @@ -77,16 +77,7 @@ BR 和 TiDB 集群的兼容性问题分为以下两方面: ### 版本检查 -BR 内置版本会在执行备份和恢复操作前,对 TiDB 集群版本和自身版本进行对比检查。如果大版本不匹配(比如 BR v4.x 和 TiDB v5.x 上),BR 会提示退出。如要跳过版本检查,可以通过设置 `--check-requirements=false` 强行跳过版本检查,但是可能会遇到版本不兼容的问题。 - -需要注意的是,跳过检查可能会遇到版本不兼容的问题,现整理如下: - -| 备份版本(纵向) \ 恢复版本(横向) | BR nightly / TiDB nightly | BR v5.0 / TiDB v5.0| BR v4.0 / TiDB v4.0 | -| ---- | ---- | ---- | ---- | -| **BR nightly / TiDB nightly** | ✅ | ✅ | ✅ | -| **BR v5.0 / TiDB v5.0** | ✅ | ✅ | ✅ -| **BR v4.0 / TiDB v4.0** | ❌(如果恢复了使用非整数类型聚簇主键的表到 v4.0 的 TiDB 集群,BR 会无任何警告地导致数据错误) | ❌(如果恢复了使用非整数类型聚簇主键的表到 v4.0 的 TiDB 集群,BR 会无任何警告地导致数据错误) | ✅(如果 TiKV >= v4.0.0-rc.1,BR 包含 [#233](https://github.com/pingcap/br/pull/233) Bug 修复,且 TiKV 不包含 [#7241](https://github.com/tikv/tikv/pull/7241) Bug 修复,那么 BR 会导致 TiKV 节点重启) | -| **BR nightly 或 v5.0 / TiDB v4.0** | ❌(当 TiDB < v4.0.9 时会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | ❌(当 TiDB < v4.0.9 会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | ❌(当 TiDB < v4.0.9 会出现 [#609](https://github.com/pingcap/br/issues/609) 问题) | +BR 内置版本会在执行备份和恢复操作前,对 TiDB 集群版本和自身版本进行对比检查。如果大版本不匹配(比如 BR v4.x 和 TiDB v5.x 上),BR 会提示退出。如要跳过版本检查,可以通过设置 `--check-requirements=false` 强行跳过版本检查,但是可能会遇到版本不兼容的问题。[这张表格](https://docs.pingcap.com/zh/tidb/stable/backup-and-restore-tool#版本检查)记载了一部分版本之间兼容性,供参考。 ### 运行 BR 的最低机型配置要求 From c8ddd5911f702590bb7d886ea99b8498845d0b7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=B1=E5=B2=9A?= <36239017+YuJuncen@users.noreply.github.com> Date: Mon, 12 Apr 2021 17:19:39 +0800 Subject: [PATCH 5/5] Apply suggestions from code review Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- br/backup-and-restore-tool.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/br/backup-and-restore-tool.md b/br/backup-and-restore-tool.md index f6b37e65bfc3..9a90ad10e17a 100644 --- a/br/backup-and-restore-tool.md +++ b/br/backup-and-restore-tool.md @@ -70,14 +70,14 @@ BR 和 TiDB 集群的兼容性问题分为以下两方面: | 功能 | 相关 issue | 解决方式 | | ---- | ---- | ----- | -| New collation | [#352](https://github.com/pingcap/br/issues/352) | 确保恢复时集群的 new_collations_enabled_on_first_bootstrap 和备份时的一致,否则会导致数据索引不一致和 checksum 通不过。 | +| New collation | [#352](https://github.com/pingcap/br/issues/352) | 确保恢复时集群的 `new_collations_enabled_on_first_bootstrap` 变量值和备份时的一致,否则会导致数据索引不一致和 checksum 通不过。 | | 恢复集群开启 TiCDC 同步 | [#364](https://github.com/pingcap/br/issues/364#issuecomment-646813965) | TiKV 暂不能将 BR ingest 的 SST 文件下推到 TiCDC,因此使用 BR 恢复时候需要关闭 TiCDC。 | 在上述功能确保备份恢复一致的**前提**下,BR 和 TiKV/TiDB/PD 还可能因为版本内部协议不一致/接口不一致出现不兼容的问题,因此 BR 内置了版本检查。 ### 版本检查 -BR 内置版本会在执行备份和恢复操作前,对 TiDB 集群版本和自身版本进行对比检查。如果大版本不匹配(比如 BR v4.x 和 TiDB v5.x 上),BR 会提示退出。如要跳过版本检查,可以通过设置 `--check-requirements=false` 强行跳过版本检查,但是可能会遇到版本不兼容的问题。[这张表格](https://docs.pingcap.com/zh/tidb/stable/backup-and-restore-tool#版本检查)记载了一部分版本之间兼容性,供参考。 +BR 内置版本会在执行备份和恢复操作前,对 TiDB 集群版本和自身版本进行对比检查。如果大版本不匹配(比如 BR v4.x 和 TiDB v5.x 上),BR 会提示退出。如要跳过版本检查,可以通过设置 `--check-requirements=false` 强行跳过版本检查,但是可能会遇到版本不兼容的问题。TiDB v4.0 用 BR 备份后,不完全支持恢复到 v5.0 以及之后版本,详细信息见 [BR 版本检查(stable 版文档)](https://docs.pingcap.com/zh/tidb/stable/backup-and-restore-tool#版本检查)。 ### 运行 BR 的最低机型配置要求