diff --git a/circle.yml b/.circleci/config.yml similarity index 71% rename from circle.yml rename to .circleci/config.yml index 525416d13376..9676ec777491 100644 --- a/circle.yml +++ b/.circleci/config.yml @@ -1,6 +1,27 @@ version: 2 jobs: + lint: + docker: + - image: circleci/ruby:2.4.1-node + working_directory: ~/pingcap/docs-cn + steps: + - checkout + + - run: + name: "Install markdownlint" + command: | + sudo npm install -g markdownlint-cli + markdownlint --version + + - run: + name: "Lint dev" + command: markdownlint dev/ + + - run: + name: "Lint README" + command: markdownlint README.md + build: docker: - image: andelf/doc-build:0.1.9 @@ -46,3 +67,17 @@ jobs: - store_artifacts: path: /tmp/artifacts + +workflows: + version: 2 + lint: + jobs: + - lint + build: + jobs: + - build: + filters: + branches: + only: + - master + - website-preview diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 000000000000..ef8945ef538d --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,44 @@ +comment: 'Rules for PingCAP docs-cn' + +# disable all by default +default: false + +heading-increment: true +heading-style: + style: atx +no-trailing-spaces: true +no-hard-tabs: true +ul-indent: + indent: 4 +no-multiple-blanks: true +# commands-show-output: true +no-missing-space-atx: true +no-multiple-space-atx: true +blanks-around-headings: true +heading-start-left: true +no-duplicate-heading: + siblings_only: true +single-title: + front_matter_title: '' +no-trailing-punctuation: + punctuation: '.,;:!。,;:!' +no-multiple-space-blockquote: true +ol-prefix: + style: ordered +list-marker-space: true +blanks-around-fences: true +blanks-around-lists: true +no-bare-urls: true +no-space-in-emphasis: true +no-space-in-code: true +no-space-in-links: true +no-empty-links: true +# proper-names: +# names: ['TiDB', 'TiKV', 'PingCAP'] +# code_blocks: false +no-alt-text: true +code-block-style: + style: fenced +single-trailing-newline: true +first-line-heading: true + diff --git a/README.md b/README.md index 37dc40ab482d..b1af42214413 100755 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and A TiDB 具备如下特性: - 高度兼容 MySQL - + [大多数情况下](/v3.0/reference/mysql-compatibility.md),无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。 - 水平弹性扩展 @@ -40,4 +40,4 @@ TiDB 对业务没有任何侵入性,能优雅的替换传统的数据库中间 - [说存储](https://pingcap.com/blog-cn/tidb-internal-1/) - [说计算](https://pingcap.com/blog-cn/tidb-internal-2/) -- [谈调度](https://pingcap.com/blog-cn/tidb-internal-3/) \ No newline at end of file +- [谈调度](https://pingcap.com/blog-cn/tidb-internal-3/) diff --git a/dev/TOC.md b/dev/TOC.md index f77d9a1e533f..b683855f04f5 100644 --- a/dev/TOC.md +++ b/dev/TOC.md @@ -2,6 +2,7 @@ ## 目录 + + [关于 TiDB](overview.md) + 主要概念 - [整体架构](architecture.md) @@ -332,7 +333,8 @@ + [贡献](contribute.md) - [贡献代码](contribute.md#成为-tidb-的贡献者) - [改进文档](contribute.md#改进文档) -- [TiDB 路线图](roadmap.md) + ++ [TiDB 路线图](roadmap.md) + [版本发布历史](releases/rn.md) + v3.0 - [3.0 GA](releases/3.0-ga.md) diff --git a/dev/_index.md b/dev/_index.md index e7db14c50f11..1941e21cc2ea 100755 --- a/dev/_index.md +++ b/dev/_index.md @@ -10,7 +10,7 @@ TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and A TiDB 具备如下特性: - 高度兼容 MySQL - + [大多数情况下](/reference/mysql-compatibility.md),无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。 - 水平弹性扩展 diff --git a/dev/benchmark/how-to-run-sysbench.md b/dev/benchmark/how-to-run-sysbench.md index b6ca594abe35..5b66341bd01e 100644 --- a/dev/benchmark/how-to-run-sysbench.md +++ b/dev/benchmark/how-to-run-sysbench.md @@ -60,7 +60,7 @@ enabled = true 由于 TiKV 是以集群形式部署的,在 Raft 算法的作用下,能保证大多数节点已经写入数据。因此,除了对数据安全极端敏感的场景之外,raftstore 中的 `sync-log` 选项可以关闭。 -TiKV 集群存在两个 Column Family(Default CF 和 Write CF),主要用于存储不同类型的数据。对于 Sysbench 测试,导入数据的 Column Family 在 TiDB 集群中的比例是固定的。这个比例是: +TiKV 集群存在两个 Column Family(Default CF 和 Write CF),主要用于存储不同类型的数据。对于 Sysbench 测试,导入数据的 Column Family 在 TiDB 集群中的比例是固定的。这个比例是: Default CF : Write CF = 4 : 1 @@ -215,7 +215,7 @@ sysbench --config-file=config oltp_read_only --tables=32 --table-size=10000000 r | 类型 | Thread | TPS | QPS | avg.latency(ms) | .95.latency(ms) | max.latency(ms) | |:---- |:---- |:---- |:---- |:----------------|:----------------- |:---- | -| oltp_update_index | 3\*8 | 9668.98 | 9668.98 | 2.51 | 3.19 | 103.88| +| oltp_update_index | 3\*8 | 9668.98 | 9668.98 | 2.51 | 3.19 | 103.88| | oltp_update_index | 3\*16 | 12834.99 | 12834.99 | 3.79 | 5.47 | 176.90 | | oltp_update_index | 3\*32 | 15955.77 | 15955.77 | 6.07 | 9.39 | 4787.14 | | oltp_update_index | 3\*64 | 18697.17 | 18697.17 | 10.34 | 17.63 | 4539.04 | diff --git a/dev/benchmark/sysbench-v2.md b/dev/benchmark/sysbench-v2.md index 4ca39cc70da0..bce70f8a8400 100644 --- a/dev/benchmark/sysbench-v2.md +++ b/dev/benchmark/sysbench-v2.md @@ -26,7 +26,7 @@ IDC 机器 | OS | Linux (CentOS 7.3.1611) | | CPU | 40 vCPUs, Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz | | RAM | 128GB | -| DISK | Optane 500GB SSD * 1 | +| DISK | Optane 500GB SSD * 1 | ## 测试方案 @@ -55,15 +55,15 @@ IDC 机器 ``` sync-log = false grpc-concurrency = 8 - grpc-raft-conn-num = 24 + grpc-raft-conn-num = 24 ``` * v2.0.0-rc6 - ``` + ``` sync-log = false grpc-concurrency = 8 - grpc-raft-conn-num = 24 + grpc-raft-conn-num = 24 use-delete-range: false ``` @@ -83,7 +83,7 @@ IDC 机器 ## 测试结果 -### 标准 Select 测试 +### 标准 Select 测试 | 版本 | table count | table size | sysbench threads |qps | latency(avg / .95) | | :---: | :---: | :---: | :---: | :---: | :---: | @@ -98,7 +98,7 @@ IDC 机器 GA2.0 比 GA1.0 在 Select 查询性能上,最高提升了 10% 左右。 -### 标准 OLTP 测试 +### 标准 OLTP 测试 | 版本 | table count | table size | sysbench threads | tps | qps | latency(avg / .95) | | :---: | :---: | :---: | :---: | :---: | :---: | :---:| @@ -113,7 +113,7 @@ GA2.0 比 GA1.0 在 Select 查询性能上,最高提升了 10% 左右。 GA2.0 比 GA1.0 在 OLTP 性能上,性能基本一致。 -### 标准 Insert 测试 +### 标准 Insert 测试 | 版本 | table count | table size | sysbench threads |qps | latency(avg / .95) | | :---: | :---: | :---: | :---: | :---: | :---: | diff --git a/dev/benchmark/sysbench-v3.md b/dev/benchmark/sysbench-v3.md index d8bed54b9bee..a330e35a120c 100644 --- a/dev/benchmark/sysbench-v3.md +++ b/dev/benchmark/sysbench-v3.md @@ -139,4 +139,4 @@ v2.1 与 v2.0 在 Update Non-Index 写入性能上基本一致。 ![update index](/media/sysbench_v3_update_index.png) -v2.1 与 v2.0 在 Update Index 写入性能上基本一致。 \ No newline at end of file +v2.1 与 v2.0 在 Update Index 写入性能上基本一致。 diff --git a/dev/benchmark/sysbench-v4.md b/dev/benchmark/sysbench-v4.md index 490f0e58b3f9..acceaca02161 100644 --- a/dev/benchmark/sysbench-v4.md +++ b/dev/benchmark/sysbench-v4.md @@ -34,6 +34,7 @@ Sysbench 版本:1.0.17 使用 Sysbench 向集群导入 **16 张表,每张数据 1000 万**。起 3 个 sysbench 分别向 3 个 TiDB 发压,请求并发数逐步增加,单次测试时间 5 分钟。 准备数据命令: + ```sh sysbench oltp_common \ --threads=16 \ @@ -47,6 +48,7 @@ sysbench oltp_common \ ``` 执行测试命令: + ```sh sysbench $testname \ --threads=$threads \ @@ -88,6 +90,7 @@ sysbench $testname \ [prepared-plan-cache] enabled = true ``` + 并设置全局变量: ```sql @@ -106,6 +109,7 @@ max-batch-wait-time = 2000000 ### TiKV 参数配置 2.1 和 3.0 使用如下配置: + ```toml log-level = "error" [readpool.storage] @@ -121,6 +125,7 @@ block-cache-size = "1GB" ``` 3.0 还做了如下配置: + ```toml [raftstore] apply-pool-size = 3 diff --git a/dev/benchmark/sysbench.md b/dev/benchmark/sysbench.md index 44c4fdfd2d9c..133bda389433 100644 --- a/dev/benchmark/sysbench.md +++ b/dev/benchmark/sysbench.md @@ -16,7 +16,7 @@ draft: true ## 测试版本、时间、地点 -TiDB 版本:v1.0.0 +TiDB 版本:v1.0.0 时间:2017 年 10 月 20 日 地点:北京 @@ -29,11 +29,11 @@ IDC 机器 | OS | linux (CentOS 7.3.1611) | | CPU | 40 vCPUs, Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz | | RAM | 128GB | -| DISK | 1.5T SSD * 2 + Optane SSD * 1 | +| DISK | 1.5T SSD \* 2 + Optane SSD \* 1 | Sysbench 版本: 1.0.6 -测试脚本: https://github.com/pingcap/tidb-bench/tree/cwen/not_prepared_statement/sysbench +测试脚本: [https://github.com/pingcap/tidb-bench/tree/cwen/not_prepared_statement/sysbench](https://github.com/pingcap/tidb-bench/tree/cwen/not_prepared_statement/sysbench) ## 测试方案 @@ -41,7 +41,7 @@ Sysbench 版本: 1.0.6 测试表结构 -``` +``` CREATE TABLE `sbtest` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `k` int(10) unsigned NOT NULL DEFAULT '0', @@ -54,7 +54,7 @@ CREATE TABLE `sbtest` ( 部署方案以及配置参数 -``` +``` // TiDB 部署方案 172.16.20.4 4*tikv 1*tidb 1*sysbench 172.16.20.6 4*tikv 1*tidb 1*sysbench @@ -109,9 +109,9 @@ max_connections = 2000 | Mysql | 32 | 500 万 | 256 | 1902 | 38045 | 134.56 ms / 363.18 ms | | Mysql | 32 | 1000 万 | 256 | 1770 | 35416 | 144.55 ms / 383.33 ms | -![](http://7xnp02.com1.z0.glb.clouddn.com/threads_oltp.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/threads_oltp.png?imageView2/2/w/700/q/75|imageslim) -![](http://7xnp02.com1.z0.glb.clouddn.com/table_size_oltp.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/table_size_oltp.png?imageView2/2/w/700/q/75|imageslim) * 标准 select 测试 @@ -128,9 +128,9 @@ max_connections = 2000 | Mysql | 32 | 500 万 | 256 | 386866 | 0.66 ms / 1.64 ms | | Mysql | 32 | 1000 万 | 256 | 388273 | 0.66 ms / 1.64 ms | -![](http://7xnp02.com1.z0.glb.clouddn.com/threads_select.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/threads_select.png?imageView2/2/w/700/q/75|imageslim) -![](http://7xnp02.com1.z0.glb.clouddn.com/table_size_select.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/table_size_select.png?imageView2/2/w/700/q/75|imageslim) * 标准 insert 测试 @@ -146,11 +146,10 @@ max_connections = 2000 | Mysql | 32 | 100 万 | 256 | 14508 | 17.64 ms / 44.98 ms | | Mysql | 32 | 500 万 | 256 | 10593 | 24.16 ms / 82.96 ms | | Mysql | 32 | 1000 万 | 256 | 9813 | 26.08 ms / 94.10 ms | - -![](http://7xnp02.com1.z0.glb.clouddn.com/threads_insert.png?imageView2/2/w/700/q/75|imageslim) -![](http://7xnp02.com1.z0.glb.clouddn.com/table_size_insert.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/threads_insert.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/table_size_insert.png?imageView2/2/w/700/q/75|imageslim) ### 场景二:TiDB 水平扩展能力测试 @@ -187,7 +186,7 @@ block-cache-size = "2GB" | 4 物理节点 TiDB | 32 | 100 万 | 256 * 4 | 8984 | 179692 | 114.96 ms / 176.73 ms | | 6 物理节点 TiDB | 32 | 500 万 | 256 * 6 | 12953 | 259072 | 117.80 ms / 200.47 ms | -![](http://7xnp02.com1.z0.glb.clouddn.com/scale_tidb_oltp.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/scale_tidb_oltp.png?imageView2/2/w/700/q/75|imageslim) * 标准 select 测试 @@ -198,7 +197,7 @@ block-cache-size = "2GB" | 4 物理节点 TiDB | 32 | 100 万 | 256 * 4 | 289933 | 3.53 ms / 8.74 ms | | 6 物理节点 TiDB | 32 | 500 万 | 256 * 6 | 435313 | 3.55 ms / 9.17 ms | -![](http://7xnp02.com1.z0.glb.clouddn.com/scale_tidb_select.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/scale_tidb_select.png?imageView2/2/w/700/q/75|imageslim) * 标准 insert 测试 @@ -208,4 +207,4 @@ block-cache-size = "2GB" | 5 物理节点 TiKV | 32 | 100 万 | 256 * 3 | 60689 | 37.96 ms / 29.9 ms | | 7 物理节点 TiKV | 32 | 100 万 | 256 * 3 | 80087 | 9.62 ms / 21.37 ms | -![](http://7xnp02.com1.z0.glb.clouddn.com/scale_tikv_insert.png?imageView2/2/w/700/q/75|imageslim) +![alt](http://7xnp02.com1.z0.glb.clouddn.com/scale_tikv_insert.png?imageView2/2/w/700/q/75|imageslim) diff --git a/dev/benchmark/tpch-v2.md b/dev/benchmark/tpch-v2.md index 3989420e74e0..688a9d0a7e26 100644 --- a/dev/benchmark/tpch-v2.md +++ b/dev/benchmark/tpch-v2.md @@ -19,23 +19,23 @@ category: benchmark 1. 系统信息 -| 机器 IP | 操作系统 | 内核版本 | 文件系统类型 | -|--------------|------------------------|------------------------------|--------------| -| 10.0.1.4 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | -| 10.0.1.5 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | -| 10.0.1.6 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | -| 10.0.1.7 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | -| 10.0.1.8 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | -| 10.0.1.9 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | + | 机器 IP | 操作系统 | 内核版本 | 文件系统类型 | + |--------------|------------------------|------------------------------|--------------| + | 10.0.1.4 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | + | 10.0.1.5 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | + | 10.0.1.6 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | + | 10.0.1.7 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | + | 10.0.1.8 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | + | 10.0.1.9 | CentOS 7.5.1804 64bit | 3.10.0-862.3.3.el7.x86\_64 | ext4 | 2. 硬件信息 -| 类别 | 10.0.1.4 | 10.0.1.5, 10.0.1.6, 10.0.1.7, 10.0.1.8, 10.0.1.9 | -|------------|------------------------------------------------------|------------------------------------------------------| -| CPU | 16 vCPUs, Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz | 8 vCPUs, Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz | -| 内存 | 110G | 55G | -| 磁盘 | 221G SSD | 111G SSD | -| 网卡 | 万兆网卡, 10000Mb/s | 万兆网卡, 10000Mb/s | + | 类别 | 10.0.1.4 | 10.0.1.5, 10.0.1.6, 10.0.1.7, 10.0.1.8, 10.0.1.9 | + |------------|------------------------------------------------------|------------------------------------------------------| + | CPU | 16 vCPUs, Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz | 8 vCPUs, Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz | + | 内存 | 110G | 55G | + | 磁盘 | 221G SSD | 111G SSD | + | 网卡 | 万兆网卡, 10000Mb/s | 万兆网卡, 10000Mb/s | ### TPC-H @@ -99,6 +99,7 @@ TiDB 2.1: ![TPC-H Query Result](/media/tpch-query-result-v2.png) 说明: + - 图中橙色为 Release 2.1,蓝色为 Release 2.0,纵坐标是 Query 的处理时间,越低越好 - Query 15 因为 2.1 和 2.0 都还未支持视图,所以未列出结果 - Query 5 因为 Join Order 问题长时间未跑出结果来,所以未列出结果 diff --git a/dev/benchmark/tpch.md b/dev/benchmark/tpch.md index a008d6c637a0..3852e4774adc 100644 --- a/dev/benchmark/tpch.md +++ b/dev/benchmark/tpch.md @@ -19,23 +19,23 @@ category: benchmark 1. 系统信息 -| 机器 IP | 操作系统 | 内核版本 | 文件系统类型 | -|--------------|------------------------|------------------------------|--------------| -| 172.16.31.2 | Ubuntu 17.10 64bit | 4.13.0-16-generic | ext4 | -| 172.16.31.3 | Ubuntu 17.10 64bit | 4.13.0-16-generic | ext4 | -| 172.16.31.4 | Ubuntu 17.10 64bit | 4.13.0-16-generic | ext4 | -| 172.16.31.6 | CentOS 7.4.1708 64bit | 3.10.0-693.11.6.el7.x86\_64 | ext4 | -| 172.16.31.8 | CentOS 7.4.1708 64bit | 3.10.0-693.11.6.el7.x86\_64 | ext4 | -| 172.16.31.10 | CentOS 7.4.1708 64bit | 3.10.0-693.11.6.el7.x86\_64 | ext4 | + | 机器 IP | 操作系统 | 内核版本 | 文件系统类型 | + |--------------|------------------------|------------------------------|--------------| + | 172.16.31.2 | Ubuntu 17.10 64bit | 4.13.0-16-generic | ext4 | + | 172.16.31.3 | Ubuntu 17.10 64bit | 4.13.0-16-generic | ext4 | + | 172.16.31.4 | Ubuntu 17.10 64bit | 4.13.0-16-generic | ext4 | + | 172.16.31.6 | CentOS 7.4.1708 64bit | 3.10.0-693.11.6.el7.x86\_64 | ext4 | + | 172.16.31.8 | CentOS 7.4.1708 64bit | 3.10.0-693.11.6.el7.x86\_64 | ext4 | + | 172.16.31.10 | CentOS 7.4.1708 64bit | 3.10.0-693.11.6.el7.x86\_64 | ext4 | 2. 硬件信息 -| 类别 | 名称 | -|------------|------------------------------------------------------| -| CPU | 40 vCPUs, Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz | -| 内存 | 128GB, 8条16GB RDIMM, 2400MT/s, 双列, x8 带宽 | -| 磁盘 | 2 块 Intel P4500 系列 4T SSD 硬盘 | -| 网卡 | 万兆网卡 | + | 类别 | 名称 | + |------------|------------------------------------------------------| + | CPU | 40 vCPUs, Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz | + | 内存 | 128GB, 8条16GB RDIMM, 2400MT/s, 双列, x8 带宽 | + | 磁盘 | 2 块 Intel P4500 系列 4T SSD 硬盘 | + | 网卡 | 万兆网卡 | ### TPC-H @@ -101,6 +101,7 @@ TiDB 2.0: ![TPC-H Query Result](/media/tpch-query-result.png) 说明: + - 图中橙色为 Release 1.0,蓝色为 Release 2.0,纵坐标是 Query 的处理时间,越低越好 - Query 15 因为 1.0 和 2.0 都还未支持视图,所以结果标记为 "View Required" - Query 2, 17, 19 因为 TiDB 1.0 长时间未跑出结果,所以结果标记为 "Nan" diff --git a/dev/faq/data-migration.md b/dev/faq/data-migration.md index e6fbdd3beb9f..74bea760790d 100644 --- a/dev/faq/data-migration.md +++ b/dev/faq/data-migration.md @@ -12,7 +12,7 @@ category: FAQ 由于 DM 中存在同步任务并发向下游复制数据的特性,因此在任务中断时可能同时包含多个错误(可通过 `query-status` 或 `query-error` 查询当前错误)。 - 如果错误中仅包含 `invalid connection` 类型的错误且当前处于增量复制阶段,则 DM 会自动进行重试。 -- 如果 DM 由于版本问题等未自动进行重试或自动重试未能成功,则可尝试先使用 `stop-task` 停止任务,然后再使用 `start-task` 重启任务。 +- 如果 DM 由于版本问题等未自动进行重试或自动重试未能成功,则可尝试先使用 `stop-task` 停止任务,然后再使用 `start-task` 重启任务。 ## 同步任务中断并包含 `driver: bad connection` 错误应该怎么处理? diff --git a/dev/faq/tidb-lightning.md b/dev/faq/tidb-lightning.md index dd4e68d2dea5..63945a6a4576 100644 --- a/dev/faq/tidb-lightning.md +++ b/dev/faq/tidb-lightning.md @@ -116,4 +116,4 @@ tidb-lightning-ctl --switch-mode=normal ## TiDB-Lightning 使用过程中是否可以重启 TiKV-Importer? -不能,Importer 会保存一些 Engine 的信息在内存中,Importer 重启后,Lightning 必须重启。 \ No newline at end of file +不能,Importer 会保存一些 Engine 的信息在内存中,Importer 重启后,Lightning 必须重启。 diff --git a/dev/faq/tidb.md b/dev/faq/tidb.md index d6718c601846..3f659299bc1a 100755 --- a/dev/faq/tidb.md +++ b/dev/faq/tidb.md @@ -295,7 +295,7 @@ Direct 模式就是把写入请求直接封装成 I/O 指令发到磁盘,这 ./fio -ioengine=psync -bs=32k -fdatasync=1 -thread -rw=randrw -percentage_random=100,0 -size=10G -filename=fio_randread_write_test.txt -name='fio mixed randread and sequential write test' -iodepth=4 -runtime=60 -numjobs=4 -group_reporting --output-format=json --output=fio_randread_write_test.json ``` -#### 2.2.8 使用 TiDB Ansible 部署 TiDB 集群的时候,遇到 `UNREACHABLE! "msg": "Failed to connect to the host via ssh: " ` 报错是什么原因? +#### 2.2.8 使用 TiDB Ansible 部署 TiDB 集群的时候,遇到 `UNREACHABLE! "msg": "Failed to connect to the host via ssh: "` 报错是什么原因? 有两种可能性: @@ -317,7 +317,7 @@ Direct 模式就是把写入请求直接封装成 I/O 指令发到磁盘,这 #### 2.3.2 滚动升级有那些影响? -滚动升级 TiDB 服务,滚动升级期间不影响业务运行,需要配置最小集群拓扑(TiDB * 2、PD * 3、TiKV * 3),如果集群环境中有 Pump/Drainer 服务,建议先停止 Drainer 后滚动升级(升级 TiDB 时会升级 Pump)。 +滚动升级 TiDB 服务,滚动升级期间不影响业务运行,需要配置最小集群拓扑(TiDB \* 2、PD \* 3、TiKV \* 3),如果集群环境中有 Pump/Drainer 服务,建议先停止 Drainer 后滚动升级(升级 TiDB 时会升级 Pump)。 #### 2.3.3 Binary 如何升级? @@ -703,6 +703,7 @@ TiDB 支持绝大多数 MySQL 语法,一般不需要修改代码。 重启 TiDB 服务,配置文件中增加 `-skip-grant-table=true` 参数,无密码登录集群后,可以根据情况重建用户,或者重建 mysql.user 表,具体表结构搜索官网。 #### 4.1.5 在 Loader 运行的过程中,TiDB 可以对外提供服务吗? + 该操作进行逻辑插入,TiDB 仍可对外提供服务,但不要执行相关 DDL 操作。 #### 4.1.6 如何导出 TiDB 数据? diff --git a/dev/how-to/configure/memory-control.md b/dev/how-to/configure/memory-control.md index 68d9c4d07b53..d1f5a94e3c8f 100644 --- a/dev/how-to/configure/memory-control.md +++ b/dev/how-to/configure/memory-control.md @@ -18,6 +18,7 @@ oom-action = "log" ## 如何配置一条 SQL 执行过程中的内存使用阈值 可以在配置文件中设置每个 Query 默认的 Memory Quota,例如将其设置为 32GB: + ``` mem-quota-query = 34359738368 ``` diff --git a/dev/how-to/deploy/data-migration-with-ansible.md b/dev/how-to/deploy/data-migration-with-ansible.md index cf13608ce3b6..d80077c274fc 100644 --- a/dev/how-to/deploy/data-migration-with-ansible.md +++ b/dev/how-to/deploy/data-migration-with-ansible.md @@ -165,7 +165,7 @@ DM-Ansible 是 PingCAP 基于 [Ansible](https://docs.ansible.com/ansible/latest/ ``` 2. 运行如下命令,然后输入部署目标机器的 `root` 用户密码。 - + ```bash $ ansible-playbook -i hosts.ini create_users.yml -u root -k ``` @@ -295,10 +295,10 @@ grafana_admin_user = "admin" grafana_admin_password = "admin" ``` -### DM-worker 配置及参数描述 +### DM-worker 配置及参数描述 | 变量名称 | 描述 | -| ------------- | ------- +| ------------- | ------- | source_id | DM-worker 绑定到的一个数据库实例或是具有主从架构的复制组。当发生主从切换的时候,只需要更新 `mysql_host` 或 `mysql_port` 而不用更改该 ID 标识。 | | server_id | DM-worker 伪装成一个 MySQL slave,该变量即为这个 slave 的 server ID,在 MySQL 集群中需保持全局唯一。取值范围 0 ~ 4294967295。| | mysql_host | 上游 MySQL 主机 | @@ -398,6 +398,7 @@ dm-worker2 ansible_host=172.16.10.73 source_id="mysql-replica-02" server_id=102 ```ini ansible_user = tidb ``` + > **注意:** > > 请勿将 `ansible_user` 设为 `root`,因为 `tidb-ansible` 限制服务需以普通用户运行。 @@ -425,6 +426,7 @@ dm-worker2 ansible_host=172.16.10.73 source_id="mysql-replica-02" server_id=102 ```bash ansible-playbook start.yml ``` + 此操作会按顺序启动 DM 集群的所有组件,包括 DM-master,DM-worker,以及监控组件。当一个 DM 集群被关闭后,您可以使用该命令将其开启。 ## 第 10 步:关闭 DM 集群 @@ -441,7 +443,6 @@ $ ansible-playbook stop.yml ### 默认服务端口 - | 组件 | 端口变量 | 默认端口 | 描述 | | :-- | :-- | :-- | :-- | | DM-master | `dm_master_port` | 8261 | DM-master 服务交流端口 | diff --git a/dev/how-to/deploy/geographic-redundancy/overview.md b/dev/how-to/deploy/geographic-redundancy/overview.md index a657fee923dd..80daae48a75e 100644 --- a/dev/how-to/deploy/geographic-redundancy/overview.md +++ b/dev/how-to/deploy/geographic-redundancy/overview.md @@ -63,7 +63,6 @@ TiDB, TiKV, PD 分别分布在 3 个不同的中心,这是最常规,可用 > > 在两数据中心 + binlog 同步部署方案中,数据中心之间只有 binlog 异步复制。在数据中心间的延迟较高的情况下,从集群落后主集群的数据量会增大。当主集群故障后(DR),会造成数据丢失,丢失的数据量受网络延迟等因素影响。 - ## 高可用和容灾分析 对于三数据中心方案和两地三中心方案,我们能得到的保障是任意一个数据中心故障时,集群能自动恢复服务,不需要人工介入,并能保证数据一致性。注意各种调度策略都是用于帮助性能优化的,当发生故障时调度机制总是第一优先考虑可用性而不是性能。 diff --git a/dev/how-to/deploy/orchestrated/ansible.md b/dev/how-to/deploy/orchestrated/ansible.md index 6789a3c482ae..2a745d6e6f96 100644 --- a/dev/how-to/deploy/orchestrated/ansible.md +++ b/dev/how-to/deploy/orchestrated/ansible.md @@ -428,13 +428,13 @@ location_labels = ["host"] - 服务配置文件参数调整 - 1. 多实例情况下,需要修改 `tidb-ansible/conf/tikv.yml` 中的 `block-cache-size` 参数: - - `rocksdb defaultcf block-cache-size(GB)` = MEM * 80% / TiKV 实例数量 * 30% - - `rocksdb writecf block-cache-size(GB)` = MEM * 80% / TiKV 实例数量 * 45% - - `rocksdb lockcf block-cache-size(GB)` = MEM * 80% / TiKV 实例数量 * 2.5% (最小 128 MB) - - `raftdb defaultcf block-cache-size(GB)` = MEM * 80% / TiKV 实例数量 * 2.5% (最小 128 MB) + 1. 多实例情况下,需要修改 `tidb-ansible/conf/tikv.yml` 中的 `block-cache-size` 参数: + - `rocksdb defaultcf block-cache-size(GB)` = MEM \* 80% / TiKV 实例数量 \* 30% + - `rocksdb writecf block-cache-size(GB)` = MEM \* 80% / TiKV 实例数量 \* 45% + - `rocksdb lockcf block-cache-size(GB)` = MEM \* 80% / TiKV 实例数量 \* 2.5% (最小 128 MB) + - `raftdb defaultcf block-cache-size(GB)` = MEM \* 80% / TiKV 实例数量 \* 2.5% (最小 128 MB) - 2. 多实例情况下,需要修改 `tidb-ansible/conf/tikv.yml` 中 `high-concurrency`、`normal-concurrency` 和 `low-concurrency` 三个参数: + 2. 多实例情况下,需要修改 `tidb-ansible/conf/tikv.yml` 中 `high-concurrency`、`normal-concurrency` 和 `low-concurrency` 三个参数: ``` readpool: @@ -446,9 +446,9 @@ location_labels = ["host"] # low-concurrency: 8 ``` - - 推荐设置:实例数*参数值 = CPU 核数 * 0.8。 + - 推荐设置:实例数 \* 参数值 = CPU 核数 \* 0.8。 - 3. 如果多个 TiKV 实例部署在同一块物理磁盘上,需要修改 `conf/tikv.yml` 中的 `capacity` 参数: + 3. 如果多个 TiKV 实例部署在同一块物理磁盘上,需要修改 `conf/tikv.yml` 中的 `capacity` 参数: - `capacity` = 磁盘总容量 / TiKV 实例数量,例如 "100GB" ### inventory.ini 变量调整 @@ -500,7 +500,7 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy > ansible-playbook 执行 Playbook 时默认并发为 5,部署目标机器较多时可添加 -f 参数指定并发,如 `ansible-playbook deploy.yml -f 10` -1. 确认 `tidb-ansible/inventory.ini` 文件中 `ansible_user = tidb`,本例使用 `tidb` 用户作为服务运行用户,配置如下: +1. 确认 `tidb-ansible/inventory.ini` 文件中 `ansible_user = tidb`,本例使用 `tidb` 用户作为服务运行用户,配置如下: > `ansible_user` 不要设置成 `root` 用户,`tidb-ansible` 限制了服务以普通用户运行。 @@ -511,28 +511,30 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy ``` 执行以下命令如果所有 server 返回 `tidb` 表示 ssh 互信配置成功。 + ``` ansible -i inventory.ini all -m shell -a 'whoami' ``` 执行以下命令如果所有 server 返回 `root` 表示 `tidb` 用户 sudo 免密码配置成功。 + ``` ansible -i inventory.ini all -m shell -a 'whoami' -b ``` -2. 执行 `local_prepare.yml` playbook,联网下载 TiDB binary 到中控机: +2. 执行 `local_prepare.yml` playbook,联网下载 TiDB binary 到中控机: ``` ansible-playbook local_prepare.yml ``` -3. 初始化系统环境,修改内核参数 +3. 初始化系统环境,修改内核参数 ``` ansible-playbook bootstrap.yml ``` -4. 部署 TiDB 集群软件 +4. 部署 TiDB 集群软件 ``` ansible-playbook deploy.yml @@ -546,7 +548,7 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy > $ sudo yum install fontconfig open-sans-fonts > ``` -5. 启动 TiDB 集群 +5. 启动 TiDB 集群 ``` ansible-playbook start.yml @@ -556,19 +558,20 @@ TiKV1-1 ansible_host=172.16.10.4 deploy_dir=/data1/deploy > 测试连接 TiDB 集群,推荐在 TiDB 前配置负载均衡来对外统一提供 SQL 接口。 -- 使用 MySQL 客户端连接测试,TCP 4000 端口是 TiDB 服务默认端口。 +- 使用 MySQL 客户端连接测试,TCP 4000 端口是 TiDB 服务默认端口。 ```sql mysql -u root -h 172.16.10.1 -P 4000 ``` -- 通过浏览器访问监控平台。 +- 通过浏览器访问监控平台。 地址:`http://172.16.10.1:3000` 默认帐号密码是:`admin`/`admin` ## 常见部署问题 ### 如何自定义端口 + 修改 `inventory.ini` 文件,在相应服务 IP 后添加以下主机变量即可: | 组件 | 端口变量 | 默认端口 | 说明 | diff --git a/dev/how-to/deploy/orchestrated/offline-ansible.md b/dev/how-to/deploy/orchestrated/offline-ansible.md index 0cb4368208c2..f4be9efc8ba5 100644 --- a/dev/how-to/deploy/orchestrated/offline-ansible.md +++ b/dev/how-to/deploy/orchestrated/offline-ansible.md @@ -83,7 +83,7 @@ category: how-to ```bash # yum install epel-release # yum install ansible curl - # ansible --version + # ansible --version ansible 2.5.0 ``` diff --git a/dev/how-to/deploy/orchestrated/tidb-in-kubernetes/access-tidb.md b/dev/how-to/deploy/orchestrated/tidb-in-kubernetes/access-tidb.md index 662a30ebb2b1..9214460980d8 100644 --- a/dev/how-to/deploy/orchestrated/tidb-in-kubernetes/access-tidb.md +++ b/dev/how-to/deploy/orchestrated/tidb-in-kubernetes/access-tidb.md @@ -59,7 +59,7 @@ kubectl -n ${namespace} get svc ${release}-tidb -ojsonpath="{.spec.ports[?(@.nam ```shell release= ``` - + {{< copyable "shell-regular" >}} ```shell diff --git a/dev/how-to/deploy/orchestrated/tidb-in-kubernetes/aws-eks.md b/dev/how-to/deploy/orchestrated/tidb-in-kubernetes/aws-eks.md index 6ae2fc852f6c..0ea5a0e67c80 100644 --- a/dev/how-to/deploy/orchestrated/tidb-in-kubernetes/aws-eks.md +++ b/dev/how-to/deploy/orchestrated/tidb-in-kubernetes/aws-eks.md @@ -16,24 +16,24 @@ category: how-to 要与 AWS 交互,必须[配置 `awscli`](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。最快的方式是使用 `aws configure` 命令: {{< copyable "shell-regular" >}} - + ``` shell aws configure ``` - + 替换下面的 AWS Access Key ID 和 AWS Secret Access Key: - + ``` AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [None]: json ``` - + > **注意:** > > Access key 必须至少具有以下权限:创建 VPC、创建 EBS、创建 EC2 和创建 Role。 - + * [terraform](https://learn.hashicorp.com/terraform/getting-started/install.html) * [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl) >= 1.11 * [helm](https://github.com/helm/helm/blob/master/docs/install.md#installing-the-helm-client) >= 2.9.0 且 < 3.0.0 @@ -43,25 +43,25 @@ category: how-to 最简单的安装方法是下载编译好的二进制文件 `aws-iam-authenticator`,如下所示。 Linux 用户下载二进制文件: - + {{< copyable "shell-regular" >}} - + ``` shell curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.12.7/2019-03-27/bin/linux/amd64/aws-iam-authenticator ``` macOS 用户下载二进制文件: - + {{< copyable "shell-regular" >}} - + ``` shell curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.12.7/2019-03-27/bin/darwin/amd64/aws-iam-authenticator ``` - + 二进制文件下载完成后,执行以下操作: - + {{< copyable "shell-regular" >}} - + ``` shell chmod +x ./aws-iam-authenticator && \ sudo mv ./aws-iam-authenticator /usr/local/bin/aws-iam-authenticator diff --git a/dev/how-to/deploy/tidb-binlog.md b/dev/how-to/deploy/tidb-binlog.md index 5e9aef5427c3..2421e7d8f34b 100644 --- a/dev/how-to/deploy/tidb-binlog.md +++ b/dev/how-to/deploy/tidb-binlog.md @@ -80,39 +80,39 @@ category: reference 2. 部署并启动含 Pump 组件的 TiDB 集群 参照上文配置完 `inventory.ini` 文件后,从以下两种方式中选择一种进行部署。 - + **方式一**:在已有的 TiDB 集群上增加 Pump 组件,需按以下步骤逐步进行。 - + 1. 部署 pump_servers 和 node_exporters - + ``` ansible-playbook deploy.yml -l ${pump1_ip},${pump2_ip},[${alias1_name},${alias2_name}] ``` - + > **注意:** > > 以上命令中,逗号后不要加空格,否则会报错。 - + 2. 启动 pump_servers - + ``` ansible-playbook start.yml --tags=pump ``` - + 3. 更新并重启 tidb_servers - + ``` ansible-playbook rolling_update.yml --tags=tidb ``` - + 4. 更新监控信息 - + ``` ansible-playbook rolling_update_monitor.yml --tags=prometheus ``` **方式二**:从零开始部署含 Pump 组件的 TiDB 集群 - + 使用 Ansible 部署 TiDB 集群,方法参考 [TiDB Ansible 部署方案](/how-to/deploy/orchestrated/ansible.md)。 3. 查看 Pump 服务状态 @@ -173,7 +173,7 @@ category: reference $ vi drainer_mysql_drainer.toml ``` - > **注意:** + > **注意:** > > 配置文件名命名规则为 `别名_drainer.toml`,否则部署时无法找到自定义配置文件。 @@ -209,8 +209,8 @@ category: reference # Valid values are "mysql", "file", "kafka", "flash". db-type = "file" - # Uncomment this if you want to use `file` as `db-type`. - # The value can be `gzip`. Leave it empty to disable compression. + # Uncomment this if you want to use `file` as `db-type`. + # The value can be `gzip`. Leave it empty to disable compression. [syncer.to] # default data directory: "{{ deploy_dir }}/data.drainer" dir = "data.drainer" diff --git a/dev/how-to/get-started/deploy-tidb-from-docker-compose.md b/dev/how-to/get-started/deploy-tidb-from-docker-compose.md index 93af97c72ede..ed64c6e104d7 100644 --- a/dev/how-to/get-started/deploy-tidb-from-docker-compose.md +++ b/dev/how-to/get-started/deploy-tidb-from-docker-compose.md @@ -59,7 +59,7 @@ category: how-to ``` 如果是 Mac 系统,也可以通过 Homebrew 安装: - + ``` brew install kubernetes-helm ``` diff --git a/dev/how-to/get-started/deploy-tidb-from-kubernetes-dind.md b/dev/how-to/get-started/deploy-tidb-from-kubernetes-dind.md index e0ca6d614631..817fb3e78b3d 100644 --- a/dev/how-to/get-started/deploy-tidb-from-kubernetes-dind.md +++ b/dev/how-to/get-started/deploy-tidb-from-kubernetes-dind.md @@ -353,7 +353,7 @@ demo-tikv-2 1/1 Running 0 1m > > 如果代理建立成功,会打印类似输出:`Forwarding from 0.0.0.0:3000 -> 3000`。测试完成后按 `Ctrl + C` 停止代理并退出。 - 2. 然后,在浏览器中打开 http://localhost:3000 访问 Grafana 监控面板: + 2. 然后,在浏览器中打开 `http://localhost:3000` 访问 Grafana 监控面板: * 默认用户名:admin * 默认密码:admin diff --git a/dev/how-to/get-started/deploy-tidb-from-kubernetes-gke.md b/dev/how-to/get-started/deploy-tidb-from-kubernetes-gke.md index 39d2e6275ae4..8dddb52efb05 100644 --- a/dev/how-to/get-started/deploy-tidb-from-kubernetes-gke.md +++ b/dev/how-to/get-started/deploy-tidb-from-kubernetes-gke.md @@ -180,6 +180,7 @@ helm install pingcap/tidb-cluster -n demo --namespace=tidb --set pd.storageClass ``` shell kubectl get pods --namespace tidb -o wide --watch ``` + TiDB 集群包含 2 个 TiDB pod,3 个 TiKV pod 和 3 个 PD pod。如果所有 pod 状态都为 `Running`,Ctrl+C 停止并继续! ## 访问 TiDB 集群 @@ -191,6 +192,7 @@ TiDB 集群包含 2 个 TiDB pod,3 个 TiKV pod 和 3 个 PD pod。如果所 ``` shell kubectl get svc -n tidb --watch ``` + 如果看到 `demo-tidb` 出现,说明服务已经可以访问,可以 Ctrl+C 停止。 要访问 Kubernetes 集群中的 TiDB 服务,可以在 TiDB 服务和 Google Cloud Shell 之间建立一条隧道。建议这种方式只用于调试,因为如果 Google Cloud Shell 重启,隧道不会自动重新建立。要建立隧道: @@ -217,6 +219,7 @@ mysql -h 127.0.0.1 -u root -P 4000 ``` sql select tidb_version(); ``` + 如果用 Helm 安装的过程中没有指定密码,现在可以设置: {{< copyable "sql" >}} diff --git a/dev/how-to/get-started/deploy-tidb-from-kubernetes-minikube.md b/dev/how-to/get-started/deploy-tidb-from-kubernetes-minikube.md index f68fbb3e4a05..ba06cc2e7d40 100644 --- a/dev/how-to/get-started/deploy-tidb-from-kubernetes-minikube.md +++ b/dev/how-to/get-started/deploy-tidb-from-kubernetes-minikube.md @@ -43,7 +43,7 @@ minikube start --docker-env https_proxy=http://127.0.0.1:1086 \ --docker-env http_proxy=http://127.0.0.1:1086 ``` -> **注意:** +> **注意:** > > 由于 Minikube 通过虚拟机(默认)运行,`127.0.0.1` 是虚拟机本身,有些情况下你可能想要使用你的主机的实际 IP。 @@ -115,6 +115,7 @@ GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"} ``` shell kubectl -n kube-system get pods -l app=helm ``` + ### 添加 Helm 仓库 [Helm 仓库](http://charts.pingcap.org/)存放着 PingCAP 发布的 charts,例如 tidb-operator、tidb-cluster 和 tidb-backup 等等。可使用以下命令添加仓库: @@ -174,7 +175,7 @@ helm upgrade tidb-operator pingcap/tidb-operator --namespace tidb-admin --set \ ### 启动 TiDB 集群 -通过下面命令启动 TiDB 集群: +通过下面命令启动 TiDB 集群: {{< copyable "shell-regular" >}} diff --git a/dev/how-to/get-started/explore-sql.md b/dev/how-to/get-started/explore-sql.md index 3ab17938ae70..d158a2a02172 100644 --- a/dev/how-to/get-started/explore-sql.md +++ b/dev/how-to/get-started/explore-sql.md @@ -150,6 +150,7 @@ SELECT * FROM person; | 1 | tom | 2017-09-12 | +--------+------+------------+ ``` + 使用 `UPDATE` 语句修改表内数据。例如: ```sql diff --git a/dev/how-to/get-started/read-historical-data.md b/dev/how-to/get-started/read-historical-data.md index 9fd852463909..e30443a3ead8 100644 --- a/dev/how-to/get-started/read-historical-data.md +++ b/dev/how-to/get-started/read-historical-data.md @@ -139,4 +139,4 @@ TiDB 使用周期性运行的 GC(Garbage Collection,垃圾回收)来进行 > **注意:** > - > 在 `tidb_snapshot` 前须使用 `@@` 而非 `@`,因为 `@@` 表示系统变量,`@` 表示用户变量。 \ No newline at end of file + > 在 `tidb_snapshot` 前须使用 `@@` 而非 `@`,因为 `@@` 表示系统变量,`@` 表示用户变量。 diff --git a/dev/how-to/get-started/tidb-binlog.md b/dev/how-to/get-started/tidb-binlog.md index 13690c7ef7e1..8e2775ccdca1 100644 --- a/dev/how-to/get-started/tidb-binlog.md +++ b/dev/how-to/get-started/tidb-binlog.md @@ -61,7 +61,7 @@ sudo yum install -y mariadb-server ```bash printf > pd.toml %s\\n 'log-file="pd.log"' 'data-dir="pd.data"' - printf > tikv.toml %s\\n 'log-file="tikv.log"' '[storage]' 'data-dir="tikv.data"' '[pd]' 'endpoints=["127.0.0.1:2379"]' '[rocksdb]' max-open-files=1024 '[raftdb]' max-open-files=1024 + printf > tikv.toml %s\\n 'log-file="tikv.log"' '[storage]' 'data-dir="tikv.data"' '[pd]' 'endpoints=["127.0.0.1:2379"]' '[rocksdb]' max-open-files=1024 '[raftdb]' max-open-files=1024 printf > pump.toml %s\\n 'log-file="pump.log"' 'data-dir="pump.data"' 'addr="127.0.0.1:8250"' 'advertise-addr="127.0.0.1:8250"' 'pd-urls="http://127.0.0.1:2379"' printf > tidb.toml %s\\n 'store="tikv"' 'path="127.0.0.1:2379"' '[log.file]' 'filename="tidb.log"' '[binlog]' 'enable=true' printf > drainer.toml %s\\n 'log-file="drainer.log"' '[syncer]' 'db-type="mysql"' '[syncer.to]' 'host="127.0.0.1"' 'user="root"' 'password=""' 'port=3306' @@ -157,7 +157,6 @@ sudo yum install -y mariadb-server 如果有服务启动失败(例如出现 “`Exit 1`” 而不是 “`Running`”),尝试重启单个组件。 - ## 连接 按以上步骤操作后,TiDB 的 4 个组件开始运行。接下来可以使用以下 MariaDB 或 MySQL 命令行客户端,通过 4000 端口连接到 TiDB 服务: @@ -183,7 +182,6 @@ Check Table Before Drop: false 连接后TiDB 集群已开始运行,`pump` 读取集群中的 binlog 数据,并在其数据目录中将 binlog 数据存储为 relay log。下一步是启动一个可供 `drainer` 写入的 MariaDB Server。 - 1. 启动 `drainer`: ```bash diff --git a/dev/how-to/get-started/tispark.md b/dev/how-to/get-started/tispark.md index 13722f6ea31b..02e4f3cdb966 100644 --- a/dev/how-to/get-started/tispark.md +++ b/dev/how-to/get-started/tispark.md @@ -17,7 +17,7 @@ category: how-to ### 在 TiDB 实例上安装 JDK -在 [Oracle JDK 官方下载页面 ](http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html) 下载 JDK 1.8 当前最新版,本示例中下载的版本为 `jdk-8u141-linux-x64.tar.gz`。 +在 [Oracle JDK 官方下载页面](http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html) 下载 JDK 1.8 当前最新版,本示例中下载的版本为 `jdk-8u141-linux-x64.tar.gz`。 解压并根据您的 JDK 部署目录设置环境变量, 编辑 `~/.bashrc` 文件,比如: @@ -97,8 +97,6 @@ MySQL [TPCH_001]> show tables; ## 使用范例 - - 进入 spark 部署目录启动 spark-shell: ``` @@ -172,4 +170,4 @@ scala> spark.sql( -----------------+---------+------------+--------+-----------+ ``` -更多样例请参考 https://github.com/ilovesoup/tpch/tree/master/sparksql +更多样例请参考 [https://github.com/ilovesoup/tpch/tree/master/sparksql](https://github.com/ilovesoup/tpch/tree/master/sparksql) diff --git a/dev/how-to/maintain/backup-and-restore.md b/dev/how-to/maintain/backup-and-restore.md index aedf7bb561ae..22b2535c67f7 100644 --- a/dev/how-to/maintain/backup-and-restore.md +++ b/dev/how-to/maintain/backup-and-restore.md @@ -46,18 +46,18 @@ cd tidb-enterprise-tools-latest-linux-amd64 为了快速的备份恢复数据 (特别是数据量巨大的库), 可以参考以下建议: -* 使用 mydumper 导出来的数据文件尽可能的小, 最好不要超过 64M, 可以设置参数 -F 64 +* 使用 mydumper 导出来的数据文件尽可能的小, 最好不要超过 64M, 可以设置参数 -F 64 * loader的 `-t` 参数可以根据 tikv 的实例个数以及负载进行评估调整,例如 3个 tikv 的场景, 此值可以设为 `3 *(1 ~ n)`;当 tikv 负载过高,loader 以及 tidb 日志中出现大量 `backoffer.maxSleep 15000ms is exceeded` 可以适当调小该值,当 tikv 负载不是太高的时候,可以适当调大该值。 数据恢复示例及相关的配置: - - mydumper 导出后总数据量 214G,单表 8 列,20 亿行数据 - - 集群拓扑 - - TIKV * 12 - - TIDB * 4 - - PD * 3 - - mydumper -F 设置为 16, loader -t 参数 64 - +- mydumper 导出后总数据量 214G,单表 8 列,20 亿行数据 +- 集群拓扑 + - TIKV * 12 + - TIDB * 4 + - PD * 3 +- mydumper -F 设置为 16, loader -t 参数 64 + 结果:导入时间 11 小时左右,19.4 G/小时 ## 从 TiDB 备份数据 diff --git a/dev/how-to/maintain/identify-slow-queries.md b/dev/how-to/maintain/identify-slow-queries.md index 60c7fae3e0e2..5fc15a97fa8b 100644 --- a/dev/how-to/maintain/identify-slow-queries.md +++ b/dev/how-to/maintain/identify-slow-queries.md @@ -255,7 +255,7 @@ admin show slow top all 5 由于内存限制,保留的慢查询记录的条数是有限的。当命令查询的 `N` 大于记录条数时,返回的结果记录条数会小于 `N`。 输出内容详细说明,如下: - + | 列名 | 描述 | |:------|:---- | | start | SQL 语句执行开始时间 | @@ -270,4 +270,4 @@ admin show slow top all 5 | index_ids | 执行该 SQL 涉及到索引 ID | | internal | 表示为 TiDB 内部的 SQL 语句 | | digest | 表示 SQL 语句的指纹 | -| sql | 执行的 SQL 语句 | \ No newline at end of file +| sql | 执行的 SQL 语句 | diff --git a/dev/how-to/maintain/tidb-in-kubernetes/tidb-cluster.md b/dev/how-to/maintain/tidb-in-kubernetes/tidb-cluster.md index 4053edcdf314..8bd0ee10d0d4 100644 --- a/dev/how-to/maintain/tidb-in-kubernetes/tidb-cluster.md +++ b/dev/how-to/maintain/tidb-in-kubernetes/tidb-cluster.md @@ -44,7 +44,7 @@ TiDB Operator 把 `values.yaml` 作为 TiDB 集群的配置文件。`values.yaml * 存储 `values.yaml` 中的变量 `pd.storageClassName` 和 `tikv.storageClassName` 用于配置 PD 和 TiKV 的 `StorageClass`,默认配置为最小需求的 `local-storage`。 - + 如果你不想使用默认的 `StorageClass` 或者你的 Kubernetes 集群不支持 `local-storage`,可以通过下面命令找到可用的 `StorageClass` 并选择来配置 TiDB 集群。 {{< copyable "shell-regular" >}} @@ -274,6 +274,7 @@ Grafana 服务默认通过 `NodePort` 暴露,如果 Kubernetes 集群支持负 ```shell kubectl logs -n ${namespace} ${tidbPodName} | grep SLOW_QUERY ``` + 如果 TiDB 版本 >= v2.1.8,由于慢查询日志格式发生变化,不太方便分离慢查询日志,建议参考下面内容配置 `separateSlowLog: true` 单独查看慢查询日志。 * 配置 `separateSlowLog: true` 输出慢查询日志到一个 sidecar 容器: diff --git a/dev/how-to/maintain/tidb-in-kubernetes/tidb-node.md b/dev/how-to/maintain/tidb-in-kubernetes/tidb-node.md index 2a96950d59a3..73a3048fbc2d 100644 --- a/dev/how-to/maintain/tidb-in-kubernetes/tidb-node.md +++ b/dev/how-to/maintain/tidb-in-kubernetes/tidb-node.md @@ -24,19 +24,19 @@ TiDB 是高可用数据库,可以在部分数据库节点下线的情况下正 PD 和 TiDB 实例的迁移较快,可以采取主动驱逐实例到其它节点上的策略进行节点维护: 1. 检查待维护节点上是否有 TiKV 实例: - + {{< copyable "shell-regular" >}} - + ```shell kubectl get pod --all-namespaces -o wide | grep ``` 假如存在 TiKV 实例,请参考[维护 TiKV 实例所在节点](#维护-tikv-实例所在节点)。 - + 2. 使用 `kubectl cordon` 命令防止新的 Pod 调度到待维护节点上: {{< copyable "shell-regular" >}} - + ```shell kubectl cordon ``` @@ -44,7 +44,7 @@ PD 和 TiDB 实例的迁移较快,可以采取主动驱逐实例到其它节 3. 使用 `kubectl drain` 命令将待维护节点上的数据库实例迁移到其它节点上: {{< copyable "shell-regular" >}} - + ```shell kubectl drain --ignore-daemonsets --delete-local-data ``` @@ -54,7 +54,7 @@ PD 和 TiDB 实例的迁移较快,可以采取主动驱逐实例到其它节 4. 此时,假如希望下线该 Kubernetes 节点,则可以将该节点删除: {{< copyable "shell-regular" >}} - + ```shell kubectl delete node ``` @@ -62,17 +62,17 @@ PD 和 TiDB 实例的迁移较快,可以采取主动驱逐实例到其它节 假如希望恢复 Kubernetes 节点,则需要在恢复节点后确认其健康状态: {{< copyable "shell-regular" >}} - + ```shell watch kubectl get node ``` - + 观察到节点进入 `Ready` 状态后,继续操作。 5. 使用 `kubectl uncordon` 命令解除节点的调度限制: {{< copyable "shell-regular" >}} - + ```shell kubectl uncordon ``` @@ -84,11 +84,11 @@ PD 和 TiDB 实例的迁移较快,可以采取主动驱逐实例到其它节 ```shell watch kubectl get -n $namespace pod -o wide ``` - + 或者: - + {{< copyable "shell-regular" >}} - + ```sql watch tkctl get all ``` @@ -179,17 +179,17 @@ pd-ctl -d config set max-store-down-time 10m 5. 解除 TiKV 实例与节点本地盘的绑定。 查询 Pod 使用的 `PesistentVolumeClaim`: - + {{< copyable "shell-regular" >}} - + ```shell kubectl get -n ${namespace} pod ${pod_name} -ojson | jq '.spec.volumes | .[] | select (.name == "tikv") | .persistentVolumeClaim.claimName' ``` - + 删除该 `PesistentVolumeClaim`: - + {{< copyable "shell-regular" >}} - + ```shell kubectl delete -n ${namespace} pvc ${pvc_name} ``` @@ -197,7 +197,7 @@ pd-ctl -d config set max-store-down-time 10m 6. 删除 TiKV 实例: {{< copyable "shell-regular" >}} - + ```shell kubectl delete -n ${namespace} pod ${pod_name} ``` @@ -205,7 +205,7 @@ pd-ctl -d config set max-store-down-time 10m 7. 观察该 TiKV 实例是否正常调度到其它节点上: {{< copyable "shell-regular" >}} - + ```shell watch kubectl -n ${namespace} get pod -o wide ``` @@ -215,7 +215,7 @@ pd-ctl -d config set max-store-down-time 10m 8. 确认节点不再有 TiKV 实例后,再逐出节点上的其它实例: {{< copyable "shell-regular" >}} - + ```shell kubectl drain --ignore-daemonsets --delete-local-data ``` @@ -223,7 +223,7 @@ pd-ctl -d config set max-store-down-time 10m 9. 再次确认节点不再有任何 TiKV、TiDB 和 PD 实例运行: {{< copyable "shell-regular" >}} - + ```shell kubectl get pod --all-namespaces | grep ``` @@ -231,7 +231,7 @@ pd-ctl -d config set max-store-down-time 10m 10. 最后(可选),假如是长期下线节点,建议将节点从 Kubernetes 集群中删除: {{< copyable "shell-regular" >}} - + ```shell kuebctl delete node ``` diff --git a/dev/how-to/migrate/from-aurora.md b/dev/how-to/migrate/from-aurora.md index 9d0a60023ce3..e787f70a0f99 100644 --- a/dev/how-to/migrate/from-aurora.md +++ b/dev/how-to/migrate/from-aurora.md @@ -45,7 +45,7 @@ DM 在增量同步阶段依赖 `ROW` 格式的 binlog,如果未启用 binlog 目前推荐使用 DM-Ansible 部署 DM 集群,具体部署方法参照[使用 DM-Ansible 部署 DM 集群](/reference/tools/data-migration/deployment.md)。 > **注意:** -> +> > - 在 DM 所有的配置文件中,数据库的密码要使用 dmctl 加密后的密文。如果数据库密码为空,则不需要加密。关于如何使用 dmctl 加密明文密码,参考[使用 dmctl 加密上游 MySQL 用户密码](/reference/tools/data-migration/deployment.md#使用-dmctl-加密上游-mysql-用户密码)。 > - 上下游数据库用户必须拥有相应的读写权限。 @@ -145,10 +145,10 @@ mydumpers: # `task.yaml` 是之前编辑的配置文件 start-task ./task.yaml ``` - + - 如果执行命令后的返回结果中不包含错误信息,则表明任务已经成功启动 - 如果包含以下错误信息,则表明上游 Aurora 用户可能拥有 TiDB 不支持的权限类型 - + ```json { "id": 4, @@ -169,10 +169,11 @@ mydumpers: "extra": "address of db instance - pingcap-1.h8emfqdptyc4.us-east-2.rds.amazonaws.com" } ``` - + 此时可以选择以下两种处理方法中的任意一种进行处理后,再使用 `start-task` 尝试重新启动任务: 1. 为用于进行数据迁移的 Aurora 用户移除不被 TiDB 支持的不必要的权限 2. 如果能确保 Aurora 用户拥有 DM 所需要的权限,可以在 `task.yaml` 配置文件中添加如下顶级配置项以跳过启用任务时的前置权限检查 + ```yaml ignore-checking-items: ["dump_privilege", "replication_privilege"] ``` diff --git a/dev/how-to/migrate/from-mysql.md b/dev/how-to/migrate/from-mysql.md index 7e6004a8c364..802461d6d75e 100644 --- a/dev/how-to/migrate/from-mysql.md +++ b/dev/how-to/migrate/from-mysql.md @@ -20,6 +20,7 @@ category: how-to * loader的 `-t` 参数可以根据 TiKV 的实例个数以及负载进行评估调整,例如 3个 TiKV 的场景,此值可以设为 `3 *(1 ~ n)`;当 TiKV 负载过高,loader 以及 TiDB 日志中出现大量 `backoffer.maxSleep 15000ms is exceeded` 可以适当调小该值,当 TiKV 负载不是太高的时候,可以适当调大该值。 导入示例及相关配置: + - mydumper 导出后总数据量 214G,单表 8 列,20 亿行数据 - 集群拓扑 - TiKV * 12 diff --git a/dev/how-to/migrate/incrementally-from-mysql.md b/dev/how-to/migrate/incrementally-from-mysql.md index 5613aace8acf..fa5afe8cf1cd 100644 --- a/dev/how-to/migrate/incrementally-from-mysql.md +++ b/dev/how-to/migrate/incrementally-from-mysql.md @@ -201,7 +201,6 @@ mysql> select * from t1; `syncer` 每隔 30s 会输出当前的同步统计,如下 - ```bash 2017/06/08 01:18:51 syncer.go:934: [info] [syncer]total events = 15, total tps = 130, recent tps = 4, master-binlog = (ON.000001, 11992), master-binlog-gtid=53ea0ed1-9bf8-11e6-8bea-64006a897c73:1-74, diff --git a/dev/how-to/monitor/monitor-a-cluster.md b/dev/how-to/monitor/monitor-a-cluster.md index bc34a0a007f1..48276e03f5f2 100644 --- a/dev/how-to/monitor/monitor-a-cluster.md +++ b/dev/how-to/monitor/monitor-a-cluster.md @@ -170,7 +170,6 @@ scrape_configs: - '192.168.199.118:20180' ... - ``` 启动 Grafana 服务: @@ -251,7 +250,7 @@ $ ./bin/grafana-server \ 1. 登录 Grafana 界面。 - - 默认地址:http://localhost:3000 + - 默认地址:`http://localhost:3000` - 默认账户:admin - 默认密码:admin diff --git a/dev/how-to/monitor/tidb-binlog.md b/dev/how-to/monitor/tidb-binlog.md index 43420f5b01bb..af29824d2b3b 100644 --- a/dev/how-to/monitor/tidb-binlog.md +++ b/dev/how-to/monitor/tidb-binlog.md @@ -84,7 +84,7 @@ category: reference #### binlog_pump_storage_available_size_less_than_20G - 含义:Pump 剩余可用磁盘空间不足 20G -- 监控规则:binlog_pump_storage_storage_size_bytes{type="available"} < 20 * 1024 * 1024 * 1024 +- 监控规则:binlog_pump_storage_storage_size_bytes{type="available"} < 20 \* 1024 \* 1024 \* 1024 - 处理方法:监控确认 Pump gc_tso 正常,需要的话调整 Pump gc 时间配置或者下线对应 Pump #### binlog_drainer_checkpoint_tso_no_change_for_1m diff --git a/dev/how-to/scale/horizontally.md b/dev/how-to/scale/horizontally.md index 143531bfee73..196055df5e72 100644 --- a/dev/how-to/scale/horizontally.md +++ b/dev/how-to/scale/horizontally.md @@ -21,9 +21,9 @@ TiDB 集群可以在不影响线上服务的情况下动态进行扩容和缩容 |Name|ClientUrls|PeerUrls| |----|----------|--------| -|pd1|http://host1:2379|http://host1:2380| -|pd2|http://host2:2379|http://host2:2380| -|pd3|http://host3:2379|http://host3:2380| +|pd1|`http://host1:2379`|`http://host1:2380`| +|pd2|`http://host2:2379`|`http://host2:2380`| +|pd3|`http://host3:2379`|`http://host3:2380`| 我们可以通过 pd-ctl 来查看当前所有 PD 节点的信息: diff --git a/dev/how-to/scale/tidb-in-kubernetes.md b/dev/how-to/scale/tidb-in-kubernetes.md index 91cb4c9e86d3..7192984cdbb4 100644 --- a/dev/how-to/scale/tidb-in-kubernetes.md +++ b/dev/how-to/scale/tidb-in-kubernetes.md @@ -30,11 +30,11 @@ TiDB 水平扩缩容操作指的是通过增加或减少节点的数量,来达 ```shell watch kubectl -n ${namespace} get pod -o wide ``` - + 当所有组件的 Pod 数量都达到了预设值,并且都进入 `Running` 状态后,水平扩缩容完成。 > **注意:** -> +> > - PD、TiKV 组件在滚动升级的过程中不会触发扩缩容操作。 > - PD、TiKV 组件在缩容过程中都会调用接口下线正在删除的 PD、TiKV 组件在下线时会涉及到数据迁移的操作,所以会消耗比较长的时间。 > - PD、TiKV 组件在缩容过程中被删除的节点的 PVC 会保留,并且由于 PV 的 `Reclaim Policy` 设置为 `Retain`,即使 PVC 被删除,数据依然可以找回。 diff --git a/dev/how-to/scale/with-ansible.md b/dev/how-to/scale/with-ansible.md index a457f74a14bb..802d8d72dec3 100644 --- a/dev/how-to/scale/with-ansible.md +++ b/dev/how-to/scale/with-ansible.md @@ -184,7 +184,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。以 4. 登录新增的 PD 节点,编辑启动脚本:`{deploy_dir}/scripts/run_pd.sh` - 1. 移除 `--initial-cluster="xxxx" \` 配置,注意这里不能在行开头加注释符 #。 + 1. 移除 `--initial-cluster="xxxx" \` 配置,注意这里不能在行开头加注释符 #。 2. 添加 `--join="http://172.16.10.1:2379" \`,IP 地址 (172.16.10.1) 可以是集群内现有 PD IP 地址中的任意一个。 @@ -195,7 +195,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。以 ``` 4. 使用 `pd-ctl` 检查新节点是否添加成功: - + ``` /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d member ``` @@ -211,7 +211,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。以 ``` ansible-playbook start.yml -l 172.16.10.103 ``` - + 7. 更新 Prometheus 配置并重启: ``` @@ -301,7 +301,7 @@ TiDB 集群可以在不影响线上服务的情况下进行扩容和缩容。以 ``` 2. 从集群中移除 node9,假如 store id 为 10: - + ``` /home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://172.16.10.1:2379" -d store delete 10 ``` diff --git a/dev/how-to/secure/enable-tls-between-components.md b/dev/how-to/secure/enable-tls-between-components.md index 2b756c63c594..85150177654c 100644 --- a/dev/how-to/secure/enable-tls-between-components.md +++ b/dev/how-to/secure/enable-tls-between-components.md @@ -22,7 +22,7 @@ MySQL Client 与 TiDB 之间使用一套证书,TiDB 集群组件之间使用 推荐为 TiDB、TiKV、PD 分别准备一个 server 证书,并保证可以相互验证,而它们的各种客户端共用 client 证书。 - 有多种工具可以生成自签名证书,如 `openssl`,`easy-rsa `,`cfssl`。 + 有多种工具可以生成自签名证书,如 `openssl`,`easy-rsa`,`cfssl`。 这里提供一个使用 `cfssl` 生成证书的示例:[生成自签名证书](/how-to/secure/generate-self-signed-certificates.md)。 @@ -70,9 +70,9 @@ MySQL Client 与 TiDB 之间使用一套证书,TiDB 集群组件之间使用 此时 TiDB 集群各个组件间已开启双向验证。 -> **注意:** -> -> 若 TiDB 集群各个组件间已开启 TLS,在使用 tikv-ctl 或 pd-ctl 工具连接集群时,需要指定 client 证书,示例: + > **注意:** + > + > 若 TiDB 集群各个组件间已开启 TLS,在使用 tikv-ctl 或 pd-ctl 工具连接集群时,需要指定 client 证书,示例: ```bash ./pd-ctl -u https://127.0.0.1:2379 --cacert /path/to/ca.pem --cert /path/to/client.pem --key /path/to/client-key.pem diff --git a/dev/how-to/secure/generate-self-signed-certificates.md b/dev/how-to/secure/generate-self-signed-certificates.md index 5e579594d60e..5e1fc328a7f3 100644 --- a/dev/how-to/secure/generate-self-signed-certificates.md +++ b/dev/how-to/secure/generate-self-signed-certificates.md @@ -45,14 +45,14 @@ cfssl print-defaults csr > ca-csr.json ## 生成证书 -#### 证书介绍 +### 证书介绍 - tidb-server certificate 由 TiDB 使用,为其他组件和客户端验证 TiDB 身份。 - tikv-server certificate 由 TiKV 使用,为其他组件和客户端验证 TiKV 身份。 - pd-server certificate 由 PD 使用,为其他组件和客户端验证 PD 身份。 - client certificate 用于通过 PD、TiKV、TiDB 验证客户端。例如 `pd-ctl`,`tikv-ctl`,`pd-recover`。 -#### 配置 CA 选项 +### 配置 CA 选项 根据实际需求修改 `ca-config.json`: @@ -105,7 +105,7 @@ cfssl print-defaults csr > ca-csr.json } ``` -#### 生成 CA 证书 +### 生成 CA 证书 ```bash cfssl gencert -initca ca-csr.json | cfssljson -bare ca - @@ -119,7 +119,7 @@ ca.csr ca.pem ``` -#### 生成服务器端证书 +### 生成服务器端证书 `hostname` 中为各组件的 IP 地址,以及 `127.0.0.1` @@ -139,7 +139,7 @@ tidb-server.csr tikv-server.csr pd-server.csr tidb-server.pem tikv-server.pem pd-server.pem ``` -#### 生成客户端证书 +### 生成客户端证书 ```bash echo '{"CN":"client","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client -hostname="" - | cfssljson -bare client @@ -151,4 +151,4 @@ echo '{"CN":"client","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gen client-key.pem client.csr client.pem -``` \ No newline at end of file +``` diff --git a/dev/how-to/troubleshoot/cluster-setup.md b/dev/how-to/troubleshoot/cluster-setup.md index cd82af535005..8f2d00a5113b 100644 --- a/dev/how-to/troubleshoot/cluster-setup.md +++ b/dev/how-to/troubleshoot/cluster-setup.md @@ -17,28 +17,27 @@ category: how-to + 机器配置以及部署拓扑 + dmesg 中 TiDB 组件相关的问题 - ## 数据库连接不上 首先请确认集群的各项服务是否已经启动,包括 tidb-server、pd-server、tikv-server。请用 ps 命令查看所有进程是否在。如果某个组件的进程已经不在了,请参考对应的章节排查错误。 如果所有的进程都在,请查看 tidb-server 的日志,看是否有报错?常见的错误包括: -+ InformationSchema is out of date ++ InformationSchema is out of date 无法连接 tikv-server,请检查 pd-server 以及 tikv-server 的状态和日志。 -+ panic ++ panic 程序有错误,请将具体的 panic log [提供给 TiDB 开发者](https://github.com/pingcap/tidb/issues/new/choose)。 如果是清空数据并重新部署服务,请确认以下信息: -+ pd-server、tikv-server 数据都已清空 ++ pd-server、tikv-server 数据都已清空 tikv-server 存储具体的数据,pd-server 存储 tikv-server 中数据的的元信息。如果只清空 pd-server 或只清空 tikv-server 的数据,会导致两边数据不匹配。 -+ 清空 pd-server 和 tikv-server 的数据并重启后,也需要重启 tidb-server ++ 清空 pd-server 和 tikv-server 的数据并重启后,也需要重启 tidb-server 集群 ID 是由 pd-server 在集群初始化时随机分配,所以重新部署集群后,集群 ID 会发生变化。tidb-server 业务需要重启以获取新的集群 ID。 @@ -46,15 +45,15 @@ category: how-to tidb-server 无法启动的常见情况包括: -+ 启动参数错误 ++ 启动参数错误 请参考[TiDB 命令行参数](/reference/configuration/tidb-server/configuration.md) -+ 端口被占用:`lsof -i:port` ++ 端口被占用:`lsof -i:port` 请确保 tidb-server 启动所需要的端口未被占用。 -+ 无法连接 pd-server ++ 无法连接 pd-server 首先检查 pd-server 的进程状态和日志,确保 pd-server 成功启动,对应端口已打开:`lsof -i:port`。 @@ -67,50 +66,53 @@ tidb-server 无法启动的常见情况包括: ## tikv-server 启动报错 -+ 启动参数错误 ++ 启动参数错误 请参考[TiKV 启动参数](/reference/configuration/tikv-server/configuration.md)文档。 -+ 端口被占用:`lsof -i:port` ++ 端口被占用:`lsof -i:port` 请确保 tikv-server 启动所需要的端口未被占用: `lsof -i:port`。 -+ 无法连接 pd-server ++ 无法连接 pd-server 首先检查 pd-server 的进程状态和日志。确保 pd-server 成功启动,对应端口已打开:`lsof -i:port`。 若 pd-server 正常,则需要检查 tikv-server 机器和 pd-server 对应端口之间的连通性, 确保网段连通且对应服务端口已添加到防火墙白名单中,可通过 nc 或 curl 工具检查。具体命令参考上一节。 -+ 文件被占用 ++ 文件被占用 不要在一个数据库文件目录上打开两个 tikv。 ## pd-server 启动报错 -+ 启动参数错误 ++ 启动参数错误 + + 请参考 [PD 命令行参数](/reference/configuration/pd-server/configuration.md)文档。 - 请参考[PD 命令行参数](/reference/configuration/pd-server/configuration.md)文档。 -+ 端口被占用:`lsof -i:port` ++ 端口被占用:`lsof -i:port` 请确保 pd-server 启动所需要的端口未被占用: `lsof -i:port`。 ## TiDB/TiKV/PD 进程异常退出 -+ 进程是否是启动在前台 ++ 进程是否是启动在前台 当前终端退出给其所有子进程发送 HUP 信号,从而导致进程退出。 -+ 是否是在命令行用过 `nohup+&` 方式直接运行 + ++ 是否是在命令行用过 `nohup+&` 方式直接运行 这样依然可能导致进程因终端连接突然中断,作为终端 SHELL 的子进程被杀掉。 + 推荐将启动命令写在脚本中,通过脚本运行(相当于二次 fork 启动)。 ## TiKV 进程异常重启 -+ 检查 dmesg 或者 syslog 里面是否有 OOM 信息 ++ 检查 dmesg 或者 syslog 里面是否有 OOM 信息 如果有 OOM 信息并且杀掉的进程为 TiKV,请减少 TiKV 的 RocksDB 的各个 CF 的 `block-cache-size` 值。 -+ 检查 TiKV 日志是否有 panic 的 log ++ 检查 TiKV 日志是否有 panic 的 log 提交 Issue 并附上 panic 的 log。 diff --git a/dev/how-to/troubleshoot/tidb-lightning.md b/dev/how-to/troubleshoot/tidb-lightning.md index b9b553e8b138..0971a11e8095 100644 --- a/dev/how-to/troubleshoot/tidb-lightning.md +++ b/dev/how-to/troubleshoot/tidb-lightning.md @@ -56,9 +56,9 @@ Lightning 的正常速度为每条线程每 2 分钟导入一个 256 MB 的数 如果错误原因是非法数据源,使用 `tidb-lightning-ctl` 删除已导入数据,并重启 Lightning。 - ```sh - tidb-lightning-ctl --config conf/tidb-lightning.toml --checkpoint-error-destroy=all - ``` +```sh +tidb-lightning-ctl --config conf/tidb-lightning.toml --checkpoint-error-destroy=all +``` 其他解决方法请参考[断点续传的控制](/reference/tools/tidb-lightning/checkpoints.md#断点续传的控制)。 diff --git a/dev/how-to/upgrade/rolling-updates-with-ansible.md b/dev/how-to/upgrade/rolling-updates-with-ansible.md index 2b1204558063..281eec524437 100644 --- a/dev/how-to/upgrade/rolling-updates-with-ansible.md +++ b/dev/how-to/upgrade/rolling-updates-with-ansible.md @@ -5,7 +5,7 @@ category: how-to # 使用 TiDB-Ansible 升级 TiDB 集群 -滚动升级 TiDB 集群时,会串行关闭服务,更新服务 binary 和配置文件,再启动服务。在前端配置负载均衡的情况下,滚动升级期间不影响业务运行(最小环境 :pd * 3、tidb * 2、tikv * 3)。 +滚动升级 TiDB 集群时,会串行关闭服务,更新服务 binary 和配置文件,再启动服务。在前端配置负载均衡的情况下,滚动升级期间不影响业务运行(最小环境 :pd \* 3、tidb \* 2、tikv \* 3)。 > **注意:** > @@ -30,14 +30,14 @@ category: how-to > > 如果使用 master 分支的 tidb-ansible,`tidb_version = latest` 保持不变即可,latest 版本的 TiDB 安装包会每日更新。 -2. 删除原有的 downloads 目录 `/home/tidb/tidb-ansible/downloads/` +2. 删除原有的 downloads 目录 `/home/tidb/tidb-ansible/downloads/` ``` $ cd /home/tidb/tidb-ansible $ rm -rf downloads ``` -3. 使用 playbook 下载 TiDB binary,自动替换 binary 到 `/home/tidb/tidb-ansible/resource/bin/` +3. 使用 playbook 下载 TiDB binary,自动替换 binary 到 `/home/tidb/tidb-ansible/resource/bin/` ``` $ ansible-playbook local_prepare.yml @@ -64,7 +64,7 @@ $ wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz ``` $ ansible-playbook rolling_update.yml --tags=pd ``` - + 如果 PD 实例数大于等于 3,滚动升级 PD leader 实例时,Ansible 会先迁移 PD leader 到其他节点再关闭该实例。 - 滚动升级 TiKV 节点(只升级 TiKV 服务) diff --git a/dev/how-to/upgrade/tidb-in-kubernetes.md b/dev/how-to/upgrade/tidb-in-kubernetes.md index 5d81465f3a1d..4d250d67597f 100644 --- a/dev/how-to/upgrade/tidb-in-kubernetes.md +++ b/dev/how-to/upgrade/tidb-in-kubernetes.md @@ -7,7 +7,7 @@ category: how-to 滚动更新 TiDB 集群时,会按 PD、TiKV、TiDB 的顺序,串行删除 Pod,并创建新版本的 Pod,当新版本的 Pod 正常运行后,再处理下一个 Pod。 -滚动升级过程会自动处理 PD、TiKV 的 Leader 迁移与 TiDB 的 DDL Owner 迁移。因此,在多节点的部署拓扑下(最小环境:PD * 3、TiKV * 3、TiDB * 2),滚动更新 TiKV、PD 不会影响业务正常运行。 +滚动升级过程会自动处理 PD、TiKV 的 Leader 迁移与 TiDB 的 DDL Owner 迁移。因此,在多节点的部署拓扑下(最小环境:PD \* 3、TiKV \* 3、TiDB \* 2),滚动更新 TiKV、PD 不会影响业务正常运行。 对于有连接重试功能的客户端,滚动更新 TiDB 同样不会影响业务。对于无法进行重试的客户端,滚动更新 TiDB 则会导致连接到被关闭节点的数据库连接失效,造成部分业务请求失败。对于这类业务,推荐在客户端添加重试功能或在低峰期进行 TiDB 的滚动升级操作。 @@ -31,7 +31,7 @@ category: how-to ```shell watch kubectl -n ${namespace} get pod -o wide ``` - + 当所有 Pod 都重建完毕进入 `Running` 状态后,升级完成。 ## 更新 TiDB 集群配置 diff --git a/dev/overview.md b/dev/overview.md index a9e5ed175d0f..6711da8b498b 100644 --- a/dev/overview.md +++ b/dev/overview.md @@ -10,7 +10,7 @@ TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and A TiDB 具备如下特性: - 高度兼容 MySQL - + [大多数情况下](/reference/mysql-compatibility.md),无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。 - 水平弹性扩展 @@ -60,4 +60,4 @@ TiDB 集群所有组件的源码均可从 GitHub 上直接访问: - [TiKV](https://github.com/tikv/tikv) - [PD](https://github.com/pingcap/pd) - [TiSpark](https://github.com/pingcap/tispark) -- [TiDB Operator](https://github.com/pingcap/tidb-operator) \ No newline at end of file +- [TiDB Operator](https://github.com/pingcap/tidb-operator) diff --git a/dev/reference/configuration/pd-server/configuration-file.md b/dev/reference/configuration/pd-server/configuration-file.md index 79806245cf91..0203d7f07129 100644 --- a/dev/reference/configuration/pd-server/configuration-file.md +++ b/dev/reference/configuration/pd-server/configuration-file.md @@ -9,6 +9,7 @@ PD 配置文件比命令行参数支持更多的选项。你可以在 [conf/conf 本文档只阐述未包含在命令行参数中的参数,命令行参数参见[这里](/reference/configuration/pd/configuration.md)。 + ### `lease` + PD Leader Key 租约超时时间,超时系统重新选举 Leader。 @@ -65,7 +66,7 @@ PD 配置文件比命令行参数支持更多的选项。你可以在 [conf/conf + 开启独立的 region 存储。 + 默认:false -## log +## log 日志相关的配置项。 @@ -182,7 +183,7 @@ PD 配置文件比命令行参数支持更多的选项。你可以在 [conf/conf + 设置 store 空间不足的阈值。 + 默认:0.8 + 最小值:大于 0 -+ 最大值:小于 ++ 最大值:小于 ### `tolerant-size-ratio` diff --git a/dev/reference/configuration/pd-server/configuration.md b/dev/reference/configuration/pd-server/configuration.md index 60e7f0a19537..b3b64e25a1d2 100644 --- a/dev/reference/configuration/pd-server/configuration.md +++ b/dev/reference/configuration/pd-server/configuration.md @@ -47,7 +47,7 @@ PD 可以通过命令行参数或环境变量配置。 ## `--initial-cluster` + 初始化 PD 集群配置。 -+ 默认:"{name}=http://{advertise-peer-url}" ++ 默认:`"{name}=http://{advertise-peer-url}"` + 例如,如果 name 是 "pd", 并且 `advertise-peer-urls` 是 `http://192.168.100.113:2380`, 那么 `initial-cluster` 就是 `pd=http://192.168.100.113:2380`。 + 如果你需要启动三台 PD,那么 `initial-cluster` 可能就是 `pd1=http://192.168.100.113:2380, pd2=http://192.168.100.114:2380, pd3=192.168.100.115:2380`。 diff --git a/dev/reference/configuration/tidb-in-kubernetes/backup-configuration.md b/dev/reference/configuration/tidb-in-kubernetes/backup-configuration.md index 9a6539de96ba..e490f830a353 100644 --- a/dev/reference/configuration/tidb-in-kubernetes/backup-configuration.md +++ b/dev/reference/configuration/tidb-in-kubernetes/backup-configuration.md @@ -32,7 +32,7 @@ category: reference + 该 Kubernetes Secret 中需要存储目标集群的登录用户名和密码,你可以通过以下命令来创建这个 Secret: {{< copyable "shell-regular" >}} - + ```shell kubectl create secret generic backup-secret -n ${namespace} --from-literal=user=root --from-literal=password= ``` @@ -41,7 +41,7 @@ category: reference + Kubernetes StorageClass + 默认:"local-storage" -+ 备份任务需要绑定一个持久卷 (Persistent Volume, PV) 来永久或临时存储备份数据,`StorageClass` 用于声明持久卷使用的存储类型,需要确保该 `StorageClass` 在 Kubernetes 集群中存在。 ++ 备份任务需要绑定一个持久卷 (Persistent Volume, PV) 来永久或临时存储备份数据,`StorageClass` 用于声明持久卷使用的存储类型,需要确保该 `StorageClass` 在 Kubernetes 集群中存在。 ## `storage.size` @@ -58,7 +58,7 @@ category: reference + 恢复参数 + 默认:"-t 16" -+ 为恢复数据时使用的 [Loader](/dev/reference/tools/loader.md) 指定额外的运行参数 ++ 为恢复数据时使用的 [Loader](/dev/reference/tools/loader.md) 指定额外的运行参数 ## `gcp.bucket` @@ -105,7 +105,7 @@ category: reference + 该 Kubernetes Secret 中需要存储访问 Ceph 时使用的 `access_key` 和 `secret_key`。可使用如下命令来创建这个 Secret: {{< copyable "shell-regular" >}} - + ```shell kubectl create secret generic ceph-backup-secret -n ${namespace} --from-literal=access_key= --from-literal=secret_key= ``` diff --git a/dev/reference/configuration/tidb-server/configuration-file.md b/dev/reference/configuration/tidb-server/configuration-file.md index c5582a2ac350..1400efcb96ed 100644 --- a/dev/reference/configuration/tidb-server/configuration-file.md +++ b/dev/reference/configuration/tidb-server/configuration-file.md @@ -9,6 +9,7 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ 本文档只阐述未包含在命令行参数中的参数,命令行参数参见[这里](/reference/configuration/tidb-server/configuration.md)。 + ### `split-table` + 为每个 table 建立单独的 Region。 @@ -22,6 +23,7 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ + 现在合法的选项是 ["log", "cancel"],如果为 "log",仅仅是打印日志,不作实质处理。如果为 "cancel",我们会取消执行这个操作,并且输出日志。 ### `mem-quota-query` + + 单条 SQL 语句可以占用的最大内存阈值。 + 默认值:34359738368 + 超过该值的请求会被 `oom-action` 定义的行为所处理。 @@ -64,7 +66,7 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ + 将旧表中的 utf8 字符集当成 utf8mb4的开关。 + 默认值:true -## log +## log 日志相关的配置项。 @@ -193,7 +195,7 @@ TiDB 配置文件比命令行参数支持更多的选项。你可以在 [config/ ### `max-memory` -+ Prepare cache LRU 使用的最大内存限制,超过 performance.max-memory * (1 - prepared-plan-cache.memory-guard-ratio)会 剔除 LRU 中的元素。 ++ Prepare cache LRU 使用的最大内存限制,超过 performance.max-memory * (1 - prepared-plan-cache.memory-guard-ratio)会 剔除 LRU 中的元素。 + 默认值:0 + 这个配置只有在 prepared-plan-cache.enabled 为 true 的情况才会生效。在 LRU 的 size 大于 prepared-plan-cache.capacity 的情况下,也会剔除 LRU 中的元素。 diff --git a/dev/reference/configuration/tidb-server/configuration.md b/dev/reference/configuration/tidb-server/configuration.md index 614acbb2b548..0db108fd5cd8 100644 --- a/dev/reference/configuration/tidb-server/configuration.md +++ b/dev/reference/configuration/tidb-server/configuration.md @@ -98,13 +98,13 @@ TiDB 通过命令行参数或环境变量配置。默认的 TiDB 端口为 4000 + TiDB 服务状态监听端口 + 默认:"10080" + 这个端口是为了展示 TiDB 内部数据用的。包括 [prometheus 统计](https://prometheus.io/) 以及 [pprof](https://golang.org/pkg/net/http/pprof/) -+ Prometheus 统计可以通过 "http://host:status_port/metrics" 访问 -+ Pprof 数据可以通过 "http://host:status_port/debug/pprof" 访问 ++ Prometheus 统计可以通过 `http://host:status_port/metrics` 访问 ++ Pprof 数据可以通过 `http://host:status_port/debug/pprof` 访问 ## `--status-host` + TiDB 服务状态监听 host -+ 默认:"0.0.0.0" ++ 默认:"0.0.0.0" ## `--metrics-addr` @@ -141,5 +141,6 @@ TiDB 通过命令行参数或环境变量配置。默认的 TiDB 端口为 4000 > 请不要配置成 0,除非特殊情况,一般使用默认值即可。 ## `--cors` + + 用于设置 TiDB HTTP 状态服务的 Access-Control-Allow-Origin -+ 默认:"" \ No newline at end of file ++ 默认:"" diff --git a/dev/reference/configuration/tidb-server/mysql-variables.md b/dev/reference/configuration/tidb-server/mysql-variables.md index f3fc7f0f41e6..ffa49c1d48aa 100644 --- a/dev/reference/configuration/tidb-server/mysql-variables.md +++ b/dev/reference/configuration/tidb-server/mysql-variables.md @@ -44,7 +44,7 @@ MySQL 系统变量 (System Variables) 是一些系统参数,用于调整数据 | ON | +---------------------+ 1 row in set (0.00 sec) - + mysql> SELECT @@SESSION.autocommit; +----------------------+ | @@SESSION.autocommit | @@ -52,10 +52,10 @@ MySQL 系统变量 (System Variables) 是一些系统参数,用于调整数据 | ON | +----------------------+ 1 row in set (0.00 sec) - + mysql> SET GLOBAL autocommit = OFF; Query OK, 0 rows affected (0.01 sec) - + mysql> SELECT @@SESSION.autocommit; -- 会话范围的系统变量不会改变,会话中执行的事务依旧是以自动提交的形式来进行。 +----------------------+ | @@SESSION.autocommit | @@ -63,7 +63,7 @@ MySQL 系统变量 (System Variables) 是一些系统参数,用于调整数据 | ON | +----------------------+ 1 row in set (0.00 sec) - + mysql> SELECT @@GLOBAL.autocommit; +---------------------+ | @@GLOBAL.autocommit | @@ -71,22 +71,22 @@ MySQL 系统变量 (System Variables) 是一些系统参数,用于调整数据 | OFF | +---------------------+ 1 row in set (0.00 sec) - + mysql> exit Bye $ mysql -h127.0.0.1 -P4000 -uroot -D test Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.25-TiDB-None MySQL Community Server (Apache License 2.0) - + Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. - + Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. - + Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. - + mysql> SELECT @@SESSION.autocommit; -- 新建的会话会使用新的全局变量。 +----------------------+ | @@SESSION.autocommit | diff --git a/dev/reference/configuration/tidb-server/server-command-option.md b/dev/reference/configuration/tidb-server/server-command-option.md index cb2e0539fb62..81a1c7b440f0 100755 --- a/dev/reference/configuration/tidb-server/server-command-option.md +++ b/dev/reference/configuration/tidb-server/server-command-option.md @@ -64,7 +64,6 @@ TiDB 接受许多的启动参数,执行这个命令可以得到一个简要的 + 默认: "" + 如果没设置这个参数,log 会默认输出到 "stderr",如果设置了, log 就会输出到对应的文件里面,在每天凌晨,log 会自动轮转使用一个新的文件,并且将以前的文件改名备份 - ### \-\-metrics-addr + Prometheus Push Gateway 地址 @@ -107,8 +106,8 @@ TiDB 接受许多的启动参数,执行这个命令可以得到一个简要的 + TiDB 服务状态监听端口 + 默认: "10080" + 这个端口是为了展示 TiDB 内部数据用的。包括 [prometheus 统计](https://prometheus.io/) 以及 [pprof](https://golang.org/pkg/net/http/pprof/) -+ Prometheus 统计可以通过 "http://host:status_port/metrics" 访问 -+ Pprof 数据可以通过 "http://host:status_port/debug/pprof" 访问 ++ Prometheus 统计可以通过 `http://host:status_port/metrics` 访问 ++ Pprof 数据可以通过 `http://host:status_port/debug/pprof` 访问 ### \-\-store @@ -121,7 +120,7 @@ TiDB 接受许多的启动参数,执行这个命令可以得到一个简要的 启动 TiDB 服务器时,通过 `--config path` 可以指定服务器的配置文件。对于配置中重叠的选项,命令行启动参数的优先级高于配置文件。 -一份配置文件的示例参见 https://github.com/pingcap/tidb/blob/master/config/config.toml.example +一份配置文件的示例参见 [https://github.com/pingcap/tidb/blob/master/config/config.toml.example](https://github.com/pingcap/tidb/blob/master/config/config.toml.example) 以下是启动参数的完整描述。 diff --git a/dev/reference/configuration/tikv-server/configuration-file.md b/dev/reference/configuration/tikv-server/configuration-file.md index 1c02613a259d..9036959f8a7a 100644 --- a/dev/reference/configuration/tikv-server/configuration-file.md +++ b/dev/reference/configuration/tikv-server/configuration-file.md @@ -9,6 +9,7 @@ TiKV 配置文件比命令行参数支持更多的选项。你可以在 [etc/con 本文档只阐述未包含在命令行参数中的参数,命令行参数参见[这里](/reference/configuration/tikv-server/configuration.md)。 + ### `status-thread-pool-size` + Http API 服务的工作线程数量。 @@ -532,7 +533,6 @@ raftstore 相关的配置项。 + 开启按 table 分裂 Region的开关,建议仅在 TiDB 模式下使用。 + 默认值:true - ### `batch-split-limit` + 批量分裂 Region 的阈值,调大该值可加速分裂 Region。 @@ -762,31 +762,32 @@ rocksdb defaultcf 相关的配置项。 ### `cache-index-and-filter-blocks` + 开启 缓存 index 和 filter 的开关。 -+ 默认值:true ++ 默认值:true ### `pin-l0-filter-and-index-blocks` + 是否 pin 住 L0 的 index 和 filter。 -+ 默认值:true ++ 默认值:true ### `use-bloom-filter` + 开启 bloom filter 的开关。 -+ 默认值:true ++ 默认值:true ### `optimize-filters-for-hits` + 开启优化 filter 的命中率的开关。 -+ 默认值:true ++ 默认值:true ### `whole_key_filtering` + 开启将整个 key 放到 bloom filter 中的开关。 -+ 默认值:true ++ 默认值:true ### `bloom-filter-bits-per-key` bloom filter 为每个 key 预留的长度。 + + 默认值:10 + 单位:字节 @@ -825,7 +826,6 @@ bloom filter 为每个 key 预留的长度。 + 默认值:1 + 最小值:0 - ### `max-bytes-for-level-base` + base level (L1) 最大字节数,一般设置为 memtable 大小 4 倍。 @@ -869,6 +869,7 @@ bloom filter 为每个 key 预留的长度。 Compaction 优先类型,默认:3(MinOverlappingRatio),0(ByCompensatedSize), 1(OldestLargestSeqFirst),2(OldestSmallestSeqFirst)。 + + 默认值:3 ### `dynamic-level-bytes` @@ -1042,4 +1043,3 @@ import 相关的配置项。 + 并发导入工作任务数。 + 默认值:8 + 最小值:1 - diff --git a/dev/reference/garbage-collection/configuration.md b/dev/reference/garbage-collection/configuration.md index 00f8256d037f..09a219331fe9 100644 --- a/dev/reference/garbage-collection/configuration.md +++ b/dev/reference/garbage-collection/configuration.md @@ -39,8 +39,8 @@ update mysql.tidb set VARIABLE_VALUE="30m" where VARIABLE_NAME="tikv_gc_run_inte > - `tikv_gc_life_time` 的值必须大于 TiDB 的配置文件中的 [`max-txn-time-use`](/reference/configuration/tidb-server/configuration-file#max-txn-time-use) 的值至少 10 秒,且不低于 10 分钟。 > > - 在数据更新频繁的场景下,如果将 `tikv_gc_life_time` 设置得比较大(如数天甚至数月),可能会有一些潜在的问题,如: -> - 磁盘空间占用较多。 -> - 大量的历史版本会在一定程度上影响性能,尤其是范围查询(如 `select count(*) from t`)。 +> - 磁盘空间占用较多。 +> - 大量的历史版本会在一定程度上影响性能,尤其是范围查询(如 `select count(*) from t`)。 ## `tikv_gc_mode` diff --git a/dev/reference/key-monitoring-metrics/pd-dashboard.md b/dev/reference/key-monitoring-metrics/pd-dashboard.md index d9999a633237..4231905eeeee 100644 --- a/dev/reference/key-monitoring-metrics/pd-dashboard.md +++ b/dev/reference/key-monitoring-metrics/pd-dashboard.md @@ -65,7 +65,7 @@ category: reference - Scheduler is running:所有正在运行的 scheduler - Balance leader movement:leader 移动的详细情况 - Balance Region movement:Region 移动的详细情况 -- Balance leader event:balance leader 的事件数量 +- Balance leader event:balance leader 的事件数量 - Balance Region event:balance Region 的事件数量 - Balance leader scheduler:balance-leader scheduler 的状态 - Balance Region scheduler:balance-region scheduler 的状态 @@ -125,4 +125,4 @@ category: reference - Region schedule push:PD 向 TiKV 发送的调度命令的个数 - 99% Region heartbeat latency:99% 的情况下,心跳的延迟 -![PD Dashboard - Heartbeat metrics](/media/pd-dashboard-heartbeat.png) \ No newline at end of file +![PD Dashboard - Heartbeat metrics](/media/pd-dashboard-heartbeat.png) diff --git a/dev/reference/key-monitoring-metrics/tidb-dashboard.md b/dev/reference/key-monitoring-metrics/tidb-dashboard.md index 41504e638486..e06b84d54bd8 100644 --- a/dev/reference/key-monitoring-metrics/tidb-dashboard.md +++ b/dev/reference/key-monitoring-metrics/tidb-dashboard.md @@ -14,81 +14,81 @@ category: reference ## 说明 - Query Summary - - Duration:SQL 执行的时间 - - Statement OPS:SQL 执行数量统计(包含 `SELECT`、`INSERT`、`UPDATE` 等) - - QPS By Instance:每个 TiDB 上的 QPS + - Duration:SQL 执行的时间 + - Statement OPS:SQL 执行数量统计(包含 `SELECT`、`INSERT`、`UPDATE` 等) + - QPS By Instance:每个 TiDB 上的 QPS - Query Detail - - Internal SQL OPS:TiDB 内部 SQL 语句执行数量统计 + - Internal SQL OPS:TiDB 内部 SQL 语句执行数量统计 - Server - - Connection count:每个 TiDB 的连接数 - - Failed Query OPM:失败 SQL 的统计,例如语法错误、主键冲突等 - - Heap Memory Usage:每个 TiDB 使用的堆内存大小 - - Events OPM:统计关键事件,例如 start,close,gracefull-shutdown,kill,hang 等 - - Uncommon Error OPM:TiDB 非正常错误的统计,包括 panic,binlog 写失败等 + - Connection count:每个 TiDB 的连接数 + - Failed Query OPM:失败 SQL 的统计,例如语法错误、主键冲突等 + - Heap Memory Usage:每个 TiDB 使用的堆内存大小 + - Events OPM:统计关键事件,例如 start,close,gracefull-shutdown,kill,hang 等 + - Uncommon Error OPM:TiDB 非正常错误的统计,包括 panic,binlog 写失败等 - Transaction - - Transaction OPS:事务执行数量统计 - - Transaction Duration:事务执行的时间 - - Session Retry Error OPS:事务重试时遇到的错误数量 + - Transaction OPS:事务执行数量统计 + - Transaction Duration:事务执行的时间 + - Session Retry Error OPS:事务重试时遇到的错误数量 - Executor - - Expensive Executor OPS:消耗系统资源比较多的算子统计,包括 Merge Join,Hash Join,Index Look Up Join,Hash Agg,Stream Agg,Sort,TopN 等 - - Queries Using Plan Cache OPS:使用 Plan Cache 的查询数量统计 + - Expensive Executor OPS:消耗系统资源比较多的算子统计,包括 Merge Join,Hash Join,Index Look Up Join,Hash Agg,Stream Agg,Sort,TopN 等 + - Queries Using Plan Cache OPS:使用 Plan Cache 的查询数量统计 - Distsql - - Distsql Duration:Distsql 处理的时长 - - Distsql QPS:Distsql 的数量统计 + - Distsql Duration:Distsql 处理的时长 + - Distsql QPS:Distsql 的数量统计 - KV Errors - - KV Retry Duration:KV 重试请求的时间 - - TiClient Region Error OPS:TiKV 返回 Region 相关错误信息的数量 - - KV Backoff OPS:TiKV 返回错误信息的数量(事务冲突等) - - Lock Resolve OPS:事务冲突相关的数量 - - Other Errors OPS:其他类型的错误数量,包括清锁和更新 SafePoint + - KV Retry Duration:KV 重试请求的时间 + - TiClient Region Error OPS:TiKV 返回 Region 相关错误信息的数量 + - KV Backoff OPS:TiKV 返回错误信息的数量(事务冲突等) + - Lock Resolve OPS:事务冲突相关的数量 + - Other Errors OPS:其他类型的错误数量,包括清锁和更新 SafePoint - KV Duration - - KV Cmd Duration 99:KV 命令执行的时间 + - KV Cmd Duration 99:KV 命令执行的时间 - KV Count - - KV Cmd OPS:KV 命令执行数量统计 - - Txn OPS:启动事务的数量统计 - - Load SafePoint OPS:更新 SafePoint 的数量统计 + - KV Cmd OPS:KV 命令执行数量统计 + - Txn OPS:启动事务的数量统计 + - Load SafePoint OPS:更新 SafePoint 的数量统计 - PD Client - - PD TSO OPS:TiDB 从 PD 获取 TSO 的数量 - - PD TSO Wait Duration:TiDB 从 PD 获取 TSO 的时间 - - PD Client CMD OPS:PD Client 执行命令数量统计 - - PD Client CMD Duration: PD Client 执行命令耗时 - - PD Client CMD Fail OPS:PD Client 执行命令失败统计 + - PD TSO OPS:TiDB 从 PD 获取 TSO 的数量 + - PD TSO Wait Duration:TiDB 从 PD 获取 TSO 的时间 + - PD Client CMD OPS:PD Client 执行命令数量统计 + - PD Client CMD Duration: PD Client 执行命令耗时 + - PD Client CMD Fail OPS:PD Client 执行命令失败统计 - Schema Load - - Load Schema Duration:TiDB 从 TiKV 获取 Schema 的时间 - - Load Schema OPS:TiDB 从 TiKV 获取 Schema 的数量统计 - - Schema Lease Error OPM:Schema Lease 出错,包括 change 和 outdate 两种,出现 outdate 错误时会报警 + - Load Schema Duration:TiDB 从 TiKV 获取 Schema 的时间 + - Load Schema OPS:TiDB 从 TiKV 获取 Schema 的数量统计 + - Schema Lease Error OPM:Schema Lease 出错,包括 change 和 outdate 两种,出现 outdate 错误时会报警 - DDL - - DDL Duration 95:DDL 语句处理时间统计 - - DDL Batch Add Index Duration 100:创建索引时每个 Batch 所花费的时间统计 - - DDL Deploy Syncer Duration:Schema Version Syncer 初始化,重启,清空等操作耗时 - - Owner Handle Syncer Duration:DDL Owner 在执行更新,获取以及检查 Schema Version 的耗时 - - Update Self Version Duration:Schema Version Syncer 更新版本信息耗时 + - DDL Duration 95:DDL 语句处理时间统计 + - DDL Batch Add Index Duration 100:创建索引时每个 Batch 所花费的时间统计 + - DDL Deploy Syncer Duration:Schema Version Syncer 初始化,重启,清空等操作耗时 + - Owner Handle Syncer Duration:DDL Owner 在执行更新,获取以及检查 Schema Version 的耗时 + - Update Self Version Duration:Schema Version Syncer 更新版本信息耗时 - Statistics - - Auto Analyze Duration 95:自动 ANALYZE 耗时统计 - - Auto Analyze QPS:自动 ANALYZE 数量统计 - - Stats Inaccuracy Rate:统计信息不准确度统计 - - Pseudo Estimation OPS:使用假的统计信息优化 SQL 的数量统计 - - Dump Feedback OPS:存储统计信息 Feedback 的数量统计 - - Update Stats OPS:利用 Feedback 更新统计信息的数量统计 + - Auto Analyze Duration 95:自动 ANALYZE 耗时统计 + - Auto Analyze QPS:自动 ANALYZE 数量统计 + - Stats Inaccuracy Rate:统计信息不准确度统计 + - Pseudo Estimation OPS:使用假的统计信息优化 SQL 的数量统计 + - Dump Feedback OPS:存储统计信息 Feedback 的数量统计 + - Update Stats OPS:利用 Feedback 更新统计信息的数量统计 - Meta - - AutoID QPS:AutoID 相关操作的数量统计,包括全局 ID 分配、单个 Table AutoID 分配、单个 Table AutoID Rebase 三种操作 - - AutoID Duration:AutoID 相关操作的耗时 + - AutoID QPS:AutoID 相关操作的数量统计,包括全局 ID 分配、单个 Table AutoID 分配、单个 Table AutoID Rebase 三种操作 + - AutoID Duration:AutoID 相关操作的耗时 - GC - - Worker Action OPM:GC 相关操作的数量统计,包括 run\_job,resolve\_lock,delete\_range 等操作 - - Duration 99:GC 相关操作的耗时统计 - - GC Failure OPM:GC 相关操作失败数量统计 - - Too Many Locks Error OPM:GC 清锁过多错误的数量统计 + - Worker Action OPM:GC 相关操作的数量统计,包括 run\_job,resolve\_lock,delete\_range 等操作 + - Duration 99:GC 相关操作的耗时统计 + - GC Failure OPM:GC 相关操作失败数量统计 + - Too Many Locks Error OPM:GC 清锁过多错误的数量统计 diff --git a/dev/reference/mysql-compatibility.md b/dev/reference/mysql-compatibility.md index 87e0d576c760..3fb8128a4e54 100644 --- a/dev/reference/mysql-compatibility.md +++ b/dev/reference/mysql-compatibility.md @@ -16,6 +16,7 @@ TiDB 支持 MySQL 传输协议及其绝大多数的语法。这意味着您现 > 本页内容仅涉及 MySQL 与 TiDB 的总体差异。关于[安全特性](/reference/security/compatibility.md)及[事务模型](/reference/transactions/transaction-model.md)的兼容信息请查看各自具体页面。 ## 不支持的特性 + * 存储过程与函数 * 触发器 * 事件 @@ -77,19 +78,19 @@ TiDB 支持常用的 MySQL 内建函数,但是不是所有的函数都已经 在 TiDB 中,运行的 DDL 操作不会影响对表的读取或写入。但是,目前 DDL 变更有如下一些限制: + Add Index - - 不支持同时创建多个索引 - - 不支持通过 `ALTER TABLE` 在所生成的列上添加索引 + - 不支持同时创建多个索引 + - 不支持通过 `ALTER TABLE` 在所生成的列上添加索引 + Add Column - - 不支持同时创建多个列 - - 不支持将新创建的列设为主键或唯一索引,也不支持将此列设成 auto_increment 属性 + - 不支持同时创建多个列 + - 不支持将新创建的列设为主键或唯一索引,也不支持将此列设成 auto_increment 属性 + Drop Column: 不支持删除主键列或索引列 + Change/Modify Column - - 不支持有损变更,比如从 `BIGINT` 变为 `INTEGER`,或者从 `VARCHAR(255)` 变为 `VARCHAR(10)` - - 不支持修改 `DECIMAL` 类型的精度 - - 不支持更改 `UNSIGNED` 属性 - - 只支持将 `CHARACTER SET` 属性从 `utf8` 更改为 `utf8mb4` + - 不支持有损变更,比如从 `BIGINT` 变为 `INTEGER`,或者从 `VARCHAR(255)` 变为 `VARCHAR(10)` + - 不支持修改 `DECIMAL` 类型的精度 + - 不支持更改 `UNSIGNED` 属性 + - 只支持将 `CHARACTER SET` 属性从 `utf8` 更改为 `utf8mb4` + Alter Database - - 只支持将 `CHARACTER SET` 属性从 `utf8` 更改为 `utf8mb4` + - 只支持将 `CHARACTER SET` 属性从 `utf8` 更改为 `utf8mb4` + `LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}`: TiDB 支持的语法,但是在 TiDB 中不会生效。所有支持的 DDL 变更都不会锁表。 + `ALGORITHM [=] {DEFAULT|INSTANT|INPLACE|COPY}`: TiDB 完全支持 `ALGORITHM=INSTANT` 和 `ALGORITHM=INPLACE` 语法,但运行过程与 MySQL 有所不同,因为 MySQL 中的一些 `INPLACE` 操作实际上是 TiDB 中的 `INSTANT` 操作。`ALGORITHM=COPY` 语法在 TiDB 中不会生效,会返回警告信息。 @@ -158,9 +159,9 @@ TiDB 不需要导入时区表数据也能使用所有时区名称,采用系统 > **注意:** > > 能下推到 TiKV 的时间相关表达式会由 TiKV 进行计算。TiKV 总是采用 TiKV 内置时区规则计算,而不依赖于系统所安装的时区规则。若系统安装的时区规则与 TiKV 内置的时区规则版本不匹配,则在少数情况下可能发生能插入的时间数据无法再读出来的问题。例如,若系统上安装了 tzdata 2018a 时区规则,则在时区设置为 Asia/Shanghai 或时区设置为本地时区且本地时区为 Asia/Shanghai 的情况下,时间 `1988-04-17 02:00:00` 可以被正常插入 TiDB 3.0 RC.1,但该记录对于特定类型 SQL 则无法再读出来,原因是 TiKV 3.0 RC.1 依据的 tzdata 2018i 规则中该时间在 Asia/Shanghai 时区中不存在(夏令时时间后移一小时)。 -> +> > TiKV 各个版本内置的时区规则如下: -> +> > - 3.0.0 RC.1 及以后:[tzdata 2018i](https://github.com/eggert/tz/tree/2018i) > - 2.1.0 RC.1 及以后:[tzdata 2018e](https://github.com/eggert/tz/tree/2018e) diff --git a/dev/reference/performance/statistics.md b/dev/reference/performance/statistics.md index c1b7297d1f75..98cce5672128 100644 --- a/dev/reference/performance/statistics.md +++ b/dev/reference/performance/statistics.md @@ -290,4 +290,3 @@ LOAD STATS 'file_name' ``` `file_name` 为要导入的统计信息的文件名。 - diff --git a/dev/reference/performance/tune-tikv.md b/dev/reference/performance/tune-tikv.md index 885f19731c45..3d645ec375e1 100644 --- a/dev/reference/performance/tune-tikv.md +++ b/dev/reference/performance/tune-tikv.md @@ -18,7 +18,7 @@ TiKV 使用了 RocksDB 的 `Column Families` (CF) 特性。 - `lock` CF 存储的是锁信息,系统使用默认参数。 - Raft RocksDB 实例存储 Raft log。 - + - `default` CF 主要存储的是 Raft log,与其对应的参数位于 `[raftdb.defaultcf]` 项中。 在 TiKV 3.0 版本后,所有的 CF 默认共同使用一个 block cache 实例。通过在 `[storage.block-cache]` 下设置 `capacity` 参数,你可以配置该 block cache 的大小。block cache 越大,能够缓存的热点数据越多,读取数据越容易,同时占用的系统内存也越多。如果要为每个 CF 使用单独的 block cache 实例,需要在 `[storage.block-cache]` 下设置 `shared=false`,并为每个 CF 配置单独的 block cache 大小。例如,可以在 `[rocksdb.writecf]` 下设置 `block-cache-size` 参数来配置 `write` CF 的大小。 @@ -75,9 +75,9 @@ log-level = "info" ## 如果未设置该参数,则由以下字段或其默认值的总和决定。 ## ## * rocksdb.defaultcf.block-cache-size 或系统全部内存的 25% -## * rocksdb.writecf.block-cache-size 或系统全部内存的 15% -## * rocksdb.lockcf.block-cache-size 或系统全部内存的 2% -## * raftdb.defaultcf.block-cache-size 或系统全部内存的 2% +## * rocksdb.writecf.block-cache-size 或系统全部内存的 15% +## * rocksdb.lockcf.block-cache-size 或系统全部内存的 2% +## * raftdb.defaultcf.block-cache-size 或系统全部内存的 2% ## ## 要在单个物理机上部署多个 TiKV 节点,需要显式配置该参数。 ## 否则,TiKV 中可能会出现 OOM 错误。 @@ -240,14 +240,11 @@ target-file-size-base = "32MB" 除了以上列出的 `block-cache` 以及 `write-buffer` 会占用系统内存外: -1. 需预留一些内存作为系统的 page cache -2. TiKV 在处理大的查询的时候(例如 `select * from ...`)会读取数据然后在内存中生成对应的数据结构返回给 TiDB,这个过程中 TiKV 会占用一部分内存 - +1. 需预留一些内存作为系统的 page cache +2. TiKV 在处理大的查询的时候(例如 `select * from ...`)会读取数据然后在内存中生成对应的数据结构返回给 TiDB,这个过程中 TiKV 会占用一部分内存 ## TiKV 机器配置推荐 -1. 生产环境中,不建议将 TiKV 部署在 CPU 核数小于 8 或内存低于 32GB 的机器上 -2. 如果对写入吞吐要求比较高,建议使用吞吐能力比较好的磁盘 -3. 如果对读写的延迟要求非常高,建议使用 IOPS 比较高的 SSD 盘 - - +1. 生产环境中,不建议将 TiKV 部署在 CPU 核数小于 8 或内存低于 32GB 的机器上 +2. 如果对写入吞吐要求比较高,建议使用吞吐能力比较好的磁盘 +3. 如果对读写的延迟要求非常高,建议使用 IOPS 比较高的 SSD 盘 diff --git a/dev/reference/security/role-based-access-control.md b/dev/reference/security/role-based-access-control.md index bca0a4ef3ce0..236472986b3a 100644 --- a/dev/reference/security/role-based-access-control.md +++ b/dev/reference/security/role-based-access-control.md @@ -79,7 +79,7 @@ REVOKE ALL PRIVILEGES ON `test`.* FROM 'analyst'@'%'; ### 将角色授予给用户 -将角色 role1 和 role2 同时授予给用户 `user1@localhost` 和 `user2@localhost`。 +将角色 role1 和 role2 同时授予给用户 `user1@localhost` 和 `user2@localhost`。 {{< copyable "sql" >}} @@ -107,7 +107,7 @@ TiDB 允许这种多层授权关系存在,可以使用多层授权关系实现 ### 收回角色 -解除角色 role1、role2 与用户 `user1@localhost`、`user2@localhost` 的授权关系。 +解除角色 role1、role2 与用户 `user1@localhost`、`user2@localhost` 的授权关系。 {{< copyable "sql" >}} diff --git a/dev/reference/security/user-account-management.md b/dev/reference/security/user-account-management.md index 40054ec59250..2cac049219fd 100644 --- a/dev/reference/security/user-account-management.md +++ b/dev/reference/security/user-account-management.md @@ -225,7 +225,7 @@ TiDB 将密码存在 `mysql.user` 系统数据库里面。只有拥有 `CREATE U mysql -h 127.0.0.1 -P 4000 -u root ``` -## `FLUSH PRIVILEGES` +## `FLUSH PRIVILEGES` 如果授权表已被直接修改,运行如下命令可使改动立即生效: diff --git a/dev/reference/sql/character-set.md b/dev/reference/sql/character-set.md index 9ba05a854fde..921385bcdad6 100644 --- a/dev/reference/sql/character-set.md +++ b/dev/reference/sql/character-set.md @@ -25,8 +25,9 @@ mysql> SHOW CHARACTER SET; +---------|---------------|-------------------|--------+ 5 rows in set (0.00 sec) ``` + > **注意:** -> +> > - 在 `TiDB` 中 `utf8` 被当做成了 `utf8mb4` 来处理。 > - 每种字符集都对应一个默认的 Collation,当前有且仅有一个。 @@ -229,6 +230,7 @@ SET character_set_client = charset_name; SET character_set_results = charset_name; SET character_set_connection = charset_name; ``` + `COLLATE` 是可选的,如果没有提供,将会用 charset_name 默认的 Collation。 * `SET CHARACTER SET 'charset_name'` diff --git a/dev/reference/sql/constraints.md b/dev/reference/sql/constraints.md index 57fadf2ef68f..f14704a5c39d 100644 --- a/dev/reference/sql/constraints.md +++ b/dev/reference/sql/constraints.md @@ -42,7 +42,7 @@ TiDB 也支持使用 `ALTER TABLE` 命令来删除外键(`DROP FOREIGN KEY`) ``` ALTER TABLE orders DROP FOREIGN KEY fk_user_id; -ALTER TABLE orders ADD FOREIGN KEY fk_user_id (user_id) REFERENCES users(id); +ALTER TABLE orders ADD FOREIGN KEY fk_user_id (user_id) REFERENCES users(id); ``` 目前,外键约束并不作为 DML 操作的一部分而进行强制实施。例如,即使 `users` 表中不存在 `id=123` 的记录,在 TiDB 中下列事务也能提交成功: diff --git a/dev/reference/sql/data-types/date-and-time.md b/dev/reference/sql/data-types/date-and-time.md index 843d4c5cb03f..852109f930d3 100644 --- a/dev/reference/sql/data-types/date-and-time.md +++ b/dev/reference/sql/data-types/date-and-time.md @@ -7,6 +7,7 @@ category: reference TiDB 支持 MySQL 所有的日期和时间类型,包括 DATE、DATETIME、TIMESTAMP、TIME 以及 YEAR,完整信息参考[这篇](https://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html)文档。 + ### 类型定义 #### `DATE` 类型 diff --git a/dev/reference/sql/functions-and-operators/cast-functions-and-operators.md b/dev/reference/sql/functions-and-operators/cast-functions-and-operators.md index b08a98dc0ae2..d512f1faf7bf 100644 --- a/dev/reference/sql/functions-and-operators/cast-functions-and-operators.md +++ b/dev/reference/sql/functions-and-operators/cast-functions-and-operators.md @@ -14,4 +14,3 @@ Cast 函数和操作符用于将某种数据类型的值转换为另一种数据 | [`BINARY`](https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#operator_binary) | 将一个字符串转换成一个二进制字符串 | | [`CAST()`](https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast) | 将一个值转换成一个确定类型 | | [`CONVERT()`](https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert) | 将一个值转换成一个确定类型 | - diff --git a/dev/reference/sql/functions-and-operators/encryption-and-compression-functions.md b/dev/reference/sql/functions-and-operators/encryption-and-compression-functions.md index f7fe1c8e447a..0db5cde147b2 100644 --- a/dev/reference/sql/functions-and-operators/encryption-and-compression-functions.md +++ b/dev/reference/sql/functions-and-operators/encryption-and-compression-functions.md @@ -5,7 +5,6 @@ category: reference # 加密和压缩函数 - | 函数名 | 功能描述 | |:-----------|:----------------------------| | [`MD5()`](https://dev.mysql.com/doc/refman/5.7/en/encryption-functions.html#function_md5)                                                             | 计算字符串的 MD5 校验和       | diff --git a/dev/reference/sql/functions-and-operators/json-functions.md b/dev/reference/sql/functions-and-operators/json-functions.md index f3582a14bea1..fc7f0cd85a52 100644 --- a/dev/reference/sql/functions-and-operators/json-functions.md +++ b/dev/reference/sql/functions-and-operators/json-functions.md @@ -47,7 +47,7 @@ TiDB 支持 MySQL 5.7 GA 版本发布的大多数 JSON 函数。MySQL 5.7 发布 | [JSON_TYPE(json_val)][json_type] | 检查某 JSON 文档内部内容的类型 | ## 未支持的函数 - + TiDB 暂未支持以下 JSON 函数。相关进展参见 [TiDB #7546](https://github.com/pingcap/tidb/issues/7546): * `JSON_APPEND` 及其别名 `JSON_ARRAY_APPEND` diff --git a/dev/reference/sql/language-structure/expression-syntax.md b/dev/reference/sql/language-structure/expression-syntax.md index 31ac41bb64f5..d11a4ad8cf16 100644 --- a/dev/reference/sql/language-structure/expression-syntax.md +++ b/dev/reference/sql/language-structure/expression-syntax.md @@ -9,10 +9,10 @@ category: reference ``` Expression: - singleAtIdentifier assignmentEq Expression + singleAtIdentifier assignmentEq Expression | Expression logOr Expression | Expression "XOR" Expression - | Expression logAnd Expression + | Expression logAnd Expression | "NOT" Expression | Factor IsOrNotOp trueKwd | Factor IsOrNotOp falseKwd @@ -21,31 +21,31 @@ Expression: Factor: Factor IsOrNotOp "NULL" - | Factor CompareOp PredicateExpr - | Factor CompareOp singleAtIdentifier assignmentEq PredicateExpr - | Factor CompareOp AnyOrAll SubSelect + | Factor CompareOp PredicateExpr + | Factor CompareOp singleAtIdentifier assignmentEq PredicateExpr + | Factor CompareOp AnyOrAll SubSelect | PredicateExpr PredicateExpr: PrimaryFactor InOrNotOp '(' ExpressionList ')' - | PrimaryFactor InOrNotOp SubSelect - | PrimaryFactor BetweenOrNotOp PrimaryFactor "AND" PredicateExpr - | PrimaryFactor LikeOrNotOp PrimaryExpression LikeEscapeOpt - | PrimaryFactor RegexpOrNotOp PrimaryExpression + | PrimaryFactor InOrNotOp SubSelect + | PrimaryFactor BetweenOrNotOp PrimaryFactor "AND" PredicateExpr + | PrimaryFactor LikeOrNotOp PrimaryExpression LikeEscapeOpt + | PrimaryFactor RegexpOrNotOp PrimaryExpression | PrimaryFactor PrimaryFactor: PrimaryFactor '|' PrimaryFactor - | PrimaryFactor '&' PrimaryFactor - | PrimaryFactor "<<" PrimaryFactor - | PrimaryFactor ">>" PrimaryFactor - | PrimaryFactor '+' PrimaryFactor - | PrimaryFactor '-' PrimaryFactor - | PrimaryFactor '*' PrimaryFactor - | PrimaryFactor '/' PrimaryFactor - | PrimaryFactor '%' PrimaryFactor - | PrimaryFactor "DIV" PrimaryFactor - | PrimaryFactor "MOD" PrimaryFactor + | PrimaryFactor '&' PrimaryFactor + | PrimaryFactor "<<" PrimaryFactor + | PrimaryFactor ">>" PrimaryFactor + | PrimaryFactor '+' PrimaryFactor + | PrimaryFactor '-' PrimaryFactor + | PrimaryFactor '*' PrimaryFactor + | PrimaryFactor '/' PrimaryFactor + | PrimaryFactor '%' PrimaryFactor + | PrimaryFactor "DIV" PrimaryFactor + | PrimaryFactor "MOD" PrimaryFactor | PrimaryFactor '^' PrimaryFactor | PrimaryExpression @@ -58,10 +58,10 @@ PrimaryExpression: | Identifier jss stringLit | Identifier juss stringLit | SubSelect - | '!' PrimaryExpression - | '~' PrimaryExpression - | '-' PrimaryExpression - | '+' PrimaryExpression - | "BINARY" PrimaryExpression - | PrimaryExpression "COLLATE" StringName + | '!' PrimaryExpression + | '~' PrimaryExpression + | '-' PrimaryExpression + | '+' PrimaryExpression + | "BINARY" PrimaryExpression + | PrimaryExpression "COLLATE" StringName ``` diff --git a/dev/reference/sql/language-structure/literal-values.md b/dev/reference/sql/language-structure/literal-values.md index 1198d554d3cc..b3815ad9c088 100644 --- a/dev/reference/sql/language-structure/literal-values.md +++ b/dev/reference/sql/language-structure/literal-values.md @@ -52,17 +52,17 @@ SELECT _utf8'some text'; 转义字符: -- \\0: ASCII NUL (X'00') 字符 -- \\': 单引号 -- \\": 双引号 -- \\b: 退格符号 -- \\n: 换行符 -- \\r: 回车符 +- \\0: ASCII NUL (X'00') 字符 +- \\': 单引号 +- \\": 双引号 +- \\b: 退格符号 +- \\n: 换行符 +- \\r: 回车符 - \\t: tab 符(制表符) -- \\z: ASCII 26 (Ctrl + Z) -- \\\\: 反斜杠 \\ -- \\%: \% -- \\_: \_ +- \\z: ASCII 26 (Ctrl + Z) +- \\\\: 反斜杠 \\ +- \\%: \% +- \\_: \_ 如果要在 string literal 中使用 `'` 或者 `"`,有以下几种办法: @@ -213,7 +213,6 @@ mysql> SELECT TRUE, true, tRuE, FALSE, FaLsE, false; * B'01' * 0b01 - 非法的 Bit-value: * b'2' (2 不是二进制数值, 必须为 0 或 1) diff --git a/dev/reference/sql/language-structure/schema-object-names.md b/dev/reference/sql/language-structure/schema-object-names.md index 3f821c650aa4..62cf45271065 100644 --- a/dev/reference/sql/language-structure/schema-object-names.md +++ b/dev/reference/sql/language-structure/schema-object-names.md @@ -65,7 +65,7 @@ CREATE TABLE test.t (i int); 如果你要引用这个 identifier,那么请使用: ``` -`table_name`.`col_name` +`table_name`.`col_name` ``` 而不是: @@ -74,4 +74,4 @@ CREATE TABLE test.t (i int); `table_name.col_name` ``` -更多[细节](https://dev.mysql.com/doc/refman/5.7/en/identifier-qualifiers.html) \ No newline at end of file +更多[细节](https://dev.mysql.com/doc/refman/5.7/en/identifier-qualifiers.html) diff --git a/dev/reference/sql/language-structure/user-defined-variables.md b/dev/reference/sql/language-structure/user-defined-variables.md index 8a55f8b7c482..06c5cc1d81ae 100644 --- a/dev/reference/sql/language-structure/user-defined-variables.md +++ b/dev/reference/sql/language-structure/user-defined-variables.md @@ -13,7 +13,7 @@ category: reference ```sql SET @var_name = expr [, @var_name = expr] ... -或 +或 SET @var_name := expr ``` @@ -127,4 +127,4 @@ mysql> DEALLOCATE PREPARE stmt; Query OK, 0 rows affected (0.00 sec) ``` -更多[细节](https://dev.mysql.com/doc/refman/5.7/en/user-variables.html)。 \ No newline at end of file +更多[细节](https://dev.mysql.com/doc/refman/5.7/en/user-variables.html)。 diff --git a/dev/reference/sql/partitioning.md b/dev/reference/sql/partitioning.md index ea2c77122632..4da6740c63f6 100644 --- a/dev/reference/sql/partitioning.md +++ b/dev/reference/sql/partitioning.md @@ -625,7 +625,7 @@ SELECT store_id, COUNT(department_id) AS c 本节讨论分区键,主键和唯一键之间的关系。一句话总结它们之间的关系要满足的规则:**分区表的每个唯一列,必须包含分区表达式中用到的所有列**。 -> every unique key on the table must use every column in the table's partitioning expression. +> every unique key on the table must use every column in the table's partitioning expression. 这里所指的唯一也包含了主键,因为根据主键的定义,主键必须是唯一的。例如,下面这些建表语句就是无效的: diff --git a/dev/reference/sql/sql-mode.md b/dev/reference/sql/sql-mode.md index 31dba97f91c1..f83cda0560ac 100644 --- a/dev/reference/sql/sql-mode.md +++ b/dev/reference/sql/sql-mode.md @@ -7,9 +7,9 @@ category: reference TiDB 服务器采用不同 SQL 模式来操作,且不同客户端可以应用不同模式。SQL 模式定义 TiDB 支持哪些 SQL 语法及执行哪种数据验证检查. -TiDB 启动之前采用修改 ` --sql-mode="modes" ` 配项设置 SQL 模式。 +TiDB 启动之前采用修改 `--sql-mode="modes"` 配项设置 SQL 模式。 -TiDB 启动之后采用 `SET [ SESSION | GLOBAL ] sql_mode='modes' `设置 SQL 模式。设置 GLOBAL 级别的 SQL 模式时用户需要有 SUPER 权限,并且只会影响到从设置 SQL 模式开始后续新建立的连接(注:老连接不受影响)。 SESSION 级别的 SQL 模式的变化只会影响当前的客户端。 +TiDB 启动之后采用 `SET [ SESSION | GLOBAL ] sql_mode='modes'`设置 SQL 模式。设置 GLOBAL 级别的 SQL 模式时用户需要有 SUPER 权限,并且只会影响到从设置 SQL 模式开始后续新建立的连接(注:老连接不受影响)。 SESSION 级别的 SQL 模式的变化只会影响当前的客户端。 Modesis是用逗号 (', ') 间隔开的一系列不同的模式。使用 `SELECT @@sql_mode` 语句查询当前 SQL 模式,SQL 模式默认值:""。 @@ -19,7 +19,7 @@ Modesis是用逗号 (', ') 间隔开的一系列不同的模式。使用 `SELECT * STRICT_TRANS_TABLES: 严格模式,对数据进严格校验,但数据出现错误时,插入到表中,并且返回错误。 * TRADITIONAL: 采用此模式使 TiDB 的行为象 "传统" SQL 数据库系统,当在列中插入不正确的值时“给出错误而不是警告”,一旦发现错误立即放弃INSERT/UPDATE。 -## SQL mode 列表,如下: +## SQL mode 列表,如下 | 名称 | 含义 | | --- | --- | diff --git a/dev/reference/sql/statements/add-index.md b/dev/reference/sql/statements/add-index.md index 0b821a661fd5..ecf978fc48f1 100644 --- a/dev/reference/sql/statements/add-index.md +++ b/dev/reference/sql/statements/add-index.md @@ -77,4 +77,4 @@ mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; * [RENAME INDEX](/reference/sql/statements/rename-index.md) * [ADD COLUMN](/reference/sql/statements/add-column.md) * [CREATE TABLE](/reference/sql/statements/create-table.md) -* [EXPLAIN](/reference/sql/statements/explain.md) \ No newline at end of file +* [EXPLAIN](/reference/sql/statements/explain.md) diff --git a/dev/reference/sql/statements/admin.md b/dev/reference/sql/statements/admin.md index 36fb5fd2bc0b..1344a5b6d6f9 100644 --- a/dev/reference/sql/statements/admin.md +++ b/dev/reference/sql/statements/admin.md @@ -79,7 +79,7 @@ admin show ddl jobs; * `JOB_TYPE`:DDL 操作的类型。 * `SCHEMA_STATE`:schema 的当前状态。如果 `JOB_TYPE` 是 `add index`,则为 index 的状态;如果是 `add column`,则为 column 的状态,如果是 `create table`,则为 table 的状态。常见的状态有以下几种: * `none`:表示不存在。一般 `drop` 操作或者 `create` 操作失败回滚后,会变为 `none` 状态。 - * `delete only`、`write only`、`delete reorganization`、`write reorganization`:这四种状态是中间状态,在[ Online, Asynchronous Schema Change in F1](http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/41376.pdf) 论文中有详细说明,在此不再赘述。由于中间状态转换很快,一般操作中看不到这几种状态,只有执行 `add index` 操作时能看到处于 `write reorganization` 状态,表示正在添加索引数据。 + * `delete only`、`write only`、`delete reorganization`、`write reorganization`:这四种状态是中间状态,在[Online, Asynchronous Schema Change in F1](http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/41376.pdf) 论文中有详细说明,在此不再赘述。由于中间状态转换很快,一般操作中看不到这几种状态,只有执行 `add index` 操作时能看到处于 `write reorganization` 状态,表示正在添加索引数据。 * `public`:表示存在且可用。一般 `create table` 和 `add index/column` 等操作完成后,会变为 `public` 状态,表示新建的 table/column/index 可以正常读写了。 * `SCHEMA_ID`:执行 DDL 操作的数据库的 ID。 * `TABLE_ID`:执行 DDL 操作的表的 ID。 @@ -105,4 +105,4 @@ admin show ddl jobs; ## MySQL 兼容性 -ADMIN 语句是 TiDB 对于 MySQL 语法的扩展。 +ADMIN 语句是 TiDB 对于 MySQL 语法的扩展。 diff --git a/dev/reference/sql/statements/alter-table.md b/dev/reference/sql/statements/alter-table.md index d95b411e8d24..50898477b910 100644 --- a/dev/reference/sql/statements/alter-table.md +++ b/dev/reference/sql/statements/alter-table.md @@ -73,4 +73,4 @@ mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; * [RENAME INDEX](/reference/sql/statements/rename-index.md) * [CREATE TABLE](/reference/sql/statements/create-table.md) * [DROP TABLE](/reference/sql/statements/drop-table.md) -* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) \ No newline at end of file +* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) diff --git a/dev/reference/sql/statements/alter-user.md b/dev/reference/sql/statements/alter-user.md index 60bbe89a18d8..cc4b9a9fa74b 100644 --- a/dev/reference/sql/statements/alter-user.md +++ b/dev/reference/sql/statements/alter-user.md @@ -57,4 +57,4 @@ mysql> SHOW CREATE USER 'newuser'; * [Security Compatibility with MySQL](/reference/security/compatibility.md) * [CREATE USER](/reference/sql/statements/create-user.md) * [DROP USER](/reference/sql/statements/drop-user.md) -* [SHOW CREATE USER](/reference/sql/statements/show-create-user.md) \ No newline at end of file +* [SHOW CREATE USER](/reference/sql/statements/show-create-user.md) diff --git a/dev/reference/sql/statements/analyze-table.md b/dev/reference/sql/statements/analyze-table.md index fb3e71b8ec26..14c5dc611d6e 100644 --- a/dev/reference/sql/statements/analyze-table.md +++ b/dev/reference/sql/statements/analyze-table.md @@ -4,7 +4,7 @@ summary: TiDB 数据库中 ANALYZE TABLE 的使用概况。 category: reference --- -# ANALYZE TABLE +# ANALYZE TABLE `ANALYZE TABLE` 语句用于更新 TiDB 在表和索引上留下的统计信息。执行大批量更新或导入记录后,或查询执行计划不是最佳时,建议运行 `ANALYZE TABLE`。 @@ -66,4 +66,4 @@ mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; ## 另请参阅 * [EXPLAIN](/reference/sql/statements/explain.md) -* [EXPLAIN ANALYZE](/reference/sql/statements/explain-analyze.md) \ No newline at end of file +* [EXPLAIN ANALYZE](/reference/sql/statements/explain-analyze.md) diff --git a/dev/reference/sql/statements/begin.md b/dev/reference/sql/statements/begin.md index 52b229dbeeae..ee9590050ced 100644 --- a/dev/reference/sql/statements/begin.md +++ b/dev/reference/sql/statements/begin.md @@ -10,7 +10,6 @@ category: reference 在没有 `BEGIN` 语句的情况下,每个语句默认在各自的事务中自动提交,从而确保 MySQL 兼容性。 - ## 语法图 **BeginTransactionStmt:** diff --git a/dev/reference/sql/statements/change-column.md b/dev/reference/sql/statements/change-column.md index 8756fa5959ad..066bdbbc1527 100644 --- a/dev/reference/sql/statements/change-column.md +++ b/dev/reference/sql/statements/change-column.md @@ -44,14 +44,14 @@ mysql> INSERT INTO t1 (col1) VALUES (1),(2),(3),(4),(5); Query OK, 5 rows affected (0.02 sec) Records: 5 Duplicates: 0 Warnings: 0 -mysql> +mysql> mysql> ALTER TABLE t1 CHANGE col1 col2 INT; Query OK, 0 rows affected (0.09 sec) mysql> ALTER TABLE t1 CHANGE col2 col3 BIGINT, ALGORITHM=INSTANT; Query OK, 0 rows affected (0.08 sec) -mysql> +mysql> mysql> ALTER TABLE t1 CHANGE col3 col3 INT; ERROR 1105 (HY000): unsupported modify column length 11 is less than origin 20 mysql> ALTER TABLE t1 CHANGE col3 col3 BLOB; @@ -60,7 +60,6 @@ mysql> ALTER TABLE t1 CHANGE col3 col4 BIGINT, CHANGE id id2 INT NOT NULL; ERROR 1105 (HY000): can't run multi schema change ``` - ## MySQL 兼容性 * 目前尚不支持在单个 `ALTER TABLE` 语句中进行多个更改。 @@ -72,4 +71,4 @@ ERROR 1105 (HY000): can't run multi schema change * [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) * [ADD COLUMN](/reference/sql/statements/add-column.md) * [DROP COLUMN](/reference/sql/statements/drop-column.md) -* [MODIFY COLUMN](/reference/sql/statements/modify-column.md) \ No newline at end of file +* [MODIFY COLUMN](/reference/sql/statements/modify-column.md) diff --git a/dev/reference/sql/statements/commit.md b/dev/reference/sql/statements/commit.md index 682b8537f453..5957cf8055d5 100644 --- a/dev/reference/sql/statements/commit.md +++ b/dev/reference/sql/statements/commit.md @@ -42,4 +42,4 @@ Query OK, 0 rows affected (0.01 sec) * [START TRANSACTION](/reference/sql/statements/start-transaction.md) * [ROLLBACK](/reference/sql/statements/rollback.md) * [BEGIN](/reference/sql/statements/begin.md) -* [事务的惰性检查](/reference/transactions/overview.md#事务的惰性检查) \ No newline at end of file +* [事务的惰性检查](/reference/transactions/overview.md#事务的惰性检查) diff --git a/dev/reference/sql/statements/create-index.md b/dev/reference/sql/statements/create-index.md index a1ff4e2bf6ee..f2986b3b0897 100644 --- a/dev/reference/sql/statements/create-index.md +++ b/dev/reference/sql/statements/create-index.md @@ -42,7 +42,6 @@ category: reference ![IndexOption](/media/sqlgram/IndexOption.png) - ## 示例 ```sql @@ -63,7 +62,7 @@ mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; +---------------------+----------+------+-------------------------------------------------------------+ 3 rows in set (0.00 sec) -mysql> CREATE INDEX c1 ON t1 (c1); +mysql> CREATE INDEX c1 ON t1 (c1); Query OK, 0 rows affected (0.30 sec) mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; diff --git a/dev/reference/sql/statements/create-table-like.md b/dev/reference/sql/statements/create-table-like.md index 057800316e85..40b7d4cf8761 100644 --- a/dev/reference/sql/statements/create-table-like.md +++ b/dev/reference/sql/statements/create-table-like.md @@ -58,4 +58,4 @@ Empty set (0.00 sec) ## 另请参阅 * [CREATE TABLE](/reference/sql/statements/create-table.md) -* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) \ No newline at end of file +* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) diff --git a/dev/reference/sql/statements/create-table.md b/dev/reference/sql/statements/create-table.md index 12b4469c67b6..b09998fda020 100644 --- a/dev/reference/sql/statements/create-table.md +++ b/dev/reference/sql/statements/create-table.md @@ -4,7 +4,7 @@ summary: TiDB 数据库中 CREATE TABLE 的使用概况 category: reference --- -# CREATE TABLE +# CREATE TABLE `CREATE TABLE` 语句用于在当前所选数据库中创建新表。另可参阅单独的 `CREATE TABLE LIKE` 文档。 @@ -98,4 +98,4 @@ mysql> SELECT * FROM t1; * [DROP TABLE](/reference/sql/statements/drop-table.md) * [CREATE TABLE LIKE](/reference/sql/statements/create-table-like.md) -* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) \ No newline at end of file +* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) diff --git a/dev/reference/sql/statements/create-user.md b/dev/reference/sql/statements/create-user.md index 3b51bebc00da..088bcc5dbedf 100644 --- a/dev/reference/sql/statements/create-user.md +++ b/dev/reference/sql/statements/create-user.md @@ -54,4 +54,4 @@ Query OK, 1 row affected (0.02 sec) * [DROP USER](/reference/sql/statements/drop-user.md) * [SHOW CREATE USER](/reference/sql/statements/show-create-user.md) * [ALTER USER](/reference/sql/statements/alter-user.md) -* [Privilege Management](/reference/security/privilege-system.md) \ No newline at end of file +* [Privilege Management](/reference/security/privilege-system.md) diff --git a/dev/reference/sql/statements/create-view.md b/dev/reference/sql/statements/create-view.md index 6283a58854ab..19d40e07f6b0 100644 --- a/dev/reference/sql/statements/create-view.md +++ b/dev/reference/sql/statements/create-view.md @@ -103,4 +103,4 @@ ERROR 1105 (HY000): insert into view v1 is not supported now. * [CREATE TABLE](/reference/sql/statements/create-table.md) * [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) -* [DROP TABLE](/reference/sql/statements/drop-table.md) \ No newline at end of file +* [DROP TABLE](/reference/sql/statements/drop-table.md) diff --git a/dev/reference/sql/statements/deallocate.md b/dev/reference/sql/statements/deallocate.md index 49bd68f43320..23f553f6f148 100644 --- a/dev/reference/sql/statements/deallocate.md +++ b/dev/reference/sql/statements/deallocate.md @@ -50,4 +50,4 @@ Query OK, 0 rows affected (0.00 sec) ## 另请参阅 * [PREPARE](/reference/sql/statements/prepare.md) -* [EXECUTE](/reference/sql/statements/execute.md) \ No newline at end of file +* [EXECUTE](/reference/sql/statements/execute.md) diff --git a/dev/reference/sql/statements/delete.md b/dev/reference/sql/statements/delete.md index 48674b818863..1713d92a00e8 100644 --- a/dev/reference/sql/statements/delete.md +++ b/dev/reference/sql/statements/delete.md @@ -60,4 +60,4 @@ mysql> SELECT * FROM t1; * [INSERT](/reference/sql/statements/insert.md) * [SELECT](/reference/sql/statements/select.md) * [UPDATE](/reference/sql/statements/update.md) -* [REPLACE](/reference/sql/statements/replace.md) \ No newline at end of file +* [REPLACE](/reference/sql/statements/replace.md) diff --git a/dev/reference/sql/statements/desc.md b/dev/reference/sql/statements/desc.md index 418ae1164fe8..eb1b5f291111 100644 --- a/dev/reference/sql/statements/desc.md +++ b/dev/reference/sql/statements/desc.md @@ -6,4 +6,4 @@ category: reference # DESC -`DESC` 语句是 [`EXPLAIN`](/reference/sql/statements/explain.md) 的别名。包含该语句提供了 MySQL 兼容性。 \ No newline at end of file +`DESC` 语句是 [`EXPLAIN`](/reference/sql/statements/explain.md) 的别名。包含该语句提供了 MySQL 兼容性。 diff --git a/dev/reference/sql/statements/describe.md b/dev/reference/sql/statements/describe.md index 9f5c8f887079..bb4d85c6868d 100644 --- a/dev/reference/sql/statements/describe.md +++ b/dev/reference/sql/statements/describe.md @@ -6,4 +6,4 @@ category: reference # DESCRIBE -`DESCRIBE` 语句为 [`EXPLAIN`](/reference/sql/statements/explain.md) 的别名。包含该语句提供了 MySQL 兼容性。 \ No newline at end of file +`DESCRIBE` 语句为 [`EXPLAIN`](/reference/sql/statements/explain.md) 的别名。包含该语句提供了 MySQL 兼容性。 diff --git a/dev/reference/sql/statements/drop-column.md b/dev/reference/sql/statements/drop-column.md index b602b1f3f131..ba4c43b78503 100644 --- a/dev/reference/sql/statements/drop-column.md +++ b/dev/reference/sql/statements/drop-column.md @@ -26,7 +26,6 @@ category: reference ![ColumnName](/media/sqlgram/ColumnName.png) - ## 示例 ```sql @@ -87,4 +86,4 @@ mysql> SELECT * FROM t1; * [ADD COLUMN](/reference/sql/statements/add-column.md) * [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) -* [CREATE TABLE](/reference/sql/statements/create-table.md) \ No newline at end of file +* [CREATE TABLE](/reference/sql/statements/create-table.md) diff --git a/dev/reference/sql/statements/drop-index.md b/dev/reference/sql/statements/drop-index.md index c85677302128..674529ffd7d9 100644 --- a/dev/reference/sql/statements/drop-index.md +++ b/dev/reference/sql/statements/drop-index.md @@ -46,7 +46,7 @@ mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; +---------------------+----------+------+-------------------------------------------------------------+ 3 rows in set (0.00 sec) -mysql> CREATE INDEX c1 ON t1 (c1); +mysql> CREATE INDEX c1 ON t1 (c1); Query OK, 0 rows affected (0.30 sec) mysql> EXPLAIN SELECT * FROM t1 WHERE c1 = 3; @@ -71,4 +71,4 @@ Query OK, 0 rows affected (0.30 sec) * [SHOW INDEX](/reference/sql/statements/show-index.md) * [CREATE INDEX](/reference/sql/statements/create-index.md) * [ADD INDEX](/reference/sql/statements/add-index.md) -* [RENAME INDEX](/reference/sql/statements/rename-index.md) \ No newline at end of file +* [RENAME INDEX](/reference/sql/statements/rename-index.md) diff --git a/dev/reference/sql/statements/drop-table.md b/dev/reference/sql/statements/drop-table.md index aca066f752fe..a231d6a96291 100644 --- a/dev/reference/sql/statements/drop-table.md +++ b/dev/reference/sql/statements/drop-table.md @@ -54,4 +54,4 @@ Query OK, 0 rows affected (0.23 sec) * [DROP VIEW](/reference/sql/statements/drop-view.md) * [CREATE TABLE](/reference/sql/statements/create-table.md) * [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) -* [SHOW TABLES](/reference/sql/statements/show-tables.md) \ No newline at end of file +* [SHOW TABLES](/reference/sql/statements/show-tables.md) diff --git a/dev/reference/sql/statements/drop-user.md b/dev/reference/sql/statements/drop-user.md index 73d901f566d7..084dd0dd0572 100644 --- a/dev/reference/sql/statements/drop-user.md +++ b/dev/reference/sql/statements/drop-user.md @@ -18,7 +18,6 @@ category: reference ![Username](/media/sqlgram/Username.png) - ## 示例 ```sql @@ -70,4 +69,4 @@ ERROR 1141 (42000): There is no such grant defined for user 'newuser' on host '% * [CREATE USER](/reference/sql/statements/create-user.md) * [ALTER USER](/reference/sql/statements/alter-user.md) * [SHOW CREATE USER](/reference/sql/statements/show-create-user.md) -* [Privilege Management](/reference/security/privilege-system.md) \ No newline at end of file +* [Privilege Management](/reference/security/privilege-system.md) diff --git a/dev/reference/sql/statements/drop-view.md b/dev/reference/sql/statements/drop-view.md index 258cdd9689b7..28cde689bb50 100644 --- a/dev/reference/sql/statements/drop-view.md +++ b/dev/reference/sql/statements/drop-view.md @@ -80,4 +80,4 @@ mysql> SELECT * FROM t1; ## See also * [DROP TABLE](/reference/sql/statements/drop-table.md) -* [CREATE VIEW](/reference/sql/statements/create-view.md) \ No newline at end of file +* [CREATE VIEW](/reference/sql/statements/create-view.md) diff --git a/dev/reference/sql/statements/execute.md b/dev/reference/sql/statements/execute.md index 7fcfe985a720..d8c18e875249 100644 --- a/dev/reference/sql/statements/execute.md +++ b/dev/reference/sql/statements/execute.md @@ -46,4 +46,4 @@ Query OK, 0 rows affected (0.00 sec) ## 另请参阅 * [PREPARE](/reference/sql/statements/prepare.md) -* [DEALLOCATE](/reference/sql/statements/deallocate.md) \ No newline at end of file +* [DEALLOCATE](/reference/sql/statements/deallocate.md) diff --git a/dev/reference/sql/statements/explain-analyze.md b/dev/reference/sql/statements/explain-analyze.md index 41c34cf9efc7..cf74c2eafdc4 100644 --- a/dev/reference/sql/statements/explain-analyze.md +++ b/dev/reference/sql/statements/explain-analyze.md @@ -59,4 +59,4 @@ mysql> EXPLAIN ANALYZE SELECT * FROM t1; * [Understanding the Query Execution Plan](/reference/performance/understanding-the-query-execution-plan.md) * [EXPLAIN](/reference/sql/statements/explain.md) * [ANALYZE TABLE](/reference/sql/statements/analyze-table.md) -* [TRACE](/reference/sql/statements/trace.md) \ No newline at end of file +* [TRACE](/reference/sql/statements/trace.md) diff --git a/dev/reference/sql/statements/flush-status.md b/dev/reference/sql/statements/flush-status.md index c2e733354d8b..c90a26c379d4 100644 --- a/dev/reference/sql/statements/flush-status.md +++ b/dev/reference/sql/statements/flush-status.md @@ -74,4 +74,4 @@ mysql> show status; ## 另请参阅 -* [SHOW \[GLOBAL|SESSION\] STATUS](/reference/sql/statements/show-status.md) \ No newline at end of file +* [SHOW \[GLOBAL|SESSION\] STATUS](/reference/sql/statements/show-status.md) diff --git a/dev/reference/sql/statements/flush-tables.md b/dev/reference/sql/statements/flush-tables.md index 93f42d2fe29c..731702573657 100644 --- a/dev/reference/sql/statements/flush-tables.md +++ b/dev/reference/sql/statements/flush-tables.md @@ -52,4 +52,4 @@ ERROR 1105 (HY000): FLUSH TABLES WITH READ LOCK is not supported. Please use @@ ## 另请参阅 * [LOCK TABLES](/reference/sql/statements/lock-tables.md) -* [Read historical data](/how-to/get-started/read-historical-data.md) \ No newline at end of file +* [Read historical data](/how-to/get-started/read-historical-data.md) diff --git a/dev/reference/sql/statements/grant-privileges.md b/dev/reference/sql/statements/grant-privileges.md index 8bc47b18687b..e103d2f9bc71 100644 --- a/dev/reference/sql/statements/grant-privileges.md +++ b/dev/reference/sql/statements/grant-privileges.md @@ -67,4 +67,4 @@ mysql> SHOW GRANTS FOR 'newuser'; * [REVOKE ](/reference/sql/statements/revoke-privileges.md) * [SHOW GRANTS](/reference/sql/statements/show-grants.md) -* [Privilege Management](/reference/security/privilege-system.md) \ No newline at end of file +* [Privilege Management](/reference/security/privilege-system.md) diff --git a/dev/reference/sql/statements/insert.md b/dev/reference/sql/statements/insert.md index 668335feea1a..4b07ed129d88 100644 --- a/dev/reference/sql/statements/insert.md +++ b/dev/reference/sql/statements/insert.md @@ -97,4 +97,4 @@ mysql> SELECT * FROM t2; * [DELETE](/reference/sql/statements/delete.md) * [SELECT](/reference/sql/statements/select.md) * [UPDATE](/reference/sql/statements/update.md) -* [REPLACE](/reference/sql/statements/replace.md) \ No newline at end of file +* [REPLACE](/reference/sql/statements/replace.md) diff --git a/dev/reference/sql/statements/kill.md b/dev/reference/sql/statements/kill.md index fcff327f502e..43c9b3081b0c 100644 --- a/dev/reference/sql/statements/kill.md +++ b/dev/reference/sql/statements/kill.md @@ -4,7 +4,7 @@ summary: TiDB 数据库中 KILL [TIDB] 的使用概况。 category: reference --- -# KILL [TIDB] +# KILL [TIDB] `KILL TIDB` 语句用于终止 TiDB 中的连接。 diff --git a/dev/reference/sql/statements/load-data.md b/dev/reference/sql/statements/load-data.md index 37688163dcb3..a3803958723a 100644 --- a/dev/reference/sql/statements/load-data.md +++ b/dev/reference/sql/statements/load-data.md @@ -45,4 +45,4 @@ Records: 815264 Deleted: 0 Skipped: 0 Warnings: 0 * [INSERT](/reference/sql/statements/insert.md) * [Transaction Model](/reference/transactions/transaction-model.md) -* [Import Example Database](/how-to/get-started/import-example-database.md) \ No newline at end of file +* [Import Example Database](/how-to/get-started/import-example-database.md) diff --git a/dev/reference/sql/statements/modify-column.md b/dev/reference/sql/statements/modify-column.md index 32d10c24d746..b6b8ba184f34 100644 --- a/dev/reference/sql/statements/modify-column.md +++ b/dev/reference/sql/statements/modify-column.md @@ -72,4 +72,4 @@ ERROR 1105 (HY000): can't run multi schema change * [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) * [ADD COLUMN](/reference/sql/statements/add-column.md) * [DROP COLUMN](/reference/sql/statements/drop-column.md) -* [CHANGE COLUMN](/reference/sql/statements/change-column.md) \ No newline at end of file +* [CHANGE COLUMN](/reference/sql/statements/change-column.md) diff --git a/dev/reference/sql/statements/rename-table.md b/dev/reference/sql/statements/rename-table.md index 719f125c6a52..cd393a4c2eb2 100644 --- a/dev/reference/sql/statements/rename-table.md +++ b/dev/reference/sql/statements/rename-table.md @@ -52,4 +52,4 @@ mysql> SHOW TABLES; * [CREATE TABLE](/reference/sql/statements/create-table.md) * [SHOW TABLES](/reference/sql/statements/show-tables.md) -* [ALTER TABLE](/reference/sql/statements/alter-table.md) \ No newline at end of file +* [ALTER TABLE](/reference/sql/statements/alter-table.md) diff --git a/dev/reference/sql/statements/replace.md b/dev/reference/sql/statements/replace.md index 84d0bec9076e..e4157e6d671d 100644 --- a/dev/reference/sql/statements/replace.md +++ b/dev/reference/sql/statements/replace.md @@ -73,4 +73,4 @@ mysql> SELECT * FROM t1; * [DELETE](/reference/sql/statements/delete.md) * [INSERT](/reference/sql/statements/insert.md) * [SELECT](/reference/sql/statements/select.md) -* [UPDATE](/reference/sql/statements/update.md) \ No newline at end of file +* [UPDATE](/reference/sql/statements/update.md) diff --git a/dev/reference/sql/statements/revoke-privileges.md b/dev/reference/sql/statements/revoke-privileges.md index 9960d287a05c..84319dd68d5a 100644 --- a/dev/reference/sql/statements/revoke-privileges.md +++ b/dev/reference/sql/statements/revoke-privileges.md @@ -82,4 +82,4 @@ ERROR 1141 (42000): There is no such grant defined for user 'newuser' on host '% * [GRANT ](/reference/sql/statements/grant-privileges.md) * [SHOW GRANTS](/reference/sql/statements/show-grants.md) -* [Privilege Management](/reference/security/privilege-system.md) \ No newline at end of file +* [Privilege Management](/reference/security/privilege-system.md) diff --git a/dev/reference/sql/statements/rollback.md b/dev/reference/sql/statements/rollback.md index 990efdb487da..a05aac4a9c6b 100644 --- a/dev/reference/sql/statements/rollback.md +++ b/dev/reference/sql/statements/rollback.md @@ -41,4 +41,4 @@ Empty set (0.01 sec) * [COMMIT](/reference/sql/statements/commit.md) * [BEGIN](/reference/sql/statements/begin.md) -* [START TRANSACTION](/reference/sql/statements/start-transaction.md) \ No newline at end of file +* [START TRANSACTION](/reference/sql/statements/start-transaction.md) diff --git a/dev/reference/sql/statements/select.md b/dev/reference/sql/statements/select.md index 0b42b2dd217d..0c4b8514cd0b 100644 --- a/dev/reference/sql/statements/select.md +++ b/dev/reference/sql/statements/select.md @@ -109,4 +109,4 @@ mysql> SELECT * FROM t1; * [INSERT](/reference/sql/statements/insert.md) * [DELETE](/reference/sql/statements/delete.md) * [UPDATE](/reference/sql/statements/update.md) -* [REPLACE](/reference/sql/statements/replace.md) \ No newline at end of file +* [REPLACE](/reference/sql/statements/replace.md) diff --git a/dev/reference/sql/statements/set-names.md b/dev/reference/sql/statements/set-names.md index c0cb6bed511a..38ab999fb270 100644 --- a/dev/reference/sql/statements/set-names.md +++ b/dev/reference/sql/statements/set-names.md @@ -77,4 +77,4 @@ mysql> SHOW VARIABLES LIKE 'character_set%'; * [SHOW \[GLOBAL|SESSION\] VARIABLES](/reference/sql/statements/show-variables.md) * [SET ](/reference/sql/statements/set-variable.md) -* [Character Set Support](/reference/sql/character-set.md) \ No newline at end of file +* [Character Set Support](/reference/sql/character-set.md) diff --git a/dev/reference/sql/statements/set-password.md b/dev/reference/sql/statements/set-password.md index 04597a3ba17f..4b606a7766c7 100644 --- a/dev/reference/sql/statements/set-password.md +++ b/dev/reference/sql/statements/set-password.md @@ -61,4 +61,4 @@ mysql> SHOW CREATE USER newuser; ## 另请参阅 * [CREATE USER](/reference/sql/statements/create-user.md) -* [Privilege Management](/reference/security/privilege-system.md) \ No newline at end of file +* [Privilege Management](/reference/security/privilege-system.md) diff --git a/dev/reference/sql/statements/set-variable.md b/dev/reference/sql/statements/set-variable.md index 6a211dc01eb1..35f6c5d03ef8 100644 --- a/dev/reference/sql/statements/set-variable.md +++ b/dev/reference/sql/statements/set-variable.md @@ -6,7 +6,7 @@ category: reference # SET [GLOBAL|SESSION] -`SET [GLOBAL|SESSION]` 语句用于在 `SESSION` 或 ` GLOBAL` 的范围内,对某个 TiDB 的内置变量进行更改。需注意,对 `GLOBAL` 变量的更改不适用于已有连接或本地连接,这与 MySQL 类似。只有新会话才会反映值的变化。 +`SET [GLOBAL|SESSION]` 语句用于在 `SESSION` 或 `GLOBAL` 的范围内,对某个 TiDB 的内置变量进行更改。需注意,对 `GLOBAL` 变量的更改不适用于已有连接或本地连接,这与 MySQL 类似。只有新会话才会反映值的变化。 ## 语法图 @@ -70,4 +70,4 @@ mysql> SHOW SESSION VARIABLES LIKE 'sql_mode'; ## 另请参阅 -* [SHOW \[GLOBAL|SESSION\] VARIABLES](/reference/sql/statements/show-variables.md) \ No newline at end of file +* [SHOW \[GLOBAL|SESSION\] VARIABLES](/reference/sql/statements/show-variables.md) diff --git a/dev/reference/sql/statements/show-character-set.md b/dev/reference/sql/statements/show-character-set.md index c1b13aab9d53..3c8f1091bc5e 100644 --- a/dev/reference/sql/statements/show-character-set.md +++ b/dev/reference/sql/statements/show-character-set.md @@ -44,4 +44,4 @@ mysql> SHOW CHARACTER SET; ## 另请参阅 -* [SHOW COLLATION](/reference/sql/statements/show-collation.md) \ No newline at end of file +* [SHOW COLLATION](/reference/sql/statements/show-collation.md) diff --git a/dev/reference/sql/statements/show-collation.md b/dev/reference/sql/statements/show-collation.md index 7cd9a8fd6437..744465d729d0 100644 --- a/dev/reference/sql/statements/show-collation.md +++ b/dev/reference/sql/statements/show-collation.md @@ -256,4 +256,4 @@ TiDB 不支持二进制以外的排序规则。`SHOW COLLATION` 语句仅用于 ## 另请参阅 -* [SHOW CHARACTER SET](/reference/sql/statements/show-character-set.md) \ No newline at end of file +* [SHOW CHARACTER SET](/reference/sql/statements/show-character-set.md) diff --git a/dev/reference/sql/statements/show-columns-from.md b/dev/reference/sql/statements/show-columns-from.md index 031a285b1837..d387e0a9e93b 100644 --- a/dev/reference/sql/statements/show-columns-from.md +++ b/dev/reference/sql/statements/show-columns-from.md @@ -121,4 +121,4 @@ mysql> show full columns from mysql.user; ## 另请参阅 -* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) \ No newline at end of file +* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) diff --git a/dev/reference/sql/statements/show-create-table.md b/dev/reference/sql/statements/show-create-table.md index 080644514a36..a57b1d99fdec 100644 --- a/dev/reference/sql/statements/show-create-table.md +++ b/dev/reference/sql/statements/show-create-table.md @@ -44,4 +44,4 @@ mysql> SHOW CREATE TABLE t1; * [CREATE TABLE](/reference/sql/statements/create-table.md) * [DROP TABLE](/reference/sql/statements/drop-table.md) * [SHOW TABLES](/reference/sql/statements/show-tables.md) -* [SHOW COLUMNS FROM](/reference/sql/statements/show-columns-from.md) \ No newline at end of file +* [SHOW COLUMNS FROM](/reference/sql/statements/show-columns-from.md) diff --git a/dev/reference/sql/statements/show-create-user.md b/dev/reference/sql/statements/show-create-user.md index 144af9c9d8da..eacc561cbea3 100644 --- a/dev/reference/sql/statements/show-create-user.md +++ b/dev/reference/sql/statements/show-create-user.md @@ -46,4 +46,4 @@ mysql> SHOW GRANTS FOR 'root'; * [CREATE USER](/reference/sql/statements/create-user.md) * [SHOW GRANTS](/reference/sql/statements/show-grants.md) -* [DROP USER](/reference/sql/statements/drop-user.md) \ No newline at end of file +* [DROP USER](/reference/sql/statements/drop-user.md) diff --git a/dev/reference/sql/statements/show-databases.md b/dev/reference/sql/statements/show-databases.md index 991a05762cce..06d8af2b0f5f 100644 --- a/dev/reference/sql/statements/show-databases.md +++ b/dev/reference/sql/statements/show-databases.md @@ -58,4 +58,4 @@ mysql> SHOW DATABASES; * [SHOW SCHEMAS](/reference/sql/statements/show-schemas.md) * [DROP DATABASE](/reference/sql/statements/drop-database.md) -* [CREATE DATABASE](/reference/sql/statements/create-database.md) \ No newline at end of file +* [CREATE DATABASE](/reference/sql/statements/create-database.md) diff --git a/dev/reference/sql/statements/show-engines.md b/dev/reference/sql/statements/show-engines.md index 7207505c6c37..adbb42f411fb 100644 --- a/dev/reference/sql/statements/show-engines.md +++ b/dev/reference/sql/statements/show-engines.md @@ -28,4 +28,4 @@ mysql> SHOW ENGINES; ## MySQL 兼容性 -* `SHOW ENGINES` 语句始终只返回 InnoDB 作为其支持的引擎。但 TiDB 内部通常使用 TiKV 作为存储引擎。 \ No newline at end of file +* `SHOW ENGINES` 语句始终只返回 InnoDB 作为其支持的引擎。但 TiDB 内部通常使用 TiKV 作为存储引擎。 diff --git a/dev/reference/sql/statements/show-errors.md b/dev/reference/sql/statements/show-errors.md index 87d01a8d63b9..4d8921869fef 100644 --- a/dev/reference/sql/statements/show-errors.md +++ b/dev/reference/sql/statements/show-errors.md @@ -26,7 +26,7 @@ category: reference mysql> select invalid; ERROR 1054 (42S22): Unknown column 'invalid' in 'field list' mysql> create invalid; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 14 near "invalid" +ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 14 near "invalid" mysql> SHOW ERRORS; +-------+------+-----------------------------------------------------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | @@ -37,7 +37,7 @@ mysql> SHOW ERRORS; 2 rows in set (0.00 sec) mysql> CREATE invalid2; -ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 15 near "invalid2" +ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 1 column 15 near "invalid2" mysql> SELECT 1; +------+ | 1 | @@ -56,4 +56,4 @@ Empty set (0.00 sec) ## 另请参阅 -* [SHOW WARNINGS](/reference/sql/statements/show-warnings.md) \ No newline at end of file +* [SHOW WARNINGS](/reference/sql/statements/show-warnings.md) diff --git a/dev/reference/sql/statements/show-fields-from.md b/dev/reference/sql/statements/show-fields-from.md index d8811a7f7848..5454119e9283 100644 --- a/dev/reference/sql/statements/show-fields-from.md +++ b/dev/reference/sql/statements/show-fields-from.md @@ -6,4 +6,4 @@ category: reference # SHOW [FULL] FIELDS FROM -`SHOW [FULL] FIELDS FROM` 是 [`SHOW [FULL] COLUMNS FROM`](/reference/sql/statements/show-columns-from.md) 的别名。包含该语句提供了 MySQL 兼容性。 \ No newline at end of file +`SHOW [FULL] FIELDS FROM` 是 [`SHOW [FULL] COLUMNS FROM`](/reference/sql/statements/show-columns-from.md) 的别名。包含该语句提供了 MySQL 兼容性。 diff --git a/dev/reference/sql/statements/show-index.md b/dev/reference/sql/statements/show-index.md index 436276241b70..6686230cf28f 100644 --- a/dev/reference/sql/statements/show-index.md +++ b/dev/reference/sql/statements/show-index.md @@ -6,4 +6,4 @@ category: reference # SHOW INDEX [FROM|IN] -`SHOW INDEX [FROM|IN]` 语句是 [`SHOW INDEXES [FROM|IN]`](/reference/sql/statements/show-indexes.md) 的别名。包含该语句提供了 MySQL 兼容性。 \ No newline at end of file +`SHOW INDEX [FROM|IN]` 语句是 [`SHOW INDEXES [FROM|IN]`](/reference/sql/statements/show-indexes.md) 的别名。包含该语句提供了 MySQL 兼容性。 diff --git a/dev/reference/sql/statements/show-indexes.md b/dev/reference/sql/statements/show-indexes.md index 0ae5bc847bbf..af99cf07d72b 100644 --- a/dev/reference/sql/statements/show-indexes.md +++ b/dev/reference/sql/statements/show-indexes.md @@ -72,4 +72,4 @@ mysql> SHOW KEYS FROM t1; * [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) * [DROP INDEX](/reference/sql/statements/drop-index.md) -* [CREATE INDEX](/reference/sql/statements/create-index.md) \ No newline at end of file +* [CREATE INDEX](/reference/sql/statements/create-index.md) diff --git a/dev/reference/sql/statements/show-keys.md b/dev/reference/sql/statements/show-keys.md index bc593d020a6a..7a2366413436 100644 --- a/dev/reference/sql/statements/show-keys.md +++ b/dev/reference/sql/statements/show-keys.md @@ -6,4 +6,4 @@ category: reference # SHOW KEYS [FROM|IN] -`SHOW KEYS [FROM|IN]` 语句是 [`SHOW INDEXES [FROM|IN]`](/reference/sql/statements/show-indexes.md) 语句的别名。包含该语句提供了 MySQL 兼容性。。 \ No newline at end of file +`SHOW KEYS [FROM|IN]` 语句是 [`SHOW INDEXES [FROM|IN]`](/reference/sql/statements/show-indexes.md) 语句的别名。包含该语句提供了 MySQL 兼容性。。 diff --git a/dev/reference/sql/statements/show-privileges.md b/dev/reference/sql/statements/show-privileges.md index ac2bb4a671d7..499d7d45dfa7 100644 --- a/dev/reference/sql/statements/show-privileges.md +++ b/dev/reference/sql/statements/show-privileges.md @@ -64,4 +64,4 @@ mysql> show privileges; ## 另请参阅 * [SHOW GRANTS](/reference/sql/statements/show-grants.md) -* [GRANT ](/reference/sql/statements/grant-privileges.md) \ No newline at end of file +* [GRANT ](/reference/sql/statements/grant-privileges.md) diff --git a/dev/reference/sql/statements/show-processlist.md b/dev/reference/sql/statements/show-processlist.md index e596a871fe7c..c6d17e8c0fc1 100644 --- a/dev/reference/sql/statements/show-processlist.md +++ b/dev/reference/sql/statements/show-processlist.md @@ -37,4 +37,4 @@ mysql> SHOW PROCESSLIST; ## 另请参阅 -* [KILL \[TIDB\]](/reference/sql/statements/kill.md) \ No newline at end of file +* [KILL \[TIDB\]](/reference/sql/statements/kill.md) diff --git a/dev/reference/sql/statements/show-schemas.md b/dev/reference/sql/statements/show-schemas.md index 1cf44052f041..3c47fac808e1 100644 --- a/dev/reference/sql/statements/show-schemas.md +++ b/dev/reference/sql/statements/show-schemas.md @@ -6,4 +6,4 @@ category: reference # SHOW SCHEMAS -`SHOW SCHEMAS` 语句是 [`SHOW DATABASES`](/reference/sql/statements/show-databases.md) 的别名。包含该语句提供了 MySQL 兼容性。。 \ No newline at end of file +`SHOW SCHEMAS` 语句是 [`SHOW DATABASES`](/reference/sql/statements/show-databases.md) 的别名。包含该语句提供了 MySQL 兼容性。。 diff --git a/dev/reference/sql/statements/show-status.md b/dev/reference/sql/statements/show-status.md index 254a58b19219..60fed61dceb8 100644 --- a/dev/reference/sql/statements/show-status.md +++ b/dev/reference/sql/statements/show-status.md @@ -58,4 +58,4 @@ mysql> show global status; ## 另请参阅 -* [FLUSH STATUS](/reference/sql/statements/flush-status.md) \ No newline at end of file +* [FLUSH STATUS](/reference/sql/statements/flush-status.md) diff --git a/dev/reference/sql/statements/show-table-status.md b/dev/reference/sql/statements/show-table-status.md index d29657aa681c..1c25e08e3014 100644 --- a/dev/reference/sql/statements/show-table-status.md +++ b/dev/reference/sql/statements/show-table-status.md @@ -49,9 +49,9 @@ Max_data_length: 0 Update_time: NULL Check_time: NULL Collation: utf8mb4_bin - Checksum: - Create_options: - Comment: + Checksum: + Create_options: + Comment: 1 row in set (0.00 sec) mysql> analyze table t1; @@ -74,9 +74,9 @@ Max_data_length: 0 Update_time: NULL Check_time: NULL Collation: utf8mb4_bin - Checksum: - Create_options: - Comment: + Checksum: + Create_options: + Comment: 1 row in set (0.00 sec) ``` @@ -89,4 +89,4 @@ Max_data_length: 0 * [SHOW TABLES](/reference/sql/statements/show-tables.md) * [CREATE TABLE](/reference/sql/statements/create-table.md) * [DROP TABLE](/reference/sql/statements/drop-table.md) -* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) \ No newline at end of file +* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) diff --git a/dev/reference/sql/statements/show-tables.md b/dev/reference/sql/statements/show-tables.md index 885668ca76a9..c3ab706b782c 100644 --- a/dev/reference/sql/statements/show-tables.md +++ b/dev/reference/sql/statements/show-tables.md @@ -83,4 +83,4 @@ mysql> SHOW TABLES IN mysql; * [CREATE TABLE](/reference/sql/statements/create-table.md) * [DROP TABLE](/reference/sql/statements/drop-table.md) -* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) \ No newline at end of file +* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) diff --git a/dev/reference/sql/statements/show-variables.md b/dev/reference/sql/statements/show-variables.md index 32a0a4a48e33..c47bebe76d81 100644 --- a/dev/reference/sql/statements/show-variables.md +++ b/dev/reference/sql/statements/show-variables.md @@ -105,4 +105,4 @@ mysql> SHOW GLOBAL VARIABLES LIKE 'time_zone%'; ## 另请参阅 -* [SET](/reference/sql/statements/set-session-variable.md) \ No newline at end of file +* [SET](/reference/sql/statements/set-session-variable.md) diff --git a/dev/reference/sql/statements/show-warnings.md b/dev/reference/sql/statements/show-warnings.md index 8092626df964..b24b17274e6f 100644 --- a/dev/reference/sql/statements/show-warnings.md +++ b/dev/reference/sql/statements/show-warnings.md @@ -84,4 +84,4 @@ mysql> SELECT * FROM t1; ## 另请参阅 -* [SHOW ERRORS](/reference/sql/statements/show-errors.md) \ No newline at end of file +* [SHOW ERRORS](/reference/sql/statements/show-errors.md) diff --git a/dev/reference/sql/statements/start-transaction.md b/dev/reference/sql/statements/start-transaction.md index c7c2fdfb1165..2aa879c5e440 100644 --- a/dev/reference/sql/statements/start-transaction.md +++ b/dev/reference/sql/statements/start-transaction.md @@ -40,4 +40,4 @@ Query OK, 0 rows affected (0.01 sec) * [COMMIT](/reference/sql/statements/commit.md) * [ROLLBACK](/reference/sql/statements/rollback.md) -* [BEGIN](/reference/sql/statements/begin.md) \ No newline at end of file +* [BEGIN](/reference/sql/statements/begin.md) diff --git a/dev/reference/sql/statements/trace.md b/dev/reference/sql/statements/trace.md index fc816377d823..c04738c684d8 100644 --- a/dev/reference/sql/statements/trace.md +++ b/dev/reference/sql/statements/trace.md @@ -9,6 +9,7 @@ category: reference `TRACE` 语句用于提供查询执行的详细信息,可通过 TiDB 服务器状态端口所公开的图形界面进行查看。 ## 语法图 + **TraceStmt:** ![TraceStmt](/media/sqlgram/TraceStmt.png) @@ -139,4 +140,4 @@ operation: [ ## 另请参阅 -* [EXPLAIN ANALYZE](/reference/sql/statements/explain-analyze.md) \ No newline at end of file +* [EXPLAIN ANALYZE](/reference/sql/statements/explain-analyze.md) diff --git a/dev/reference/sql/statements/truncate.md b/dev/reference/sql/statements/truncate.md index ca56318a907d..deb5a5621084 100644 --- a/dev/reference/sql/statements/truncate.md +++ b/dev/reference/sql/statements/truncate.md @@ -69,4 +69,4 @@ Query OK, 0 rows affected (0.11 sec) * [DROP TABLE](/reference/sql/statements/drop-table.md) * [DELETE](/reference/sql/statements/delete.md) * [CREATE TABLE](/reference/sql/statements/create-table.md) -* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) \ No newline at end of file +* [SHOW CREATE TABLE](/reference/sql/statements/show-create-table.md) diff --git a/dev/reference/sql/statements/update.md b/dev/reference/sql/statements/update.md index abb37e40f12e..8e162b5560be 100644 --- a/dev/reference/sql/statements/update.md +++ b/dev/reference/sql/statements/update.md @@ -74,4 +74,4 @@ mysql> SELECT * FROM t1; * [INSERT](/reference/sql/statements/insert.md) * [SELECT](/reference/sql/statements/select.md) * [DELETE](/reference/sql/statements/delete.md) -* [REPLACE](/reference/sql/statements/replace.md) \ No newline at end of file +* [REPLACE](/reference/sql/statements/replace.md) diff --git a/dev/reference/sql/statements/use.md b/dev/reference/sql/statements/use.md index 66c37ed83003..b52d6eb9a16e 100644 --- a/dev/reference/sql/statements/use.md +++ b/dev/reference/sql/statements/use.md @@ -76,4 +76,4 @@ mysql> SHOW TABLES; ## 另请参阅 * [CREATE DATABASE](/reference/sql/statements/create-database.md) -* [SHOW TABLES](/reference/sql/statements/show-tables.md) \ No newline at end of file +* [SHOW TABLES](/reference/sql/statements/show-tables.md) diff --git a/dev/reference/system-databases/information-schema.md b/dev/reference/system-databases/information-schema.md index 74475c7eee87..c37b420e1df2 100644 --- a/dev/reference/system-databases/information-schema.md +++ b/dev/reference/system-databases/information-schema.md @@ -147,11 +147,11 @@ CHARACTER_MAXIMUM_LENGTH: NULL CHARACTER_SET_NAME: NULL COLLATION_NAME: NULL COLUMN_TYPE: int(11) - COLUMN_KEY: - EXTRA: + COLUMN_KEY: + EXTRA: PRIVILEGES: select,insert,update,references - COLUMN_COMMENT: - GENERATION_EXPRESSION: + COLUMN_COMMENT: + GENERATION_EXPRESSION: 1 row in set (0.01 sec) ``` @@ -237,16 +237,16 @@ POSITION_IN_UNIQUE_CONSTRAINT: NULL `SCHEMATA` 表提供了关于数据库的信息。表中的数据与 `SHOW DATABASES` 语句的执行结果等价。 ```sql -mysql> SELECT * FROM schemata; -+--------------+--------------------+----------------------------+------------------------+----------+ -| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH | -+--------------+--------------------+----------------------------+------------------------+----------+ -| def | INFORMATION_SCHEMA | utf8mb4 | utf8mb4_bin | NULL | +mysql> SELECT * FROM schemata; ++--------------+--------------------+----------------------------+------------------------+----------+ +| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH | ++--------------+--------------------+----------------------------+------------------------+----------+ +| def | INFORMATION_SCHEMA | utf8mb4 | utf8mb4_bin | NULL | | def | mynewdb | utf8mb4 | utf8mb4_bin | NULL | -| def | mysql | utf8mb4 | utf8mb4_bin | NULL | -| def | PERFORMANCE_SCHEMA | utf8mb4 | utf8mb4_bin | NULL | -| def | test | utf8mb4 | utf8mb4_bin | NULL | -+--------------+--------------------+----------------------------+------------------------+----------+ +| def | mysql | utf8mb4 | utf8mb4_bin | NULL | +| def | PERFORMANCE_SCHEMA | utf8mb4 | utf8mb4_bin | NULL | +| def | test | utf8mb4 | utf8mb4_bin | NULL | ++--------------+--------------------+----------------------------+------------------------+----------+ 5 rows in set (0.00 sec) ``` @@ -378,8 +378,8 @@ MAX_DATA_LENGTH: 0 CHECK_TIME: NULL TABLE_COLLATION: utf8mb4_bin CHECKSUM: NULL - CREATE_OPTIONS: - TABLE_COMMENT: + CREATE_OPTIONS: + TABLE_COMMENT: TIDB_TABLE_ID: 5 1 row in set (0.00 sec) ``` @@ -625,4 +625,4 @@ TiDB 包含以下 `INFORMATION_SCHEMA` 表,但仅会返回空行: * `SESSION_STATUS` * `TABLESPACES` * `TABLE_PRIVILEGES` -* `TRIGGERS` \ No newline at end of file +* `TRIGGERS` diff --git a/dev/reference/system-databases/mysql.md b/dev/reference/system-databases/mysql.md index 8de656bfb565..57e26eb07952 100644 --- a/dev/reference/system-databases/mysql.md +++ b/dev/reference/system-databases/mysql.md @@ -28,7 +28,7 @@ category: reference ## GC Worker 相关系统表 -* `gc_delete_range` +* `gc_delete_range` ## 其它系统表 diff --git a/dev/reference/tidb-binlog-overview.md b/dev/reference/tidb-binlog-overview.md index 3d91dc1eaaa8..b6f0ab667867 100644 --- a/dev/reference/tidb-binlog-overview.md +++ b/dev/reference/tidb-binlog-overview.md @@ -60,7 +60,7 @@ Pump 和 Drainer 都支持部署和运行在 Intel x86-64 架构的 64 位通用 * 如果 TiDB Binlog 用于增量恢复,可以设置配置项 `db-type="file"`,Drainer 会将 binlog 转化为指定的 [proto buffer 格式](https://github.com/pingcap/tidb-binlog/blob/master/proto/binlog.proto)的数据,再写入到本地文件中。这样就可以使用 [Reparo](/reference/tools/tidb-binlog/reparo.md) 恢复增量数据。 关于 `db-type` 的取值,应注意: - + - 如果 TiDB 版本 < 2.1.9,则 `db-type="pb"`。 - 如果 TiDB 版本 > = 2.1.9,则 `db-type="file"` 或 `db-type="pb"`。 diff --git a/dev/reference/tispark.md b/dev/reference/tispark.md index 4484065908da..306319036deb 100644 --- a/dev/reference/tispark.md +++ b/dev/reference/tispark.md @@ -38,7 +38,7 @@ TiSpark 可以在 YARN,Mesos,Standalone 等任意 Spark 模式下运行。 对于 TiKV 与 TiSpark 分开部署的场景,可以参考如下建议配置: -+ 硬件配置建议 ++ 硬件配置建议 普通场景可以参考 [TiDB 和 TiKV 硬件配置建议](/how-to/deploy/hardware-recommendations.md),但是如果是偏重分析的场景,可以将 TiKV 节点增加到至少 64G 内存。 @@ -69,7 +69,6 @@ spark.sql.extensions org.apache.spark.sql.TiExtensions 例如你有一组 PD 在`10.16.20.1`,`10.16.20.2`,`10.16.20.3`,那么 PD 配置格式是`10.16.20.1:2379,10.16.20.2:2379,10.16.20.3:2379`。 - ### TiSpark 与 TiKV 集群混合部署的配置 对于 TiKV 与 TiSpark 混合部署的场景,需在原有 TiKV 预留资源之外累加 Spark 所需部分,并分配 25% 的内存作为系统本身占用。 @@ -113,7 +112,9 @@ cd $SPARKPATH 类似地,可以用如下命令启动 Spark-Slave 节点: - ./sbin/start-slave.sh spark://spark-master-hostname:7077 +``` +./sbin/start-slave.sh spark://spark-master-hostname:7077 +``` 命令返回以后,即可通过刚才的面板查看这个 Slave 是否已经正确地加入了 Spark 集群。在所有 Slave 节点重复刚才的命令。确认所有的 Slave 都可以正确连接 Master,这样你就拥有了一个 Standalone 模式的 Spark 集群。 @@ -227,7 +228,7 @@ df.write .option("isolationLevel", "NONE") // recommended to set isolationLevel to NONE if you have a large DF to load. .option("user", "root") // TiDB user here .save() -``` +``` 推荐将 `isolationLevel` 设置为 `NONE`,否则单一大事务有可能造成 TiDB 服务器内存溢出。 @@ -249,14 +250,12 @@ TiSpark 可以使用 TiDB 的统计信息: | -------- | -----: | :----: | | spark.tispark.statistics.auto_load | true | 是否默认进行统计信息读取 | - - ## TiSpark FAQ -- Q. 是独立部署还是和现有 Spark/Hadoop 集群共用资源? +- Q. 是独立部署还是和现有 Spark/Hadoop 集群共用资源? - A. 可以利用现有 Spark 集群无需单独部署,但是如果现有集群繁忙,TiSpark 将无法达到理想速度。 + A. 可以利用现有 Spark 集群无需单独部署,但是如果现有集群繁忙,TiSpark 将无法达到理想速度。 -- Q. 是否可以和 TiKV 混合部署? +- Q. 是否可以和 TiKV 混合部署? - A. 如果 TiDB 以及 TiKV 负载较高且运行关键的线上任务,请考虑单独部署 TiSpark;并且考虑使用不同的网卡保证 OLTP 的网络资源不被侵占而影响线上业务。如果线上业务要求不高或者机器负载不大,可以考虑与 TiKV 混合部署。 + A. 如果 TiDB 以及 TiKV 负载较高且运行关键的线上任务,请考虑单独部署 TiSpark;并且考虑使用不同的网卡保证 OLTP 的网络资源不被侵占而影响线上业务。如果线上业务要求不高或者机器负载不大,可以考虑与 TiKV 混合部署。 diff --git a/dev/reference/tools/data-migration/cluster-operations.md b/dev/reference/tools/data-migration/cluster-operations.md index 174eee5c2fb1..6fb4156392ad 100644 --- a/dev/reference/tools/data-migration/cluster-operations.md +++ b/dev/reference/tools/data-migration/cluster-operations.md @@ -11,7 +11,7 @@ category: reference 运行以下命令以启动整个集群的所有组件(包括 DM-master、DM-worker 和监控组件): -``` +```bash $ ansible-playbook start.yml ``` @@ -19,7 +19,7 @@ $ ansible-playbook start.yml 运行以下命令以下线整个集群的所有组件(包括 DM-master、DM-worker 和监控组件): -``` +```bash $ ansible-playbook stop.yml ``` @@ -54,9 +54,9 @@ $ ansible-playbook stop.yml - DM 同步 sharding DDL 语句时,如果 DM-worker 成功执行(或跳过)sharding DDL 的 binlog event,与 DM-worker 中的 sharding DDL 语句相关的所有表的断点信息都会被更新至 DDL 语句对应的 binlog event 之后的位置。 - 当 DM-worker 重启发生在 sharding DDL 语句同步开始前或完成后,DM-worker 会根据断点信息和本地记录的子任务信息自动恢复数据同步。 - + - 当 DM-worker 重启发生在 sharding DDL 语句同步过程中,可能会出现作为 DDL lock owner 的 DM-worker 实例已执行了 DDL 语句并成功变更了下游数据库表结构,但其他 DM-worker 实例重启而无法跳过 DDL 语句也无法更新断点的情况。 - + 此时 DM 会再次尝试同步这些未跳过执行的 DDL 语句。然而,由于未重启的 DM-worker 实例已经执行到了此 DDL 对应的 binlog event 之后,重启的 DM-worker 实例会被阻滞在重启前 DDL binlog event 对应的位置。 要解决这个问题,请按照[手动处理 Sharding DDL Lock](/reference/tools/data-migration/features/manually-handling-sharding-ddl-locks.md#场景二unlock-过程中部分-dm-worker-重启) 中描述的步骤操作。 @@ -114,16 +114,16 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 1. 下载 DM 二进制文件。 - 1. 从 `downloads` 目录删除已有文件。 + 1. 从 `downloads` 目录删除已有文件。 - ``` + ```bash $ cd /home/tidb/dm-ansible $ rm -rf downloads ``` 2. 用 Playbook 下载 inventory.ini 文件中指定版本的最新 DM 二进制文件。这会自动替换 `/home/tidb/dm-ansible/resource/bin/` 中已有文件。 - ``` + ```bash $ ansible-playbook local_prepare.yml ``` @@ -131,25 +131,25 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 1. 对 DM-worker 实例执行滚动升级: - ``` + ```bash ansible-playbook rolling_update.yml --tags=dm-worker ``` 2. 对 DM-master 实例执行滚动升级: - ``` + ```bash ansible-playbook rolling_update.yml --tags=dm-master ``` 3. 升级 dmctl: - ``` + ```bash ansible-playbook rolling_update.yml --tags=dmctl ``` 4. 对 DM-worker, DM-master, 以及 dmctl 整体执行滚动升级: - ``` + ```bash ansible-playbook rolling_update.yml ``` @@ -161,7 +161,7 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 1. 参考[在中控机上配置 SSH 互信和 sudo 规则](/how-to/deploy/data-migration-with-ansible.md#第-5-步-在中控机上配置-ssh-互信和-sudo-规则),使用 `tidb` 用户登录至中控机,并将 `172.16.10.74` 添加至 `hosts.ini` 文件中的 `[servers]` 部分。 - ``` + ```bash $ cd /home/tidb/dm-ansible $ vi hosts.ini [servers] @@ -173,7 +173,7 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 2. 运行以下命令。根据屏幕提示,输入 `root` 用户密码以部署 `172.16.10.74`。 - ``` + ```bash $ ansible-playbook -i hosts.ini create_users.yml -u root -k ``` @@ -192,25 +192,25 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 3. 部署新 DM-worker 实例。 - ``` + ```bash $ ansible-playbook deploy.yml --tags=dm-worker -l dm_worker3 ``` 4. 启用新 DM-worker 实例。 - ``` + ```bash $ ansible-playbook start.yml --tags=dm-worker -l dm_worker3 ``` 5. 配置并重启 DM-master 服务。 - ``` + ```bash $ ansible-playbook rolling_update.yml --tags=dm-master ``` 6. 配置并重启 Prometheus 服务。 - ``` + ```bash $ ansible-playbook rolling_update_monitor.yml --tags=prometheus ``` @@ -220,7 +220,7 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 1. 关闭您想要下线的 DM-worker 实例。 - ``` + ```bash $ ansible-playbook stop.yml --tags=dm-worker -l dm_worker3 ``` @@ -237,13 +237,13 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 3. 配置并重启 DM-master 服务。 - ``` + ```bash $ ansible-playbook rolling_update.yml --tags=dm-master ``` 4. 配置并重启 Prometheus 服务。 - ``` + ```bash $ ansible-playbook rolling_update_monitor.yml --tags=prometheus ``` @@ -254,8 +254,8 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 1. 为中控机设置 SSH 互信以及 sudo 规则。 1. 参考[在中控机上配置 SSH 互信和 sudo 规则](/how-to/deploy/data-migration-with-ansible.md#第-5-步-在中控机上配置-ssh-互信和-sudo-规则),使用 `tidb` 账户登录至中控机,并将 `172.16.10.80` 添加至 `hosts.ini` 文件中的 `[servers]` 部分。 - - ``` + + ```bash $ cd /home/tidb/dm-ansible $ vi hosts.ini [servers] @@ -267,7 +267,7 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 2. 运行以下命令。根据屏幕提示,输入 `root` 用户密码以部署 `172.16.10.80`。 - ``` + ```bash $ ansible-playbook -i hosts.ini create_users.yml -u root -k ``` @@ -293,19 +293,19 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 4. 部署新 DM-master 实例。 - ``` + ```bash $ ansible-playbook deploy.yml --tags=dm-master ``` 5. 启用新 DM-master 实例。 - ``` + ```bash $ ansible-playbook start.yml --tags=dm-master ``` 6. 更新 dmctl 配置文件。 - ``` + ```bash ansible-playbook rolling_update.yml --tags=dmctl ``` @@ -315,8 +315,9 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 1. 为中控机设置 SSH 互信以及 sudo 规则。 - 1. 参考[在中控机上配置 SSH 互信和 sudo 规则](/how-to/deploy/data-migration-with-ansible.md#第-5-步-在中控机上配置-ssh-互信和-sudo-规则),使用 `tidb` 账户登录至中控机,并将 `172.16.10.75` 添加至 `hosts.ini` 文件中的 `[servers]` 部分。 - ``` + 1. 参考[在中控机上配置 SSH 互信和 sudo 规则](/how-to/deploy/data-migration-with-ansible.md#第-5-步-在中控机上配置-ssh-互信和-sudo-规则),使用 `tidb` 账户登录至中控机,并将 `172.16.10.75` 添加至 `hosts.ini` 文件中的 `[servers]` 部分。 + + ```bash $ cd /home/tidb/dm-ansible $ vi hosts.ini [servers] @@ -328,23 +329,23 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 2. 运行以下命令。根据屏幕提示,输入 `root` 用户密码以部署 `172.16.10.85`。 - ``` + ```bash $ ansible-playbook -i hosts.ini create_users.yml -u root -k ``` 该步在 `172.16.10.75` 上创建了一个 `tidb` 用户,设置了 sudo 规则,并为中控机与该机器配置了 SSH 互信。 - + 2. 下线待替换 DM-worker 实例。 > **注意:** > > 如果机器 `172.16.10.71` 宕机,无法通过 SSH 登录,请忽略此步。 - ``` + ```bash $ ansible-playbook stop.yml --tags=dm-worker -l dm_worker1 ``` -3. 修改 `inventory.ini` 文件,为新 DM-worker 实例添加相关信息。 +3. 修改 `inventory.ini` 文件,为新 DM-worker 实例添加相关信息。 修改 `inventory.ini` 文件。注释或删除旧 `dm_worker1` 实例所在行;同时为新 `dm_worker1` 实例添加相关信息。 @@ -358,25 +359,25 @@ DM-master 重启时会自动向每个 DM-worker 实例请求任务信息,重 4. 部署新 DM-worker 实例。 - ``` + ```bash $ ansible-playbook deploy.yml --tags=dm-worker -l dm_worker1 ``` -5. 启动新 DM-worker 实例。 +5. 启动新 DM-worker 实例。 - ``` + ```bash $ ansible-playbook start.yml --tags=dm-worker -l dm_worker1 ``` 6. 配置并重启 DM-master 服务。 - ``` + ```bash $ ansible-playbook rolling_update.yml --tags=dm-master ``` 7. 配置并重启 Prometheus 服务。 - ``` + ```bash $ ansible-playbook rolling_update_monitor.yml --tags=prometheus ``` diff --git a/dev/reference/tools/data-migration/deploy.md b/dev/reference/tools/data-migration/deploy.md index c5a1e5e3f1a9..6c03f4800a19 100644 --- a/dev/reference/tools/data-migration/deploy.md +++ b/dev/reference/tools/data-migration/deploy.md @@ -12,7 +12,7 @@ category: reference 目前推荐使用 DM-Ansible 部署 DM 集群,具体部署方法参照 [使用 DM-Ansible 部署 DM 集群](/how-to/deploy/data-migration-with-ansible.md)。 > **注意:** -> +> > - 在 DM 所有的配置文件中,数据库的密码要使用 dmctl 加密后的密文。如果数据库密码为空,则不需要加密。关于如何使用 dmctl 加密明文密码,参考[使用 dmctl 加密上游 MySQL 用户密码](/how-to/deploy/data-migration-with-ansible.md#使用-dmctl-加密上游-mysql-用户密码)。 > - 上下游数据库用户必须拥有相应的读写权限。 diff --git a/dev/reference/tools/data-migration/dm-upgrade.md b/dev/reference/tools/data-migration/dm-upgrade.md index 14580b8ec21a..e4057a343592 100644 --- a/dev/reference/tools/data-migration/dm-upgrade.md +++ b/dev/reference/tools/data-migration/dm-upgrade.md @@ -46,31 +46,31 @@ Go Version: go version go1.11.2 linux/amd64 - 移除所有 `dm_worker_status_port` 配置项,根据需要变更 `dm_worker_port` 配置项。 - 移除所有 `dm_master_status_port` 配置项,根据需要变更 `dm_master_port` 配置项。 - + 如将 - + ```ini dm_worker1_1 ansible_host=172.16.10.72 server_id=101 deploy_dir=/data1/dm_worker dm_worker_port=10081 dm_worker_status_port=10082 mysql_host=172.16.10.81 mysql_user=root mysql_password='VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=' mysql_port=3306 ``` - + 变更为 - + ```ini dm_worker1_1 ansible_host=172.16.10.72 server_id=101 deploy_dir=/data1/dm_worker dm_worker_port=8262 mysql_host=172.16.10.81 mysql_user=root mysql_password='VjX8cEeTX+qcvZ3bPaO4h0C80pe/1aU=' mysql_port=3306 ``` - + 将 - + ```ini dm_master ansible_host=172.16.10.71 dm_master_port=12080 dm_master_status_port=12081 ``` - + 变更为 - + ```ini dm_master ansible_host=172.16.10.71 dm_master_port=8261 ``` - + 2. 使用 DM-Ansible 滚动升级 DM、Prometheus 与 Grafana。 ## 升级到 v1.0.0-133-g2f9fe82 @@ -106,7 +106,7 @@ Go Version: go version go1.11.2 linux/amd64 1. 变更 `inventory.ini` 的配置信息。 为所有 DM-worker 实例设置对应的 `source_id`。 - + 如将 ```ini @@ -122,11 +122,11 @@ Go Version: go version go1.11.2 linux/amd64 2. 使用 DM-Ansible 滚动升级 DM。 3. 变更任务配置文件 (`task.yaml`)。 - + 移除其中的 `config` 与 `instance-id` 配置项,增加 `source-id` 配置项(与 `inventory.ini` 中的 `source_id` 对应)。 - + 如将 - + ```yaml config: host: "192.168.199.118" @@ -135,9 +135,9 @@ Go Version: go version go1.11.2 linux/amd64 password: "1234" instance-id: "instance118-4306" # 此值具有唯一性,当保存 checkpoint、配置和其他信息时,作为 ID 使用。 ``` - + 变更为 - + ```yaml source-id: "instance118-4306" # 如需要重用之前任务的 checkpoint,需要与原 `instance-id` 取值一致。 ``` diff --git a/dev/reference/tools/data-migration/features/manually-handling-sharding-ddl-locks.md b/dev/reference/tools/data-migration/features/manually-handling-sharding-ddl-locks.md index 2609398e9bba..e37548149d80 100644 --- a/dev/reference/tools/data-migration/features/manually-handling-sharding-ddl-locks.md +++ b/dev/reference/tools/data-migration/features/manually-handling-sharding-ddl-locks.md @@ -228,7 +228,7 @@ MySQL 及 DM 操作与处理流程如下: ``` 4. 由于业务需要,DM-worker-2 对应的 MySQL-2 的数据不再需要同步到下游 TiDB,对 DM-worker-2 执行了下线处理。 -5. DM-master 上 ID 为 ``` test-`shard_db`.`shard_table` ``` 的 lock 无法等到 DM-worker-2 的 DDL 操作信息。 +5. DM-master 上 ID 为 ```test-`shard_db`.`shard_table` ``` 的 lock 无法等到 DM-worker-2 的 DDL 操作信息。 `show-ddl-locks` 返回的 `unsynced` 中一直包含 DM-worker-2 的信息(`127.0.0.1:8263`)。 diff --git a/dev/reference/tools/data-migration/features/overview.md b/dev/reference/tools/data-migration/features/overview.md index 1acb1bc5a51d..83a49afed6f9 100644 --- a/dev/reference/tools/data-migration/features/overview.md +++ b/dev/reference/tools/data-migration/features/overview.md @@ -251,7 +251,6 @@ filters: | drop index | DDL | drop index event | | alter table | DDL | alter table event | - - `sql-pattern`:用于过滤指定的 DDL SQL 语句,支持正则表达式匹配,例如上面示例 `"^DROP\\s+PROCEDURE"`。 - `action`:string(`Do` / `Ignore`);进行下面规则判断,满足其中之一则过滤,否则不过滤。 @@ -388,11 +387,11 @@ column-mappings: - 如果 `table 前缀` 不为空,则表名的组成必须为 `table 前缀` 或者 `table 前缀 + 分隔符 + 数字(即 table ID)` - 如果库名/表名不包含 `… + 分隔符 + 数字` 部分,则对应的 ID 默认为 0 - 对分库分表的规模支持限制如下 - - 支持最多 16 个 MySQL/MariaDB 实例(0 <= instance ID <= 15) - - 每个实例支持最多 128 个 schema(0 <= schema ID <= 127) - - 每个实例的每个 schema 支持最多 256 个 table(0 <= table ID <= 255) - - 进行列值映射的列的范围 (0 <= ID <= 17592186044415) - - `{instance ID, schema ID, table ID}` 组合需要保持唯一 + - 支持最多 16 个 MySQL/MariaDB 实例(0 <= instance ID <= 15) + - 每个实例支持最多 128 个 schema(0 <= schema ID <= 127) + - 每个实例的每个 schema 支持最多 256 个 table(0 <= table ID <= 255) + - 进行列值映射的列的范围 (0 <= ID <= 17592186044415) + - `{instance ID, schema ID, table ID}` 组合需要保持唯一 - 目前该功能是定制功能,如果需要调整请联系相关开发人员进行调整 **`partition id` 参数配置** diff --git a/dev/reference/tools/data-migration/from-aurora.md b/dev/reference/tools/data-migration/from-aurora.md index aa43279ecb46..dc9faee3d58c 100644 --- a/dev/reference/tools/data-migration/from-aurora.md +++ b/dev/reference/tools/data-migration/from-aurora.md @@ -45,7 +45,7 @@ DM 在增量同步阶段依赖 `ROW` 格式的 binlog,如果未启用 binlog 目前推荐使用 DM-Ansible 部署 DM 集群,具体部署方法参照[使用 DM-Ansible 部署 DM 集群](/how-to/deploy/data-migration-with-ansible.md)。 > **注意:** -> +> > - 在 DM 所有的配置文件中,数据库的密码要使用 dmctl 加密后的密文。如果数据库密码为空,则不需要加密。关于如何使用 dmctl 加密明文密码,参考[使用 dmctl 加密上游 MySQL 用户密码](/how-to/deploy/data-migration-with-ansible.md#使用-dmctl-加密上游-mysql-用户密码)。 > - 上下游数据库用户必须拥有相应的读写权限。 @@ -145,10 +145,10 @@ mydumpers: # `task.yaml` 是之前编辑的配置文件 start-task ./task.yaml ``` - + - 如果执行命令后的返回结果中不包含错误信息,则表明任务已经成功启动 - 如果包含以下错误信息,则表明上游 Aurora 用户可能拥有 TiDB 不支持的权限类型 - + ```json { "id": 4, @@ -169,10 +169,11 @@ mydumpers: "extra": "address of db instance - pingcap-1.h8emfqdptyc4.us-east-2.rds.amazonaws.com" } ``` - + 此时可以选择以下两种处理方法中的任意一种进行处理后,再使用 `start-task` 尝试重新启动任务: 1. 为用于进行数据迁移的 Aurora 用户移除不被 TiDB 支持的不必要的权限 2. 如果能确保 Aurora 用户拥有 DM 所需要的权限,可以在 `task.yaml` 配置文件中添加如下顶级配置项以跳过启用任务时的前置权限检查 + ```yaml ignore-checking-items: ["dump_privilege", "replication_privilege"] ``` @@ -188,10 +189,13 @@ query-status > **注意:** > > 如果查询命令的返回结果中包含以下错误信息,则表明在全量同步的 dump 阶段不能获得相应的 lock: +> > ```bash > Couldn't acquire global lock, snapshots will not be consistent: Access denied for user 'root'@'%' (using password: YES) > ``` +> > 此时如果能接受不使用 FTWL 来确保 dump 文件与 metadata 的一致或上游能暂时停止写入,可以通过为 `mydumpers` 下的 `extra-args` 添加 `--no-locks` 参数来进行绕过,具体方法为: +> > 1. 使用 `stop-task` 停止当前由于不能正常 dump 而已经转为 paused 的任务 > 2. 将原 task.yaml 中的 `extra-args: "-B test_db -T test_table"` 更新为 `extra-args: "-B test_db -T test_table --no-locks"` > 3. 使用 `start-task` 重新启动任务 diff --git a/dev/reference/tools/data-migration/manage-tasks.md b/dev/reference/tools/data-migration/manage-tasks.md index 1684dbbbe9c1..88d0cf5a919e 100644 --- a/dev/reference/tools/data-migration/manage-tasks.md +++ b/dev/reference/tools/data-migration/manage-tasks.md @@ -178,8 +178,8 @@ query-status - 可选 - 查询在指定的一组 DM-workers 上运行的数据同步任务的子任务 - `task_name`: - - 可选 - - 指定任务名称 + - 可选 + - 指定任务名称 - 如果未设置,则返回全部数据同步任务的查询结果 #### 返回结果示例 @@ -357,7 +357,7 @@ resume-task [-w "127.0.0.1:10181"] task-name - `-w`: - 可选 - - 指定在特定的一组 DM-workers 上恢复数据同步任务的子任务 + - 指定在特定的一组 DM-workers 上恢复数据同步任务的子任务 - 如果设置,则只恢复该任务在指定 DM-workers 上的子任务 - `task_name`: - 必选 diff --git a/dev/reference/tools/data-migration/monitor.md b/dev/reference/tools/data-migration/monitor.md index e1666b4599c5..a831e6d927c0 100644 --- a/dev/reference/tools/data-migration/monitor.md +++ b/dev/reference/tools/data-migration/monitor.md @@ -14,7 +14,7 @@ category: reference ## Task -在 Grafana dashboard 中,DM 默认名称为 `DM-task`。 +在 Grafana dashboard 中,DM 默认名称为 `DM-task`。 ### overview @@ -30,7 +30,6 @@ overview 下包含运行当前选定 task 的所有 DM-worker instance 的部分 | binlog file gap between master and syncer | 与上游 master 相比 binlog replication 落后的 binlog file 个数 | N/A | | shard lock resolving | 当前子任务是否正在等待 shard DDL 同步,大于 0 表示正在等待同步 | N/A | - ### task 状态 | metric 名称 | 说明 | 告警说明 | @@ -96,7 +95,6 @@ overview 下包含运行当前选定 task 的所有 DM-worker instance 的部分 | unsynced tables | 当前子任务内还未收到 shard DDL 的分表数量 | N/A | | shard lock resolving | 当前子任务是否正在等待 shard DDL 同步,大于 0 表示正在等待同步 | N/A | - ## Instance 在 Grafana dashboard 中,instance 的默认名称为 `DM-instance`。 diff --git a/dev/reference/tools/data-migration/overview.md b/dev/reference/tools/data-migration/overview.md index 36af0c993dc5..3b7e2b115b6e 100644 --- a/dev/reference/tools/data-migration/overview.md +++ b/dev/reference/tools/data-migration/overview.md @@ -75,11 +75,11 @@ DM 支持对原分库分表进行合库合表操作,但需要满足一些[使 - 5.5 < MySQL 版本 < 5.8 - MariaDB 版本 >= 10.1.2 - + > **注意:** > > 如果上游 MySQL/MariaDB server 间构成主从复制结构,则 - > + > > - 5.7.1 < MySQL 版本 < 5.8 > - MariaDB 版本 >= 10.1.3 diff --git a/dev/reference/tools/data-migration/skip-replace-sqls.md b/dev/reference/tools/data-migration/skip-replace-sqls.md index fa41724942ac..8f131c24b444 100644 --- a/dev/reference/tools/data-migration/skip-replace-sqls.md +++ b/dev/reference/tools/data-migration/skip-replace-sqls.md @@ -15,6 +15,7 @@ category: reference 如果提前预知将要同步 TiDB 不支持的 SQL 语句,也可以使用 dmctl 来手动预设跳过/替代执行操作。当 DM 尝试将该 SQL 语句对应的 binlog event 同步到下游时,该预设的操作将自动执行,从而避免同步过程被中断。 + #### 使用限制 - 跳过/替代执行操作只适合用于一次性跳过/替代执行**下游 TiDB 不支持执行的 SQL 语句**,其它同步错误请不要使用此方式进行处理。 @@ -49,7 +50,7 @@ category: reference 2. DDL pattern:(仅限于 DDL 语句的)正则表达式匹配模式 - - DDL pattern 在命令中使用 `--sql-pattern` 参数传入,如要匹配 ``` ALTER TABLE `db2`.`tbl2` DROP COLUMN `c2` ```,则对应的正则表达式为 ``` ~(?i)ALTER\s+TABLE\s+`db2`.`tbl2`\s+DROP\s+COLUMN\s+`c2` ```。 + - DDL pattern 在命令中使用 `--sql-pattern` 参数传入,如要匹配 ```ALTER TABLE `db2`.`tbl2` DROP COLUMN `c2` ```,则对应的正则表达式为 ```~(?i)ALTER\s+TABLE\s+`db2`.`tbl2`\s+DROP\s+COLUMN\s+`c2` ```。 - 正则表达式必须以 `~` 为前缀,且不包含任何原始空格(正则表达式字符串中的空格均以 `\s` 或 `\s+` 表示)。 对于合库合表场景,如果需要由 DM 自动选择 DDL lock owner 来执行跳过/替代执行操作,则由于不同 DM-worker 上 DDL 语句对应的 binlog position 无逻辑关联且难以确定,因此只能使用 DDL pattern 匹配模式。 @@ -217,7 +218,7 @@ sql-skip <--worker=127.0.0.1:8262> [--binlog-pos=mysql-bin|000001.000003:3270] [ + `sql-pattern`: - flag 参数,string,`--sql-pattern`; - `--sql-pattern` 与 `binlog-pos` 必须指定其中一个,且只能指定其中一个。 - - 在指定时表示操作将在 `sql-pattern` 与 binlog event 对应的(经过可选的 router-rule 转换后的)DDL 语句匹配时生效。格式为以 `~` 为前缀的正则表达式,如 ``` ~(?i)ALTER\s+TABLE\s+`db1`.`tbl1`\s+ADD\s+COLUMN\s+col1\s+INT ```。 + - 在指定时表示操作将在 `sql-pattern` 与 binlog event 对应的(经过可选的 router-rule 转换后的)DDL 语句匹配时生效。格式为以 `~` 为前缀的正则表达式,如 ```~(?i)ALTER\s+TABLE\s+`db1`.`tbl1`\s+ADD\s+COLUMN\s+col1\s+INT```。 - 暂时不支持正则表达式中包含原始空格,需要使用 `\s` 或 `\s+` 替代空格。 - 正则表达式必须以 `~` 为前缀,详见[正则表达式语法](https://golang.org/pkg/regexp/syntax/#hdr-Syntax)。 - 正则表达式中的库名和表名必须是经过可选的 router-rule 转换后的名字,即对应下游的目标库名和表名。如上游为 ``` `shard_db_1`.`shard_tbl_1` ```,下游为 ``` `shard_db`.`shard_tbl` ```,则应该尝试匹配 ``` `shard_db`.`shard_tbl` ```。 @@ -261,7 +262,7 @@ sql-replace <--worker=127.0.0.1:8262> [--binlog-pos=mysql-bin|000001.000003:3270 + `SQLs`: - 非 flag 参数,string,必选; - - `SQLs` 指定将用于替代原 binlog event 的新的 SQL 语句。多条 SQL 语句间以 `;` 分隔,如 ``` ALTER TABLE shard_db.shard_table drop index idx_c2;ALTER TABLE shard_db.shard_table DROP COLUMN c2; ```。 + - `SQLs` 指定将用于替代原 binlog event 的新的 SQL 语句。多条 SQL 语句间以 `;` 分隔,如 ```ALTER TABLE shard_db.shard_table drop index idx_c2;ALTER TABLE shard_db.shard_table DROP COLUMN c2;```。 ### 使用示例 @@ -293,7 +294,7 @@ ALTER TABLE db1.tbl1 CHANGE c2 c2 DECIMAL (10, 3); 则会由于 TiDB 不支持该 DDL 语句而导致 DM 同步任务中断且报如下错误: ```bash -exec sqls[[USE `db1`; ALTER TABLE `db1`.`tbl1` CHANGE COLUMN `c2` `c2` decimal(10,3);]] failed, +exec sqls[[USE `db1`; ALTER TABLE `db1`.`tbl1` CHANGE COLUMN `c2` `c2` decimal(10,3);]] failed, err:Error 1105: unsupported modify column length 10 is less than origin 11 ``` @@ -329,7 +330,7 @@ err:Error 1105: unsupported modify column length 10 is less than origin 11 对应 DM-worker 节点中也可以看到类似如下日志: ```bash - 2018/12/28 11:17:51 operator.go:121: [info] [sql-operator] set a new operator + 2018/12/28 11:17:51 operator.go:121: [info] [sql-operator] set a new operator uuid: 6bfcf30f-2841-4d70-9a34-28d7082bdbd7, pos: (mysql-bin|000001.000003, 34642), op: SKIP, args: on replication unit ``` @@ -356,7 +357,7 @@ err:Error 1105: unsupported modify column length 10 is less than origin 11 对应 DM-worker 节点中也可以看到类似如下日志: ```bash - 2018/12/28 11:27:46 operator.go:158: [info] [sql-operator] binlog-pos (mysql-bin|000001.000003, 34642) matched, + 2018/12/28 11:27:46 operator.go:158: [info] [sql-operator] binlog-pos (mysql-bin|000001.000003, 34642) matched, applying operator uuid: 6bfcf30f-2841-4d70-9a34-28d7082bdbd7, pos: (mysql-bin|000001.000003, 34642), op: SKIP, args: ``` @@ -393,7 +394,7 @@ ALTER TABLE db2.tbl2 DROP COLUMN c2; 当同步该 DDL 语句对应的 binlog event 到下游时,会由于 TiDB 不支持该 DDL 语句而导致 DM 同步任务中断且报如下错误: ```bash -exec sqls[[USE `db2`; ALTER TABLE `db2`.`tbl2` DROP COLUMN `c2`;]] failed, +exec sqls[[USE `db2`; ALTER TABLE `db2`.`tbl2` DROP COLUMN `c2`;]] failed, err:Error 1105: can't drop column c2 with index covered now ``` @@ -437,8 +438,8 @@ err:Error 1105: can't drop column c2 with index covered now 对应 DM-worker 节点中也可以看到类似如下日志: ```bash - 2018/12/28 15:33:13 operator.go:121: [info] [sql-operator] set a new operator - uuid: c699a18a-8e75-47eb-8e7e-0e5abde2053c, pattern: ~(?i)ALTER\s+TABLE\s+`db2`.`tbl2`\s+DROP\s+COLUMN\s+`c2`, + 2018/12/28 15:33:13 operator.go:121: [info] [sql-operator] set a new operator + uuid: c699a18a-8e75-47eb-8e7e-0e5abde2053c, pattern: ~(?i)ALTER\s+TABLE\s+`db2`.`tbl2`\s+DROP\s+COLUMN\s+`c2`, op: REPLACE, args: ALTER TABLE `db2`.`tbl2` DROP INDEX idx_c2; ALTER TABLE `db2`.`tbl2` DROP COLUMN `c2` on replication unit ``` @@ -448,11 +449,11 @@ err:Error 1105: can't drop column c2 with index covered now 5. 观察下游表结构是否变更成功,对应 DM-worker 节点中也可以看到类似如下日志: ```bash - 2018/12/28 15:33:45 operator.go:158: [info] [sql-operator] - sql-pattern ~(?i)ALTER\s+TABLE\s+`db2`.`tbl2`\s+DROP\s+COLUMN\s+`c2` matched SQL - USE `db2`; ALTER TABLE `db2`.`tbl2` DROP COLUMN `c2`;, - applying operator uuid: c699a18a-8e75-47eb-8e7e-0e5abde2053c, - pattern: ~(?i)ALTER\s+TABLE\s+`db2`.`tbl2`\s+DROP\s+COLUMN\s+`c2`, + 2018/12/28 15:33:45 operator.go:158: [info] [sql-operator] + sql-pattern ~(?i)ALTER\s+TABLE\s+`db2`.`tbl2`\s+DROP\s+COLUMN\s+`c2` matched SQL + USE `db2`; ALTER TABLE `db2`.`tbl2` DROP COLUMN `c2`;, + applying operator uuid: c699a18a-8e75-47eb-8e7e-0e5abde2053c, + pattern: ~(?i)ALTER\s+TABLE\s+`db2`.`tbl2`\s+DROP\s+COLUMN\s+`c2`, op: REPLACE, args: ALTER TABLE `db2`.`tbl2` DROP INDEX idx_c2; ALTER TABLE `db2`.`tbl2` DROP COLUMN `c2` ``` @@ -551,13 +552,13 @@ err:Error 1105: can't drop column c2 with index covered now ``` **DM-master** 节点中也可以看到类似如下日志: - + ```bash - 2018/12/28 16:53:33 operator.go:105: [info] [sql-operator] set a new operator - uuid: eba35acd-6c5e-4bc3-b0b0-ae8bd1232351, request: name:"test" - op:REPLACE args:"ALTER TABLE `shard_db`.`shard_table` DROP INDEX idx_c2;" - args:"ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`" - sqlPattern:"~(?i)ALTER\\s+TABLE\\s+`shard_db`.`shard_table`\\s+DROP\\s+COLUMN\\s+`c2`" + 2018/12/28 16:53:33 operator.go:105: [info] [sql-operator] set a new operator + uuid: eba35acd-6c5e-4bc3-b0b0-ae8bd1232351, request: name:"test" + op:REPLACE args:"ALTER TABLE `shard_db`.`shard_table` DROP INDEX idx_c2;" + args:"ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`" + sqlPattern:"~(?i)ALTER\\s+TABLE\\s+`shard_db`.`shard_table`\\s+DROP\\s+COLUMN\\s+`c2`" sharding:true ``` @@ -566,41 +567,41 @@ err:Error 1105: can't drop column c2 with index covered now 6. 观察下游表结构是否变更成功,对应的 DDL lock **owner** 节点中也可以看到类似如下日志: ```bash - 2018/12/28 16:54:35 operator.go:121: [info] [sql-operator] set a new operator - uuid: c959f2fb-f1c2-40c7-a1fa-e73cd51736dd, - pattern: ~(?i)ALTER\s+TABLE\s+`shard_db`.`shard_table`\s+DROP\s+COLUMN\s+`c2`, + 2018/12/28 16:54:35 operator.go:121: [info] [sql-operator] set a new operator + uuid: c959f2fb-f1c2-40c7-a1fa-e73cd51736dd, + pattern: ~(?i)ALTER\s+TABLE\s+`shard_db`.`shard_table`\s+DROP\s+COLUMN\s+`c2`, op: REPLACE, args: ALTER TABLE `shard_db`.`shard_table` DROP INDEX idx_c2; ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2` on replication unit ``` ```bash - 2018/12/28 16:54:35 operator.go:158: [info] [sql-operator] - sql-pattern ~(?i)ALTER\s+TABLE\s+`shard_db`.`shard_table`\s+DROP\s+COLUMN\s+`c2` matched SQL - USE `shard_db`; ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`;, - applying operator uuid: c959f2fb-f1c2-40c7-a1fa-e73cd51736dd, - pattern: ~(?i)ALTER\s+TABLE\s+`shard_db`.`shard_table`\s+DROP\s+COLUMN\s+`c2`, + 2018/12/28 16:54:35 operator.go:158: [info] [sql-operator] + sql-pattern ~(?i)ALTER\s+TABLE\s+`shard_db`.`shard_table`\s+DROP\s+COLUMN\s+`c2` matched SQL + USE `shard_db`; ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`;, + applying operator uuid: c959f2fb-f1c2-40c7-a1fa-e73cd51736dd, + pattern: ~(?i)ALTER\s+TABLE\s+`shard_db`.`shard_table`\s+DROP\s+COLUMN\s+`c2`, op: REPLACE, args: ALTER TABLE `shard_db`.`shard_table` DROP INDEX idx_c2; ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2` ``` 另外,**DM-master** 节点中也可以看到类似如下日志: ```bash - 2018/12/28 16:54:35 operator.go:122: [info] [sql-operator] get an operator - uuid: eba35acd-6c5e-4bc3-b0b0-ae8bd1232351, request: name:"test" op:REPLACE - args:"ALTER TABLE `shard_db`.`shard_table` DROP INDEX idx_c2;" - args:"ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`" - sqlPattern:"~(?i)ALTER\\s+TABLE\\s+`shard_db`.`shard_table`\\s+DROP\\s+COLUMN\\s+`c2`" + 2018/12/28 16:54:35 operator.go:122: [info] [sql-operator] get an operator + uuid: eba35acd-6c5e-4bc3-b0b0-ae8bd1232351, request: name:"test" op:REPLACE + args:"ALTER TABLE `shard_db`.`shard_table` DROP INDEX idx_c2;" + args:"ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`" + sqlPattern:"~(?i)ALTER\\s+TABLE\\s+`shard_db`.`shard_table`\\s+DROP\\s+COLUMN\\s+`c2`" sharding:true - with key ~(?i)ALTER\s+TABLE\s+`shard_db`.`shard_table`\s+DROP\s+COLUMN\s+`c2` matched SQL + with key ~(?i)ALTER\s+TABLE\s+`shard_db`.`shard_table`\s+DROP\s+COLUMN\s+`c2` matched SQL USE `shard_db`; ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`; ``` ```bash - 2018/12/28 16:54:36 operator.go:145: [info] [sql-operator] remove an operator - uuid: eba35acd-6c5e-4bc3-b0b0-ae8bd1232351, request: name:"test" op:REPLACE - args:"ALTER TABLE `shard_db`.`shard_table` DROP INDEX idx_c2;" - args:"ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`" - sqlPattern:"~(?i)ALTER\\s+TABLE\\s+`shard_db`.`shard_table`\\s+DROP\\s+COLUMN\\s+`c2`" + 2018/12/28 16:54:36 operator.go:145: [info] [sql-operator] remove an operator + uuid: eba35acd-6c5e-4bc3-b0b0-ae8bd1232351, request: name:"test" op:REPLACE + args:"ALTER TABLE `shard_db`.`shard_table` DROP INDEX idx_c2;" + args:"ALTER TABLE `shard_db`.`shard_table` DROP COLUMN `c2`" + sqlPattern:"~(?i)ALTER\\s+TABLE\\s+`shard_db`.`shard_table`\\s+DROP\\s+COLUMN\\s+`c2`" sharding:true ``` diff --git a/dev/reference/tools/data-migration/table-selector.md b/dev/reference/tools/data-migration/table-selector.md index 104103374f8f..45c5d6031b0d 100644 --- a/dev/reference/tools/data-migration/table-selector.md +++ b/dev/reference/tools/data-migration/table-selector.md @@ -14,12 +14,12 @@ table selector 在 `schema-pattern`/`table-pattern` 中可以使用以下两个 + 星号(`*`) - - 匹配零个或者多个字符。例如, `doc*` 匹配 `doc` 和 `document`,但是不匹配 `dodo`。 - - `*` 只能放在 pattern 的最后一位,例如,支持 `doc*`,但是不支持 `do*c`。 + - 匹配零个或者多个字符。例如, `doc*` 匹配 `doc` 和 `document`,但是不匹配 `dodo`。 + - `*` 只能放在 pattern 的最后一位,例如,支持 `doc*`,但是不支持 `do*c`。 + 问号(`?`) - - 匹配任意一个空字符除外的字符。 + - 匹配任意一个空字符除外的字符。 ## 匹配规则 diff --git a/dev/reference/tools/loader.md b/dev/reference/tools/loader.md index e514c12f68e1..a172940cefda 100644 --- a/dev/reference/tools/loader.md +++ b/dev/reference/tools/loader.md @@ -27,7 +27,7 @@ Loader 包含在 tidb-enterprise-tools 安装包中,可[在此下载](/referen ## 使用方法 -#### 注意事项 +### 注意事项 请勿使用 loader 导入 MySQL 实例中 `mysql` 系统数据库到下游 TiDB。 @@ -47,7 +47,7 @@ Loader 包含在 tidb-enterprise-tools 安装包中,可[在此下载](/referen -V 打印 loader 版本 -c string - 指定配置文件启动 loader + 指定配置文件启动 loader -checkpoint-schema string checkpoint 数据库名,loader 在运行过程中会不断的更新这个数据库,在中断并恢复后,会通过这个库获取上次运行的进度 (默认为 "tidb_loader") -d string @@ -112,15 +112,19 @@ port = 4000 通过命令行参数: - ./bin/loader -d ./test -h 127.0.0.1 -u root -P 4000 +``` +./bin/loader -d ./test -h 127.0.0.1 -u root -P 4000 +``` 或者使用配置文件 "config.toml": - ./bin/loader -c=config.toml +``` +./bin/loader -c=config.toml +``` -## FAQ +## FAQ -#### 合库合表场景案例说明 +### 合库合表场景案例说明 根据配置文件的 route-rules 可以支持将分库分表的数据导入到同一个库同一个表中,但是在开始前需要检查分库分表规则: @@ -129,7 +133,7 @@ port = 4000 Loader 需要配置文件中开启 route-rules 参数以提供合库合表功能 -+ 如果使用该功能,必须填写 `pattern-schema` 与 `target-schema` ++ 如果使用该功能,必须填写 `pattern-schema` 与 `target-schema` + 如果 `pattern-table` 与 `target-table` 为空,将不进行表名称合并或转换 ```toml diff --git a/dev/reference/tools/pd-control.md b/dev/reference/tools/pd-control.md index 12afbb24079f..c95fd747e09d 100644 --- a/dev/reference/tools/pd-control.md +++ b/dev/reference/tools/pd-control.md @@ -16,11 +16,15 @@ PD Control 是 PD 的命令行工具,用于获取集群状态信息和调整 单命令模式: - ./pd-ctl store -d -u http://127.0.0.1:2379 +``` +./pd-ctl store -d -u http://127.0.0.1:2379 +``` 交互模式: - ./pd-ctl -u http://127.0.0.1:2379 +``` +./pd-ctl -u http://127.0.0.1:2379 +``` 使用环境变量: @@ -40,7 +44,7 @@ export PD_ADDR=http://127.0.0.1:2379 ### \-\-pd,-u + 指定 PD 的地址 -+ 默认地址: http://127.0.0.1:2379 ++ 默认地址: `http://127.0.0.1:2379` + 环境变量: PD_ADDR ### \-\-detach,-d @@ -342,7 +346,7 @@ config set cluster-version 1.0.8 // 设置 cluster version 为 1.0. 示例: ```bash ->> label // 显示所有 label +>> label // 显示所有 label >> label store zone cn // 显示所有包含 label 为 "zone":"cn" 的 store ``` @@ -731,4 +735,4 @@ logic: 120102 {"id":4,"remove_peer":[31]} {"id":22,"remove_peer":[30]} ... -``` \ No newline at end of file +``` diff --git a/dev/reference/tools/pd-recover.md b/dev/reference/tools/pd-recover.md index cdf5a94831e8..d2ada72334a2 100644 --- a/dev/reference/tools/pd-recover.md +++ b/dev/reference/tools/pd-recover.md @@ -36,4 +36,4 @@ PD Recover 是对 PD 进行灾难性恢复的工具,用于恢复无法正常 1. 从当前集群中找到集群的 Cluster ID 和 Alloc ID。一般在 PD,TiKV 或 TiDB 的日志中都可以获取 Cluster ID。已经分配过的 Alloc ID 可以从 PD 日志获得。另外也可以从 PD 的监控面板的 Metadata Information 监控项中获得。在指定 alloc-id 时需指定一个比当前最大的 Alloc ID 更大的值。如果没有途径获取 Alloc ID,可以根据集群中的 Region,Store 数预估一个较大的数,一般可取高几个数量级的数。 2. 停止整个集群,清空 PD 数据目录,重启 PD 集群。 3. 使用 PD recover 进行恢复,注意指定正确的 cluster-id 和合适的 alloc-id。 -4. 提示恢复成功后,重启整个集群。 \ No newline at end of file +4. 提示恢复成功后,重启整个集群。 diff --git a/dev/reference/tools/sync-diff-inspector.md b/dev/reference/tools/sync-diff-inspector.md index 02625b3a60ef..ec622ec13593 100644 --- a/dev/reference/tools/sync-diff-inspector.md +++ b/dev/reference/tools/sync-diff-inspector.md @@ -166,7 +166,7 @@ password = "" # 库的名称 schema = "test" -# table list which need check in target database. +# table list which need check in target database. # in sharding mode, you must set config for every table in table-config, otherwise will not check the table. # 需要检查的表的名称 tables = ["test"] diff --git a/dev/reference/tools/syncer.md b/dev/reference/tools/syncer.md index 7affc35bb504..8b5f8a909ae5 100644 --- a/dev/reference/tools/syncer.md +++ b/dev/reference/tools/syncer.md @@ -352,7 +352,7 @@ target-table = "order_2017" - 5.5 < MySQL 版本 < 5.8 - MariaDB 版本 >= 10.1.2(更早版本的 binlog 部分字段类型格式与 MySQL 不一致) - + > **注意:** > > 如果上游 MySQL/MariaDB server 间构成主从复制结构,则 @@ -459,11 +459,11 @@ target-table = "order_2017" +---------------+-----------------------------------------------------------------------------------+ 1 row in set (0.01 sec) ``` + 6. 检查字符集。 TiDB 和 MySQL 的字符集的兼容性不同,详见 [TiDB 支持的字符集](/reference/sql/character-set.md)。 - ## 监控方案 Syncer 使用开源时序数据库 Prometheus 作为监控和性能指标信息存储方案,使用 Grafana 作为可视化组件进行展示,配合 AlertManager 来实现报警。其方案如下图所示: @@ -498,7 +498,7 @@ Syncer 对外提供 metric 接口,需要 Prometheus 主动获取数据。配 #### Grafana 配置 -+ 进入 Grafana Web 界面(默认地址: http://localhost:3000 ,默认账号: admin 密码: admin) ++ 进入 Grafana Web 界面(默认地址: `http://localhost:3000` ,默认账号: admin 密码: admin) + 导入 dashboard 配置文件 @@ -546,7 +546,6 @@ Syncer 对外提供 metric 接口,需要 Prometheus 主动获取数据。配 - metrics: `syncer_binlog_file{node="syncer"}` and `syncer_binlog_file{node="master"}` - info: 需要配置 `position of binlog position` 一起看。`syncer_binlog_file{node="master"}` 表示上游 MySQL 当前 binlog position 的文件编号,`syncer_binlog_file{node="syncer"}` 表示上游 Syncer 已经同步到的 binlog 位置的文件编号 - #### title: execution jobs - metrics: `sum(rate(syncer_add_jobs_total[1m])) by (queueNo)` diff --git a/dev/reference/tools/tidb-binlog/reparo.md b/dev/reference/tools/tidb-binlog/reparo.md index 91997884dae7..49ca362b9ad9 100644 --- a/dev/reference/tools/tidb-binlog/reparo.md +++ b/dev/reference/tools/tidb-binlog/reparo.md @@ -90,4 +90,4 @@ password = "" > - stop-datetime 和 stop-tso 效果一样,只是时间格式上的区别,用于指定结束恢复的时间点;如果不指定,则恢复到最后一个 binlog 文件的结尾。 > - dest-type 指定目标类型,取值为 `mysql`、`print`。 当值为 `mysql` 时,可以恢复到 MySQL/TiDB 等使用或兼容 MySQL 协议的数据库,需要在配置下面的 [dest-db] 填写数据库信息;当取值为 `print` 的时候,只是打印 binlog 信息,通常用于 debug,以及查看 binlog 的内容,此时不需要填写 `[dest-db]`。 > - replicate-do-db 用于指定恢复的库,不指定的话,则全部都恢复。 -> - replicate-do-table 用于指定要恢复的表,不指定的话,则全部都恢复。 \ No newline at end of file +> - replicate-do-table 用于指定要恢复的表,不指定的话,则全部都恢复。 diff --git a/dev/reference/tools/tidb-binlog/tidb-binlog-kafka.md b/dev/reference/tools/tidb-binlog/tidb-binlog-kafka.md index 46fa6b3e268f..21f87da62b6e 100644 --- a/dev/reference/tools/tidb-binlog/tidb-binlog-kafka.md +++ b/dev/reference/tools/tidb-binlog/tidb-binlog-kafka.md @@ -83,10 +83,10 @@ cd tidb-binlog-kafka-linux-amd64 为了保证数据的完整性,在 Pump 运行 10 分钟左右后按顺序进行如下操作: - * 使用 [tidb-tools](https://github.com/pingcap/tidb-tools) 项目中的 [binlogctl](https://github.com/pingcap/tidb-tools/tree/master/tidb-binlog/binlogctl) 工具生成 Drainer 初次启动所需的 position - * 全量备份,例如 mydumper 备份 TiDB - * 全量导入备份到目标系统 - * Kafka 版本 Drainer 启动的 savepoint 默认保存在下游 database tidb_binlog 下的 checkpoint 表中,如果 checkpoint 表中没有有效的数据,可以通过设置 `initial-commit-ts` 启动 Drainer 从指定位置开始消费 - `bin/drainer --config=conf/drainer.toml --initial-commit-ts=${position}` + * 使用 [tidb-tools](https://github.com/pingcap/tidb-tools) 项目中的 [binlogctl](https://github.com/pingcap/tidb-tools/tree/master/tidb-binlog/binlogctl) 工具生成 Drainer 初次启动所需的 position + * 全量备份,例如 mydumper 备份 TiDB + * 全量导入备份到目标系统 + * Kafka 版本 Drainer 启动的 savepoint 默认保存在下游 database tidb_binlog 下的 checkpoint 表中,如果 checkpoint 表中没有有效的数据,可以通过设置 `initial-commit-ts` 启动 Drainer 从指定位置开始消费 - `bin/drainer --config=conf/drainer.toml --initial-commit-ts=${position}` * Drainer 输出为 pb,要在配置文件中设置如下参数: @@ -128,7 +128,7 @@ cd tidb-binlog-kafka-linux-amd64 - `broker.id`:用来标识 Kafka 集群的必备参数,不能重复,如 `broker.id = 1` - `fs.file-max = 1000000`:Kafka 会使用大量文件和网络 socket,建议修改成 1000000,通过 `vi /etc/sysctl.conf` 进行修改 - 修改以下配置为1G, 否则很容易出现事务修改数据较多导致单个消息过大写 kafka 失败 - + * `message.max.bytes=1073741824` * `replica.fetch.max.bytes=1073741824` * `fetch.message.max.bytes=1073741824` diff --git a/dev/reference/tools/tidb-binlog/tidb-binlog-local.md b/dev/reference/tools/tidb-binlog/tidb-binlog-local.md index d3d0b71beb79..b51c4cb77590 100644 --- a/dev/reference/tools/tidb-binlog/tidb-binlog-local.md +++ b/dev/reference/tools/tidb-binlog/tidb-binlog-local.md @@ -36,26 +36,25 @@ TiDB Binlog 包含在 tidb-enterprise-tools 安装包中,可[在此下载](/re #### 注意 -* 需要为一个 TiDB 集群中的每台 TiDB server 部署一个 Pump,目前 TiDB server 只支持以 unix socket 方式的输出 binlog。 -* 手动部署时, 启动顺序为: Pump > TiDB,停止顺序为 TiDB > Pump - +* 需要为一个 TiDB 集群中的每台 TiDB server 部署一个 Pump,目前 TiDB server 只支持以 unix socket 方式的输出 binlog。 +* 手动部署时, 启动顺序为: Pump > TiDB,停止顺序为 TiDB > Pump 我们设置 TiDB 启动参数 binlog-socket 为对应的 Pump 的参数 socket 所指定的 unix socket 文件路径,最终部署结构如下图所示: ![TiDB pump 模块部署结构](/media/tidb-pump-deployment.png) -* drainer 不支持对 ignore schemas(在过滤列表中的 schemas) 的 table 进行 rename DDL 操作 +* drainer 不支持对 ignore schemas(在过滤列表中的 schemas) 的 table 进行 rename DDL 操作 -* 在已有的 TiDB 集群中启动 drainer,一般需要全量备份 并且获取 savepoint,然后导入全量备份,最后启动 drainer 从 savepoint 开始同步。 +* 在已有的 TiDB 集群中启动 drainer,一般需要全量备份 并且获取 savepoint,然后导入全量备份,最后启动 drainer 从 savepoint 开始同步。 为了保证数据的完整性,在 pump 运行 10 分钟左右后按顺序进行下面的操作 - * 以 gen-savepoint model 运行 drainer 生成 drainer savepint 文件,`bin/drainer -gen-savepoint --data-dir= ${drainer_savepoint_dir} --pd-urls=${pd_urls}` - * 全量备份,例如 mydumper 备份 tidb - * 全量导入备份到目标系统 - * 设置 savepoint 文件路径,然后启动 drainer,`bin/drainer --config=conf/drainer.toml --data-dir=${drainer_savepoint_dir}` + * 以 gen-savepoint model 运行 drainer 生成 drainer savepint 文件,`bin/drainer -gen-savepoint --data-dir= ${drainer_savepoint_dir} --pd-urls=${pd_urls}` + * 全量备份,例如 mydumper 备份 tidb + * 全量导入备份到目标系统 + * 设置 savepoint 文件路径,然后启动 drainer,`bin/drainer --config=conf/drainer.toml --data-dir=${drainer_savepoint_dir}` -* drainer 输出的 pb, 需要在配置文件设置下面的参数 +* drainer 输出的 pb, 需要在配置文件设置下面的参数 ```toml [syncer] @@ -68,14 +67,14 @@ TiDB Binlog 包含在 tidb-enterprise-tools 安装包中,可[在此下载](/re #### 使用 TiDB Ansible 部署 Pump (推荐) -* 搭建全新的 TiDB Cluster,启动顺序 pd-server -> tikv-server -> pump -> tidb-server -> drainer +* 搭建全新的 TiDB Cluster,启动顺序 pd-server -> tikv-server -> pump -> tidb-server -> drainer * 修改 tidb-ansible inventory.ini 文件 * enable_binlog = True * 执行 ansible-playbook deploy.yml * 执行 ansible-playbook start.yml * drainer 目前需要手动部署 -* 对已有的 TiDB Cluster 部署 binlog +* 对已有的 TiDB Cluster 部署 binlog * 修改 tidb-ansible inventory.ini 文件 * enable_binlog = True * 执行 ansible-playbook rolling_update.yml --tags=tidb @@ -146,7 +145,7 @@ TiDB Binlog 包含在 tidb-enterprise-tools 安装包中,可[在此下载](/re #### 使用 Binary 部署 Drainer -1. Drainer 命令行参数说明 +1. Drainer 命令行参数说明 ``` Usage of drainer: @@ -274,10 +273,10 @@ drainer 启动时可以设置 `--metrics-addr` 和 `--metrics-interval` 两个 ### Grafana 配置 -+ 进入 Grafana Web 界面(默认地址: `http://localhost:3000`,默认账号: admin 密码: admin) ++ 进入 Grafana Web 界面(默认地址: `http://localhost:3000`,默认账号: admin 密码: admin) 点击 Grafana Logo -> 点击 Data Sources -> 点击 Add data source -> 填写 data source 信息 ( 注: Type 选 Prometheus,Url 为 Prometheus 地址,根据实际情况 添加/填写 ) -+ 导入 dashboard 配置文件 ++ 导入 dashboard 配置文件 点击 Grafana Logo -> 点击 Dashboards -> 点击 Import -> 选择需要的 [dashboard 配置文件](https://github.com/pingcap/tidb-ansible/blob/master/scripts/syncer.json)上传 -> 选择对应的 data source diff --git a/dev/reference/tools/tidb-control.md b/dev/reference/tools/tidb-control.md index ed7fcaa98870..a1db56462b0d 100644 --- a/dev/reference/tools/tidb-control.md +++ b/dev/reference/tools/tidb-control.md @@ -110,11 +110,13 @@ TiDB Controller 是 TiDB 的命令行工具,用于获取 TiDB 状态信息, #### base64decode 子命令 `base64decode` 用来解码 base64 数据。 + ```shell tidb-ctl base64decode [base64_data] tidb-ctl base64decode [db_name.table_name] [base64_data] tidb-ctl base64decode [table_id] [base64_data] ``` + * 准备环境,执行以下SQL ```sql @@ -147,11 +149,11 @@ tidb-ctl base64decode [table_id] [base64_data] { "start_ts": 407306588892692486, "commit_ts": 407306588892692489, - "short_value": "CAIIAggEAhjlk4jlk4ggaGVsbG8IBgAICAmAgIDwjYuu0Rk=" # handle id 为 1 的行数据。 + "short_value": "CAIIAggEAhjlk4jlk4ggaGVsbG8IBgAICAmAgIDwjYuu0Rk=" # handle id 为 1 的行数据。 } ] } - }% + }% ``` * 用 `base64decode` 解码 handle id (uint64). diff --git a/dev/reference/tools/tidb-lightning/csv.md b/dev/reference/tools/tidb-lightning/csv.md index 5508160217f2..edd694e83817 100644 --- a/dev/reference/tools/tidb-lightning/csv.md +++ b/dev/reference/tools/tidb-lightning/csv.md @@ -15,7 +15,7 @@ TiDB-Lightning 支持读取 CSV(逗号分隔值)的数据源,以及其他 文件扩展名必须为 `*.csv`,即使文件的内容并非逗号分隔。 -## 表结构 +## 表结构 CSV 文件是没有表结构的。要导入 TiDB,就必须为其提供表结构。可以通过以下任一方法实现: @@ -42,7 +42,7 @@ not-null = false # 如果 `not-null` 为 false(即 CSV 可以包含 NULL), # 为以下值的字段将会被解析为 NULL。 null = '\N' -# 是否解析字段内的反斜线转义符。 +# 是否解析字段内的反斜线转义符。 backslash-escape = true # 是否移除以分隔符结束的行。 trim-last-separator = false @@ -56,7 +56,7 @@ trim-last-separator = false - 必须为单个 ASCII 字符。 - 常用值: - * CSV 用 `','` + * CSV 用 `','` * TSV 用 `"\t"` - 对应 LOAD DATA 语句中的 `FIELDS TERMINATED BY` 项。 @@ -69,7 +69,7 @@ trim-last-separator = false * `'"'` 使用双引号引用字段,和 [RFC 4180] 一致。 * `''` 不引用 - + - 对应 LOAD DATA 语句中的 `FIELDS ENCLOSED BY` 项。 [RFC 4180]: https://tools.ietf.org/html/rfc4180 @@ -97,7 +97,7 @@ trim-last-separator = false ### `backslash-escape` - 是否解析字段内的反斜线转义符。 -- 如果 `backslash-escape` 为 true,下列转义符会被识别并转换。 +- 如果 `backslash-escape` 为 true,下列转义符会被识别并转换。 | 转义符 | 转换为 | |----------|--------------------------| @@ -134,7 +134,7 @@ Lightning 并不完全支持 `LOAD DATA` 语句中的所有配置项。例如: * 行终止符只能是 CR(`\r`),LF(`\n`)或 CRLF(`\r\n`),也就是说,无法自定义 `LINES TERMINATED BY`。 * 不可使用行前缀 (`LINES STARTING BY`)。 * 不可跳过表头(`IGNORE n LINES`)。如有表头,必须是有效的列名。 -* 定界符和分隔符只能为单个 ASCII 字符。 +* 定界符和分隔符只能为单个 ASCII 字符。 ## 通用配置 diff --git a/dev/reference/tools/tidb-lightning/deployment.md b/dev/reference/tools/tidb-lightning/deployment.md index b21e6ce6f569..e94c298bc572 100644 --- a/dev/reference/tools/tidb-lightning/deployment.md +++ b/dev/reference/tools/tidb-lightning/deployment.md @@ -36,7 +36,7 @@ category: reference - 32+ 逻辑核 CPU - 40 GB+ 内存 - 1 TB+ SSD 硬盘,IOPS 越高越好(要求 ≥8000) - * 硬盘必须大于最大的 N 个表的大小总和,其中 N = max(index-concurrency, table-concurrency)。 + * 硬盘必须大于最大的 N 个表的大小总和,其中 N = max(index-concurrency, table-concurrency)。 - 使用万兆网卡,带宽需 300 MB/s 以上 - 运行过程中 CPU、I/O 和网络带宽都可能打满,建议单独部署。 @@ -157,9 +157,9 @@ TiDB-Lightning 可随 TiDB 集群一起用 [Ansible 部署](/how-to/deploy/orche 通过以下链接获取 TiDB-Lightning 安装包(需选择与集群相同的版本): -- **v2.1.9**: https://download.pingcap.org/tidb-v2.1.9-linux-amd64.tar.gz -- **v2.0.9**: https://download.pingcap.org/tidb-lightning-v2.0.9-linux-amd64.tar.gz -- 最新 unstable 版本:https://download.pingcap.org/tidb-lightning-test-xx-latest-linux-amd64.tar.gz +- **v2.1.9**: [https://download.pingcap.org/tidb-v2.1.9-linux-amd64.tar.gz](https://download.pingcap.org/tidb-v2.1.9-linux-amd64.tar.gz) +- **v2.0.9**: [https://download.pingcap.org/tidb-lightning-v2.0.9-linux-amd64.tar.gz](https://download.pingcap.org/tidb-lightning-v2.0.9-linux-amd64.tar.gz) +- 最新 unstable 版本:[https://download.pingcap.org/tidb-lightning-test-xx-latest-linux-amd64.tar.gz](https://download.pingcap.org/tidb-lightning-test-xx-latest-linux-amd64.tar.gz) #### 第 3 步:启动 `tikv-importer` @@ -204,7 +204,7 @@ TiDB-Lightning 可随 TiDB 集群一起用 [Ansible 部署](/how-to/deploy/orche # 第 6 层的算法用于压缩 SST 文件。 # 第 1 至 5 层的算法目前忽略。 compression-per-level = ["lz4", "no", "no", "no", "no", "no", "lz4"] - + [rocksdb.writecf] # (同上) compression-per-level = ["lz4", "no", "no", "no", "no", "no", "lz4"] @@ -350,7 +350,7 @@ TiDB-Lightning 可随 TiDB 集群一起用 [Ansible 部署](/how-to/deploy/orche null = '\N' # 是否解析字段内反斜线转义符。 backslash-escape = true - # 如果有行以分隔符结尾,删除尾部分隔符。 + # 如果有行以分隔符结尾,删除尾部分隔符。 trim-last-separator = false [tidb] diff --git a/dev/reference/tools/tidb-lightning/monitor.md b/dev/reference/tools/tidb-lightning/monitor.md index ede9aaef8731..62ed75221d6b 100644 --- a/dev/reference/tools/tidb-lightning/monitor.md +++ b/dev/reference/tools/tidb-lightning/monitor.md @@ -91,15 +91,15 @@ scrape_configs: - **`tikv_import_sst_delivery_duration`** (直方图) 将 SST 文件从 `dispatch-job` 任务发送到 `ImportSSTJob`任务需时的直方图 - + - **`tikv_import_sst_recv_duration`** (直方图) `ImportSSTJob`任务接收从 `dispatch-job` 任务发送过来的 SST 文件需时的直方图。 - + - **`tikv_import_sst_upload_duration`** (直方图) 从 `ImportSSTJob` 任务上传 SST 文件到 TiKV 节点需时的直方图。 - + - **`tikv_import_sst_chunk_bytes`** (直方图) 上传到 TiKV 节点的 SST 文件(压缩)大小的直方图。 @@ -153,7 +153,7 @@ scrape_configs: - **state**:`pending` / `written` / `closed` / `imported` / `altered_auto_inc` / `checksum` / `analyzed` / `completed` - **result**:`success` / `failure` -**`lightning_engines`** (计数器) +- **`lightning_engines`** (计数器) 计算处理后引擎文件的数量以及其状态。标签: @@ -181,7 +181,7 @@ scrape_configs: - **`lightning_row_kv_deliver_seconds`**(直方图) 发送一组与单行 SQL 数据对应的 KV 对需时的直方图。 - + - **`lightning_block_deliver_seconds`**(直方图) 每个 KV 对中的区块传送到 `tikv-importer` 需时的直方图。 diff --git a/dev/reference/tools/tidb-lightning/overview.md b/dev/reference/tools/tidb-lightning/overview.md index 45fb8f8c5c80..54139263c0b7 100644 --- a/dev/reference/tools/tidb-lightning/overview.md +++ b/dev/reference/tools/tidb-lightning/overview.md @@ -31,8 +31,8 @@ TiDB-Lightning 整体工作原理如下: 5. 当一个引擎文件数据写入完毕时,`tikv-importer` 便开始对目标 TiKV 集群数据进行分裂和调度,然后导入数据到 TiKV 集群。 -引擎文件包含两种:*数据引擎*与*索引引擎*,各自又对应两种 KV 对:行数据和次级索引。通常行数据在数据源里是完全有序的,而次级索引是无序的。因此,数据引擎文件在对应区块写入完成后会被立即上传,而所有的索引引擎文件只有在整张表所有区块编码完成后才会执行导入。 + 引擎文件包含两种:*数据引擎*与*索引引擎*,各自又对应两种 KV 对:行数据和次级索引。通常行数据在数据源里是完全有序的,而次级索引是无序的。因此,数据引擎文件在对应区块写入完成后会被立即上传,而所有的索引引擎文件只有在整张表所有区块编码完成后才会执行导入。 6. 整张表相关联的所有引擎文件完成导入后,`tidb-lightning` 会对比本地数据源及下游集群的校验和 (checksum),确保导入的数据无损,以及让 TiDB 分析 (`ANALYZE`) 这些新增的数据,以优化日后的操作。 -7. 在所有步骤完毕后,`tidb-lightning` 自动将 TiKV 切换回“普通模式” (normal mode),此后 TiDB 集群可以正常对外提供服务。 \ No newline at end of file +7. 在所有步骤完毕后,`tidb-lightning` 自动将 TiKV 切换回“普通模式” (normal mode),此后 TiDB 集群可以正常对外提供服务。 diff --git a/dev/reference/tools/tikv-control.md b/dev/reference/tools/tikv-control.md index 3783bb090f2b..54a41c0b6efa 100644 --- a/dev/reference/tools/tikv-control.md +++ b/dev/reference/tools/tikv-control.md @@ -260,7 +260,6 @@ success! > - `-p` 选项指定 PD 的 endpoint,不使用 `http` 前缀,用于查询指定的 `region_id` 是否有效。 > - 对于指定 Region 的 peers 所在的每个 store,均须执行该命令。 - ### Ldb 命令 ldb 命令行工具提供多种数据访问以及数据库管理命令。下方列出了一些示例用法。详细信息请在运行 `tikv-ctl ldb` 命令时查看帮助消息或查阅 RocksDB 文档。 @@ -282,4 +281,3 @@ $ tikv-ctl ldb --hex manifest_dump --path=/tmp/db/MANIFEST-000001 您可以通过 `--column_family=` 指定查询的目标列族。 通过 `--try_load_options` 命令加载数据库选项文件以打开数据库。在数据库运行时,建议您保持该命令为开启的状态。如果您使用默认配置打开数据库,LSM-tree 存储组织可能会出现混乱,且无法自动恢复。 - diff --git a/dev/reference/tools/tkctl.md b/dev/reference/tools/tkctl.md index 87b9d9eb2a27..3071f8abc7bd 100644 --- a/dev/reference/tools/tkctl.md +++ b/dev/reference/tools/tkctl.md @@ -87,7 +87,7 @@ tkctl version ### tkctl version -该命令用于展示本地 **tkctl** 和集群中 **tidb-operator** 的版本: +该命令用于展示本地 **tkctl** 和集群中 **tidb-operator** 的版本: 示例如下: diff --git a/dev/reference/transactions/transaction-pessimistic.md b/dev/reference/transactions/transaction-pessimistic.md index 466708cbe1ee..3e189d878793 100644 --- a/dev/reference/transactions/transaction-pessimistic.md +++ b/dev/reference/transactions/transaction-pessimistic.md @@ -73,7 +73,7 @@ default = true 相关配置都在 `[pessimistic-txn]` 类别下,除了前面介绍过的 `enable` 和 `default`,还可配置以下参数: -- `ttl` +- `ttl` ``` ttl = "30s" diff --git a/dev/releases/11alpha.md b/dev/releases/11alpha.md index e4c73e4e8783..e7d5f179b235 100644 --- a/dev/releases/11alpha.md +++ b/dev/releases/11alpha.md @@ -7,7 +7,7 @@ category: Releases 2018 年 1 月 19 日,TiDB 发布 1.1 Alpha 版。该版本对 MySQL 兼容性、SQL 优化器、系统稳定性、性能做了大量的工作。 -## TiDB: +## TiDB - SQL parser - 兼容更多语法 @@ -28,7 +28,7 @@ category: Releases - Server - 支持 PROXY protocol -## PD: +## PD - 增加更多的 API - 支持 TLS @@ -36,7 +36,7 @@ category: Releases - 调度适应不同的 Region size - Fix 了一些调度的 bug -## TiKV: +## TiKV - 支持 Raft learner - 优化 Raft Snapshot,减少 I/O 开销 diff --git a/dev/releases/11beta.md b/dev/releases/11beta.md index be72f038e76f..2edf8400de27 100644 --- a/dev/releases/11beta.md +++ b/dev/releases/11beta.md @@ -46,4 +46,4 @@ category: Releases + 设置 Raft snapshot max size,防止遗留文件占用太多空间 + `tikv-ctl` 支持更多修复操作 + 优化有序流式聚合操作 -+ 完善 metrics,修复 bug \ No newline at end of file ++ 完善 metrics,修复 bug diff --git a/dev/releases/2.0.10.md b/dev/releases/2.0.10.md index 3cb3859504fa..2c5994e26218 100644 --- a/dev/releases/2.0.10.md +++ b/dev/releases/2.0.10.md @@ -36,4 +36,4 @@ category: Releases ## TiKV - 修复迁移 Leader 到新节点时造成请求延时问题 [#3929](https://github.com/tikv/tikv/pull/3929) -- 修复多余的 Region 心跳 [#3930](https://github.com/tikv/tikv/pull/3930) \ No newline at end of file +- 修复多余的 Region 心跳 [#3930](https://github.com/tikv/tikv/pull/3930) diff --git a/dev/releases/2.0.11.md b/dev/releases/2.0.11.md index 82682ff2ec53..0789a8442a83 100644 --- a/dev/releases/2.0.11.md +++ b/dev/releases/2.0.11.md @@ -10,12 +10,12 @@ category: Releases ## TiDB - 修复 PD 发生异常的情况下,Error 没有被正确处理的问题 [#8764](https://github.com/pingcap/tidb/pull/8764) -- 修复 Rename 相同表的行为,跟 MySQL 保持一致 [#8809](https://github.com/pingcap/tidb/pull/8809) +- 修复 Rename 相同表的行为,跟 MySQL 保持一致 [#8809](https://github.com/pingcap/tidb/pull/8809) - 修复 `ADMIN CHECK TABLE` 在 `ADD INDEX` 过程中误报的问题 [#8750](https://github.com/pingcap/tidb/pull/8750) - 修复前缀索引在某些情况下,开闭范围区间错误的问题 [#8877](https://github.com/pingcap/tidb/pull/8877) - 修复在某些添加列的情况下,`UPDATE` 语句 panic 的问题 [#8904](https://github.com/pingcap/tidb/pull/8904) ## TiKV -- 修复了两个 Region merge 相关的问题 -[#4003](https://github.com/tikv/tikv/pull/4003),[#4004](https://github.com/tikv/tikv/pull/4004) \ No newline at end of file +- 修复了两个 Region merge 相关的问题 +[#4003](https://github.com/tikv/tikv/pull/4003),[#4004](https://github.com/tikv/tikv/pull/4004) diff --git a/dev/releases/2.1.1.md b/dev/releases/2.1.1.md index f4e90cd8aef2..222506dad3ef 100644 --- a/dev/releases/2.1.1.md +++ b/dev/releases/2.1.1.md @@ -43,4 +43,4 @@ category: Releases - 优化对导入表的 `analyze` 机制,提升了导入速度 - 支持 checkpoint 信息储存在本地文件 + TiDB-Binlog - - 修复 pb files 输出 bug,表只有主键列则无法产生 pb event \ No newline at end of file + - 修复 pb files 输出 bug,表只有主键列则无法产生 pb event diff --git a/dev/releases/2.1.10.md b/dev/releases/2.1.10.md index 050c720cf862..907002e6486e 100644 --- a/dev/releases/2.1.10.md +++ b/dev/releases/2.1.10.md @@ -18,15 +18,15 @@ TiDB Ansible 版本:2.1.10 - 修复 `Generated Column` 在 `Replace` 或者 `Insert on duplicate update` 语句中的错误行为 [#10385](https://github.com/pingcap/tidb/pull/10385) - 修复 `BETWEEN` 函数在 `DATE`/`DATETIME` 类型比较的一个 bug [#10407](https://github.com/pingcap/tidb/pull/10407) - 修复使用 `SLOW_QUERY` 表查询慢日志时,单行慢日志长度过长导致的报错 [#10412](https://github.com/pingcap/tidb/pull/10412) -- 修复某些情况下 `DATETIME ` 和 `INTERVAL` 相加的结果跟 MySQL 不一致的问题 [#10416](https://github.com/pingcap/tidb/pull/10416),[#10418](https://github.com/pingcap/tidb/pull/10418) +- 修复某些情况下 `DATETIME` 和 `INTERVAL` 相加的结果跟 MySQL 不一致的问题 [#10416](https://github.com/pingcap/tidb/pull/10416),[#10418](https://github.com/pingcap/tidb/pull/10418) - 增加闰年二月的非法时间的检查 [#10417](https://github.com/pingcap/tidb/pull/10417) - 内部的初始化操作限制只在 DDL Owner 中执行,避免了初始化集群的时候出现的大量冲突报错 [#10426](https://github.com/pingcap/tidb/pull/10426) -- 修复 `DESC` 在输出时间戳列的默认值为 `default current_timestamp on update current_timestamp` 时跟 MySQL 不兼容的问题 [#10337](https://github.com/pingcap/tidb/issues/10337) +- 修复 `DESC` 在输出时间戳列的默认值为 `default current_timestamp on update current_timestamp` 时跟 MySQL 不兼容的问题 [#10337](https://github.com/pingcap/tidb/issues/10337) - 修复 `Update` 语句中权限检查出错的问题 [#10439](https://github.com/pingcap/tidb/pull/10439) - 修复 `CHAR` 类型的列在某些情况下 `RANGE` 计算错误导致的错误结果的问题 [#10455](https://github.com/pingcap/tidb/pull/10455) - 避免 `ALTER SHARD_ROW_ID_BITS` 缩小 shard bits 位数在极低概率下,可能导致的数据错误 [#9868](https://github.com/pingcap/tidb/pull/9868) - 修复 `ORDER BY RAND()` 不返回随机数字的问题 [#10064](https://github.com/pingcap/tidb/pull/10064) -- 禁止 `ALTER` 语句修改 DECIMAL 的精度 [#10458](https://github.com/pingcap/tidb/pull/10458) +- 禁止 `ALTER` 语句修改 DECIMAL 的精度 [#10458](https://github.com/pingcap/tidb/pull/10458) - 修复 `TIME_FORMAT` 函数与 MySQL 的兼容问题 [#10474](https://github.com/pingcap/tidb/pull/10474) - 检查 `PERIOD_ADD` 中参数的合法性 [#10430](https://github.com/pingcap/tidb/pull/10430) - 修复非法的 `YEAR` 字符串在 TiDB 中的表现跟 MySQL 不兼容的问题 [#10493](https://github.com/pingcap/tidb/pull/10493) @@ -45,7 +45,7 @@ TiDB Ansible 版本:2.1.10 - 拒绝在最近发生过成员变更的 Region 上执行 transfer leader,防止迁移失败 [#4684](https://github.com/tikv/tikv/pull/4684) - Coprocessor metrics 上添加 priority 标签 [#4643](https://github.com/tikv/tikv/pull/4643) - 修复 transfer leader 中可能发生的脏读问题 [#4724](https://github.com/tikv/tikv/pull/4724) -- 修复某些情况下 `CommitMerge` 导致 TiKV 不能重启的问题 [#4615](https://github.com/tikv/tikv/pull/4615) +- 修复某些情况下 `CommitMerge` 导致 TiKV 不能重启的问题 [#4615](https://github.com/tikv/tikv/pull/4615) - 修复 unknown 的日志 [#4730](https://github.com/tikv/tikv/pull/4730) ## Tools diff --git a/dev/releases/2.1.11.md b/dev/releases/2.1.11.md index 3b222036fdfd..46abfc3b9d69 100644 --- a/dev/releases/2.1.11.md +++ b/dev/releases/2.1.11.md @@ -40,7 +40,6 @@ TiDB Ansible 版本:2.1.11 - TiDB Binlog - 新增 GC 删数据限速功能,避免因为删除数据导致 QPS 降低的问题 [#620](https://github.com/pingcap/tidb-binlog/pull/620) - ## TiDB Ansible - 新增 Drainer 参数 [#760](https://github.com/pingcap/tidb-ansible/pull/760) diff --git a/dev/releases/2.1.12.md b/dev/releases/2.1.12.md index 1dc21fd7703e..4461812971e9 100644 --- a/dev/releases/2.1.12.md +++ b/dev/releases/2.1.12.md @@ -25,8 +25,8 @@ TiDB Ansible 版本:2.1.12 - 修复某些情况下 `DECIMAL` 转换成浮点数的溢出问题 [#10730](https://github.com/pingcap/tidb/pull/10730) - 修复 TiDB 跟 TiKV 在 gRPC 最大封包设置不一致导致的某些超大封包报 "grpc: received message larger than max" 错误的问题 [#10710](https://github.com/pingcap/tidb/pull/10710) - 修复某些情况下 `ORDER BY` 没有过滤 NULL 值导致的 panic 问题 [#10488](https://github.com/pingcap/tidb/pull/10488) -- 修复 `UUID` 函数的返回值,在多机器情况可能出现重复的问题 [#10711](https://github.com/pingcap/tidb/pull/10711) -- `CAST(-num as datetime)` 的返回值由错误变更为 NULL 值 [#10703](https://github.com/pingcap/tidb/pull/10703) +- 修复 `UUID` 函数的返回值,在多机器情况可能出现重复的问题 [#10711](https://github.com/pingcap/tidb/pull/10711) +- `CAST(-num as datetime)` 的返回值由错误变更为 NULL 值 [#10703](https://github.com/pingcap/tidb/pull/10703) - 修复某些情况下 unsigned 列直方图遇到 signed 越界的问题 [#10695](https://github.com/pingcap/tidb/pull/10695) - 修复统计信息的 feedback 遇到 bigint unsigned 主键时处理不正确导致读数据时报错的问题 [#10307](https://github.com/pingcap/tidb/pull/10307) - 修复分区表某些情况下 `Show Create Table` 结果显示不正确的问题 [#10690](https://github.com/pingcap/tidb/pull/10690) diff --git a/dev/releases/2.1.3.md b/dev/releases/2.1.3.md index 241281b2c328..d2dea84d97f4 100644 --- a/dev/releases/2.1.3.md +++ b/dev/releases/2.1.3.md @@ -20,13 +20,13 @@ category: Releases - 允许把 `Sort Merge Join` 用于笛卡尔积 [#9037](https://github.com/pingcap/tidb/pull/9037) - 修复统计信息的 worker 在某些情况下 panic 之后无法恢复的问题 [#9085](https://github.com/pingcap/tidb/pull/9085) - 修复某些情况下 `Sort Merge Join` 结果不正确的问题 [#9046](https://github.com/pingcap/tidb/pull/9046) - - 支持在 `CASE` 子句返回 JSON 类型 [#8355](https://github.com/pingcap/tidb/pull/8355) + - 支持在 `CASE` 子句返回 JSON 类型 [#8355](https://github.com/pingcap/tidb/pull/8355) + Server - 当语句中有非 TiDB hint 的注释时返回警告,而不是错误 [#8766](https://github.com/pingcap/tidb/pull/8766) - 验证设置的 TIMEZONE 的合法性 [#8879](https://github.com/pingcap/tidb/pull/8879) - - 优化 Metrics 项 `QueryDurationHistogram`,展示更多语句的类型 [#8875](https://github.com/pingcap/tidb/pull/8875) + - 优化 Metrics 项 `QueryDurationHistogram`,展示更多语句的类型 [#8875](https://github.com/pingcap/tidb/pull/8875) - 修复 bigint 某些情况下下界溢出的问题 [#8544](https://github.com/pingcap/tidb/pull/8544) - - 支持 `ALLOW_INVALID_DATES` SQL mode [#9110](https://github.com/pingcap/tidb/pull/9110) + - 支持 `ALLOW_INVALID_DATES` SQL mode [#9110](https://github.com/pingcap/tidb/pull/9110) + DDL - 修复一个 RENAME TABLE 的兼容性问题,保持行为跟 MySQL 一致 [#8808](https://github.com/pingcap/tidb/pull/8808) - 支持 `ADD INDEX` 的并发修改即时生效 [#8786](https://github.com/pingcap/tidb/pull/8786) @@ -37,7 +37,7 @@ category: Releases - 支持 `SHOW CREATE TABLE` 输出列的字符集 [#9053](https://github.com/pingcap/tidb/pull/9053) - 修复 varchar 最大支持字符数在 `utf8mb4` 下限制的问题 [#8818](https://github.com/pingcap/tidb/pull/8818) - 支持 `ALTER TABLE TRUNCATE TABLE PARTITION` [#9093](https://github.com/pingcap/tidb/pull/9093) - - 修复创建表的时候缺省字符集推算的问题 [#9147](https://github.com/pingcap/tidb/pull/9147) + - 修复创建表的时候缺省字符集推算的问题 [#9147](https://github.com/pingcap/tidb/pull/9147) ## PD @@ -55,4 +55,4 @@ category: Releases - 修复在启动或者重启时 `no available pump` 的问题 [#157](https://github.com/pingcap/tidb-tools/pull/158) - 开启 Pump client log 输出 [#165](https://github.com/pingcap/tidb-tools/pull/165) - 修复表只有 unique key 没有 primary key 的情况下,unique key 包含 NULL 值导致数据更新不一致的问题 - + \ No newline at end of file diff --git a/dev/releases/2.1.4.md b/dev/releases/2.1.4.md index defa0c34ce2f..3d4d6340833d 100644 --- a/dev/releases/2.1.4.md +++ b/dev/releases/2.1.4.md @@ -37,4 +37,4 @@ category: Releases - TiKV 在 import 模式下开启 auto compactions [#4199](https://github.com/tikv/tikv/pull/4199) - 增加禁用 TiKV periodic Level-1 compaction 参数,因为当 TiKV 集群为 2.1.4 或更高版本时,在导入模式下会自动执行 Level-1 compaction [#119](https://github.com/pingcap/tidb-lightning/pull/119) - 限制 import engines 数量,避免过大占用 importer 磁盘空间 [#119](https://github.com/pingcap/tidb-lightning/pull/119) -+ 数据同步对比统计 (sync-diff-inspector) 支持使用 TiDB 统计信息来划分 chunk [#197](https://github.com/pingcap/tidb-tools/pull/197) \ No newline at end of file ++ 数据同步对比统计 (sync-diff-inspector) 支持使用 TiDB 统计信息来划分 chunk [#197](https://github.com/pingcap/tidb-tools/pull/197) diff --git a/dev/releases/2.1.5.md b/dev/releases/2.1.5.md index 0ac3d6077ce4..fd8096a24496 100644 --- a/dev/releases/2.1.5.md +++ b/dev/releases/2.1.5.md @@ -48,7 +48,7 @@ category: Releases ## Tools -+ Lightning ++ Lightning - 集群中有 Tombstone store 时 Lightning 不会再报错退出 [#4223](https://github.com/tikv/tikv/pull/4223) + TiDB-Binlog - 修正 DDL Binlog 同步方案,确保 DDL 同步的正确性 [#9304](https://github.com/pingcap/tidb/issues/9304) diff --git a/dev/releases/2.1.6.md b/dev/releases/2.1.6.md index 4f5a58b89d15..a436e3e62cd8 100644 --- a/dev/releases/2.1.6.md +++ b/dev/releases/2.1.6.md @@ -13,18 +13,18 @@ category: Releases - 当两个表在 `TIDB_INLJ` 的 Hint 中时,基于代价来选择外表 [#9615](https://github.com/pingcap/tidb/pull/9615) - 修复在某些情况下,没有正确选择 IndexScan 的问题 [#9587](https://github.com/pingcap/tidb/pull/9587) - 修复聚合函数在子查询里面的检查跟 MySQL 不兼容的行为 [#9551](https://github.com/pingcap/tidb/pull/9551) - - 使 `show stats_histograms` 语句只输出合法的列,避免 Panic [#9502](https://github.com/pingcap/tidb/pull/9502) + - 使 `show stats_histograms` 语句只输出合法的列,避免 Panic [#9502](https://github.com/pingcap/tidb/pull/9502) + Server - 支持变量 `log_bin`,用于开启/关闭 Binlog [#9634](https://github.com/pingcap/tidb/pull/9634) - 在事务中添加一个防御性检查,避免错误的事务提交 [#9559](https://github.com/pingcap/tidb/pull/9559) - - 修复设置变量导致的 Panic 的问题 [#9539](https://github.com/pingcap/tidb/pull/9539) + - 修复设置变量导致的 Panic 的问题 [#9539](https://github.com/pingcap/tidb/pull/9539) + DDL - 修复 Create Table Like 语句在某些情况导致 Panic 的问题 [#9652](https://github.com/pingcap/tidb/pull/9652) - 打开 etcd client 的 AutoSync 特性,防止某些情况下 TiDB 无法连接上 etcd 的问题 [#9600](https://github.com/pingcap/tidb/pull/9600) ## TiKV -- 修复在某些情况下解析 protobuf 失败导致 `StoreNotMatch` 错误的问题 [#4303](https://github.com/tikv/tikv/pull/4303) +- 修复在某些情况下解析 protobuf 失败导致 `StoreNotMatch` 错误的问题 [#4303](https://github.com/tikv/tikv/pull/4303) ## Tools @@ -33,6 +33,6 @@ category: Releases - 保存原先在内存中的中间状态的 SST 到磁盘,减少内存使用 [#4369](https://github.com/tikv/tikv/pull/4369) - 限制 RocksDB 的内存使用 [#4369](https://github.com/tikv/tikv/pull/4369) - 修复 Region 还没有调度完成时进行 scatter 的问题 [#4369](https://github.com/tikv/tikv/pull/4369) - - 将大表的数据和索引分离导入,在分批导入时能有效降低耗时 [#132](https://github.com/pingcap/tidb-lightning/pull/132) - - 支援 CSV [#111](https://github.com/pingcap/tidb-lightning/pull/111) - - 修复库名中含非英数字符时导入失败的错误 [#9547](https://github.com/pingcap/tidb/pull/9547) + - 将大表的数据和索引分离导入,在分批导入时能有效降低耗时 [#132](https://github.com/pingcap/tidb-lightning/pull/132) + - 支援 CSV [#111](https://github.com/pingcap/tidb-lightning/pull/111) + - 修复库名中含非英数字符时导入失败的错误 [#9547](https://github.com/pingcap/tidb/pull/9547) diff --git a/dev/releases/2.1.7.md b/dev/releases/2.1.7.md index 409ff4afbcd3..7f06c0635dcc 100644 --- a/dev/releases/2.1.7.md +++ b/dev/releases/2.1.7.md @@ -25,7 +25,7 @@ TiDB-Ansible 版本:2.1.7 - 支持插件机制 [#9880](https://github.com/pingcap/tidb/pull/9880),[#9888](https://github.com/pingcap/tidb/pull/9888) - 支持使用系统变量 `log_bin` 查看 binlog 开启状况 [#9634](https://github.com/pingcap/tidb/pull/9634) - 支持使用 SQL 语句查看 Pump/Drainer 状态 [#9896](https://github.com/pingcap/tidb/pull/9896) -- 修复升级时对 utf8 检查 mb4 字符的兼容性 [#9887](https://github.com/pingcap/tidb/pull/9887) +- 修复升级时对 utf8 检查 mb4 字符的兼容性 [#9887](https://github.com/pingcap/tidb/pull/9887) - 修复某些情况下对 JSON 数据的聚合函数在计算过程中 Panic 的问题 [#9927](https://github.com/pingcap/tidb/pull/9927) ## PD @@ -38,4 +38,4 @@ TiDB-Ansible 版本:2.1.7 ## TiDB-Ansible -- Prometheus 监控数据默认保留时间改成 30d \ No newline at end of file +- Prometheus 监控数据默认保留时间改成 30d diff --git a/dev/releases/2.1.8.md b/dev/releases/2.1.8.md index 2689765444ca..a2dc8095aa9b 100644 --- a/dev/releases/2.1.8.md +++ b/dev/releases/2.1.8.md @@ -15,7 +15,7 @@ TiDB-Ansible 版本:2.1.8 - 修复 `GROUP_CONCAT` 函数在参数存在 NULL 值情况下与 MySQL 处理逻辑不兼容的问题 [#9930](https://github.com/pingcap/tidb/pull/9930) - 修复在 Distinct 模式下 decimal 类型值之间相等比较的问题 [#9931](https://github.com/pingcap/tidb/pull/9931) -- 修复 `SHOW FULL COLUMNS` 语句在 date,datetime,timestamp 类型的 Collation 的兼容性问题 +- 修复 `SHOW FULL COLUMNS` 语句在 date,datetime,timestamp 类型的 Collation 的兼容性问题 - [#9938](https://github.com/pingcap/tidb/pull/9938) - [#10114](https://github.com/pingcap/tidb/pull/10114) - 修复过滤条件存在关联列的时候统计信息估算行数不准确的问题 [#9937](https://github.com/pingcap/tidb/pull/9937) @@ -37,16 +37,16 @@ TiDB-Ansible 版本:2.1.8 ## PD -- 修复 Scatter Region 产生无效 Operator Step 的问题 [#1482](https://github.com/pingcap/pd/pull/1482) +- 修复 Scatter Region 产生无效 Operator Step 的问题 [#1482](https://github.com/pingcap/pd/pull/1482) - 修复 store 读热点的 key 统计不正确问题 [#1487](https://github.com/pingcap/pd/pull/1487) -- 修复 Region Merge Operator 超时时间过短的问题 [#1495](https://github.com/pingcap/pd/pull/1495) -- 添加 PD server 端处理 TSO 请求的耗时 metrics [#1502](https://github.com/pingcap/pd/pull/1502) +- 修复 Region Merge Operator 超时时间过短的问题 [#1495](https://github.com/pingcap/pd/pull/1495) +- 添加 PD server 端处理 TSO 请求的耗时 metrics [#1502](https://github.com/pingcap/pd/pull/1502) ## TiKV - 修复读流量统计错误的问题 [#4441](https://github.com/tikv/tikv/pull/4441) - 修复 Region 数过多的情况下 raftstore 的性能问题 [#4484](https://github.com/tikv/tikv/pull/4484) -- 调整当 level 0 SST 数量超过 `level_zero_slowdown_writes_trigger/2` 时不再继续 ingest file [#4464](https://github.com/tikv/tikv/pull/4464) +- 调整当 level 0 SST 数量超过 `level_zero_slowdown_writes_trigger/2` 时不再继续 ingest file [#4464](https://github.com/tikv/tikv/pull/4464) ## Tools diff --git a/dev/releases/2.1.9.md b/dev/releases/2.1.9.md index 2afc56c9c84d..0c93255fd006 100644 --- a/dev/releases/2.1.9.md +++ b/dev/releases/2.1.9.md @@ -38,7 +38,8 @@ TiDB-Ansible 版本:2.1.9 - 修复慢语句中带有 `#` 字符的问题 [#10275](https://github.com/pingcap/tidb/pull/10275) - 增加一些信息的列到慢查询的内存表 [#10317](https://github.com/pingcap/tidb/pull/10317) - 将事务提交时间算入慢语句执行时间 [#10310](https://github.com/pingcap/tidb/pull/10310) - - 修复某些时间格式无法被 pt-query-digest 解析的问题 [#10323](https://github.com/pingcap/tidb/pull/10323) + - 修复某些时间格式无法被 pt-query-digest 解析的问题 [#10323](https://github.com/pingcap/tidb/pull/10323) + ## PD - 支持 GetOperator 服务 [#1514](https://github.com/pingcap/pd/pull/1514) diff --git a/dev/releases/2.1ga.md b/dev/releases/2.1ga.md index 843c83bf6c4c..3ba5b2bfaa74 100644 --- a/dev/releases/2.1ga.md +++ b/dev/releases/2.1ga.md @@ -22,7 +22,7 @@ category: Releases - 优化 `EXPLAIN` 语句输出格式, 使用层级结构表示算子之间的上下游关系 + SQL 执行引擎 - + - 重构所有聚合函数,提升 `Stream` 和 `Hash` 聚合算子的执行效率 - 实现并行 `Hash Aggregate` 算子,部分场景下有 350% 的性能提升 - 实现并行 `Project` 算子,部分场景有 74% 的性能提升 @@ -81,8 +81,8 @@ category: Releases - 支持更多 MySQL 语法 - `BIT` 聚合函数支持 `ALL` 参数 - 支持 `SHOW PRIVILEGES` 语句 - - 支持 `LOAD DATA` 语句的 `CHARACTER SET` 语法 - - 支持 `CREATE USER` 语句的 `IDENTIFIED WITH` 语法 + - 支持 `LOAD DATA` 语句的 `CHARACTER SET` 语法 + - 支持 `CREATE USER` 语句的 `IDENTIFIED WITH` 语法 - 支持 `LOAD DATA IGNORE LINES` 语句 - `Show ProcessList` 语句返回更准确信息 @@ -113,7 +113,7 @@ category: Releases - 新增 `GCSafePoint` 接口,用于支持 TiDB 并发分布式 GC - 新增 `GetAllStores` 接口,用于支持 TiDB 并发分布式 GC + pd-ctl 新增: - + - 使用统计信息进行 Region split - 调用 `jq` 来格式化 JSON 输出 - 查询指定 store 的 Region 信息 @@ -125,7 +125,7 @@ category: Releases + 监控 - - 增加 `Filter `相关的监控 + - 增加 `Filter` 相关的监控 - 新增 etcd Raft 状态机相关监控 + 性能优化 @@ -179,9 +179,9 @@ category: Releases ## 升级兼容性说明 -- 由于新版本存储引擎更新,不支持在升级后回退至 2.0.x 或更旧版本 -- 从 2.0.6 之前的版本升级到 2.1 之前,最好确认集群中是否存在正在运行中的 DDL 操作,特别是耗时的 Add Index 操作,等 DDL 操作完成后再执行升级操作 ++ 由于新版本存储引擎更新,不支持在升级后回退至 2.0.x 或更旧版本 ++ 从 2.0.6 之前的版本升级到 2.1 之前,最好确认集群中是否存在正在运行中的 DDL 操作,特别是耗时的 Add Index 操作,等 DDL 操作完成后再执行升级操作 + 因为 2.1 版本启用了并行 DDL,对于早于 2.0.1 版本的集群,无法滚动升级到 2.1,可以选择下面两种方案: - 停机升级,直接从早于 2.0.1 的 TiDB 版本升级到 2.1 - - 先滚动升级到 2.0.1 或者之后的 2.0.x 版本,再滚动升级到 2.1 版本 \ No newline at end of file + - 先滚动升级到 2.0.1 或者之后的 2.0.x 版本,再滚动升级到 2.1 版本 diff --git a/dev/releases/201.md b/dev/releases/201.md index 135ac3e416f5..400cbde64f51 100644 --- a/dev/releases/201.md +++ b/dev/releases/201.md @@ -46,4 +46,4 @@ category: Releases - 修复特殊情况下开启 learner 无法选举成功的问题 - 修复极端情况下分裂可能导致的脏读问题 - 修正读线程池的配置默认值 -- 修正删大数据表会影响写性能的问题 \ No newline at end of file +- 修正删大数据表会影响写性能的问题 diff --git a/dev/releases/202.md b/dev/releases/202.md index fcc3842152e3..26547ab90b77 100644 --- a/dev/releases/202.md +++ b/dev/releases/202.md @@ -27,4 +27,4 @@ category: Releases - 支持配置更多 gRPC 相关参数 - 支持配置选举超时的取值范围 - 修复过期 learner 没有删掉的问题 -- 修复 snapshot 中间文件被误删的问题 \ No newline at end of file +- 修复 snapshot 中间文件被误删的问题 diff --git a/dev/releases/203.md b/dev/releases/203.md index 75974a1d1090..8bb4ff170d6f 100644 --- a/dev/releases/203.md +++ b/dev/releases/203.md @@ -34,4 +34,4 @@ category: Releases ## TiKV - 修复 learner flag 错误上报给 PD 的 bug -- 在 `do_div_mod` 中 `divisor/dividend` 为 0 时返回错误 \ No newline at end of file +- 在 `do_div_mod` 中 `divisor/dividend` 为 0 时返回错误 diff --git a/dev/releases/204.md b/dev/releases/204.md index 5266b12a38d6..23aa7846b142 100644 --- a/dev/releases/204.md +++ b/dev/releases/204.md @@ -15,7 +15,7 @@ category: Releases - 优化查询代价估计精度 - 设置 gRPC 的 `backoff max delay` 参数 - 支持通过配置文件设置单条语句的内存使用阈值 -- 重构 Optimizer 的 error +- 重构 Optimizer 的 error - 解决 Cast Decimal 数据的副作用问题 - 解决特定场景下 `Merge Join` 算子结果错误的问题 - 解决转换 `Null` 对象到 String 的问题 diff --git a/dev/releases/205.md b/dev/releases/205.md index 588bed594a4d..b373dfd88a95 100644 --- a/dev/releases/205.md +++ b/dev/releases/205.md @@ -37,4 +37,4 @@ category: Releases ## TiKV - 修复 decimal 运算中潜在的溢出问题 -- 修复 merge 过程中可能发生的脏读问题 \ No newline at end of file +- 修复 merge 过程中可能发生的脏读问题 diff --git a/dev/releases/206.md b/dev/releases/206.md index 439798282357..94d7de221fa9 100644 --- a/dev/releases/206.md +++ b/dev/releases/206.md @@ -46,4 +46,4 @@ category: Releases - 减少回滚事务的连续标记以提升冲突极端严重下的读性能 - 限制 RocksDB log 文件的大小和个数以减少长时间运行下不必要的磁盘占用 - Bug Fixes - - 修复字符串转 Decimal 时出现的 crash \ No newline at end of file + - 修复字符串转 Decimal 时出现的 crash diff --git a/dev/releases/207.md b/dev/releases/207.md index 82cba1593466..ccfa6c4ec1a4 100644 --- a/dev/releases/207.md +++ b/dev/releases/207.md @@ -33,4 +33,4 @@ category: Releases - Improvement - 空集群默认打开 `dynamic-level-bytes` 参数减少空间放大 - Bug Fix - - 在 Region merge 之后更新 Region 的 `approximate size` 和 keys \ No newline at end of file + - 在 Region merge 之后更新 Region 的 `approximate size` 和 keys diff --git a/dev/releases/208.md b/dev/releases/208.md index 196c95d90053..7e5ba2b0410c 100644 --- a/dev/releases/208.md +++ b/dev/releases/208.md @@ -17,7 +17,7 @@ category: Releases - 修复 `duplicate key update` 在某些情况下没有正确插入值的问题 [#7685](https://github.com/pingcap/tidb/pull/7685) - 修复 `UnionScan` 中谓词条件没有下推的问题 [#7726](https://github.com/pingcap/tidb/pull/7726) - 修复增加 `TIMESTAMP` 索引没有正确处理时区的问题 [#7812](https://github.com/pingcap/tidb/pull/7812) - - 修复某些情况下统计信息模块导致的内存泄露问题 [#7864](https://github.com/pingcap/tidb/pull/7864) + - 修复某些情况下统计信息模块导致的内存泄露问题 [#7864](https://github.com/pingcap/tidb/pull/7864) - 修复在某些异常情况下,无法获得 `ANALYZE` 结果的问题 [#7871](https://github.com/pingcap/tidb/pull/7871) - 令 `SYSDATE` 不做表达式展开,以返回正确的结果 [#7894](https://github.com/pingcap/tidb/pull/7894) - 修复某些情况下,`substring_index` panic 的问题 [#7896](https://github.com/pingcap/tidb/pull/7896) @@ -26,4 +26,4 @@ category: Releases ## TiKV + Bug 修复 - - 修复节点宕机时 Raftstore `EntryCache` 占用内存持续上升的问题 [#3529](https://github.com/tikv/tikv/pull/3529) \ No newline at end of file + - 修复节点宕机时 Raftstore `EntryCache` 占用内存持续上升的问题 [#3529](https://github.com/tikv/tikv/pull/3529) diff --git a/dev/releases/209.md b/dev/releases/209.md index 6484b639bd5b..7e425649031c 100644 --- a/dev/releases/209.md +++ b/dev/releases/209.md @@ -10,7 +10,7 @@ category: Releases ## TiDB - 修复统计信息直方图为空的时候导致的问题 [#7927](https://github.com/pingcap/tidb/pull/7927) -- 修复 `UNION ALL` 语句在某些情况下 panic 的问题 [#7942](https://github.com/pingcap/tidb/pull/7942) +- 修复 `UNION ALL` 语句在某些情况下 panic 的问题 [#7942](https://github.com/pingcap/tidb/pull/7942) - 修复错误的 DDL JOB 情况下导致的递归溢出问题 [#7959](https://github.com/pingcap/tidb/pull/7959) - 为 `Commit` 操作加上慢操作日志 [#7983](https://github.com/pingcap/tidb/pull/7983) - 修复 `Limit` 值太大的情况下导致的 panic 问题 [#8004](https://github.com/pingcap/tidb/pull/8004) @@ -43,4 +43,4 @@ category: Releases - 增加 `kv_scan` 接口扫描上界的限制 [#3749](https://github.com/tikv/tikv/pull/3749) - 废弃配置 `max-tasks-xxx` 并新增 `max-tasks-per-worker-xxx` [#3093](https://github.com/tikv/tikv/pull/3093) -- 修复 RocksDB `CompactFiles` 的问题 [#3789](https://github.com/tikv/tikv/pull/3789) \ No newline at end of file +- 修复 RocksDB `CompactFiles` 的问题 [#3789](https://github.com/tikv/tikv/pull/3789) diff --git a/dev/releases/21beta.md b/dev/releases/21beta.md index 578581d8429d..18cafa4e0de7 100644 --- a/dev/releases/21beta.md +++ b/dev/releases/21beta.md @@ -41,11 +41,11 @@ category: Releases - 添加 `tidb_disable_txn_auto_retry` 系统变量控制事务是否自动重试 - 修复写入 `time` 类型的数据精度问题 - 支持本地冲突事务排队,优化冲突事务性能 - - 修复 `UPDATE` 语句的 `Affected Rows` + - 修复 `UPDATE` 语句的 `Affected Rows` - 优化 `insert ignore on duplicate key update` 语句性能 - 优化 `Create Table` 语句的执行速度 - 优化 `Add index` 的速度,在某些场景下速度大幅提升 - - 修复 `Alter table add column` 增加列超过表的列数限制的问题 + - 修复 `Alter table add column` 增加列超过表的列数限制的问题 - 修复在某些异常情况下 DDL 任务重试导致 TiKV 压力增加的问题 - 修复在某些异常情况下 TiDB 不断重载 Schema 信息的问题 - DDL @@ -65,7 +65,7 @@ category: Releases - `region merge` 调度时跳过数据行数较多的 Region - 默认开启 `raft learner` 功能,降低调度时出现宕机导致数据不可用的风险 - `pd-recover` 移除 max-replica 参数 -- 增加 `Filter `相关的 metrics +- 增加 `Filter` 相关的 metrics - 修复 tikv-ctl unsafe recovery 之后 Region 信息没更新的问题 - 修复某些场景下副本迁移导致 TiKV 磁盘空间耗尽的问题 - 兼容性提示 diff --git a/dev/releases/21rc1.md b/dev/releases/21rc1.md index 669d1b947536..eb077d0078db 100644 --- a/dev/releases/21rc1.md +++ b/dev/releases/21rc1.md @@ -72,7 +72,7 @@ category: Releases - 修复 `SET` 和 `ENUM` 类型在 `information_schema` 里的 column size [#7347](https://github.com/pingcap/tidb/pull/7347) - 支持建表语句里的 `NATIONAL CHARACTER` 语法 [#7378](https://github.com/pingcap/tidb/pull/7378) - 支持 `LOAD DATA` 语句的 `CHARACTER SET` 语法 [#7391](https://github.com/pingcap/tidb/pull/7391) - - 修复 `SET` 和 `ENUM `类型的 column info [#7417](https://github.com/pingcap/tidb/pull/7417) + - 修复 `SET` 和 `ENUM` 类型的 column info [#7417](https://github.com/pingcap/tidb/pull/7417) - 支持 `CREATE USER` 语句的 `IDENTIFIED WITH` 语法 [#7402](https://github.com/pingcap/tidb/pull/7402) - 修复 `TIMESTAMP` 类型计算过程中丢失精度的问题 [#7418](https://github.com/pingcap/tidb/pull/7418) - 支持更多 `SYSTEM` 变量的合法性验证 [#7196](https://github.com/pingcap/tidb/pull/7196) diff --git a/dev/releases/21rc2.md b/dev/releases/21rc2.md index 231b3f653bfc..426e4289e60d 100644 --- a/dev/releases/21rc2.md +++ b/dev/releases/21rc2.md @@ -116,4 +116,4 @@ category: Releases - Bug 修复 - 修复新分裂 Region 的 PreVote 消息被丢弃导致的 leader 选举问题 [#3557](https://github.com/tikv/tikv/pull/3557) - 修复 Region merge 以后 follower 的相关统计信息 [#3573](https://github.com/tikv/tikv/pull/3573) - - 修复 local reader 使用过期 Region 信息的问题 [#3565](https://github.com/tikv/tikv/pull/3565) \ No newline at end of file + - 修复 local reader 使用过期 Region 信息的问题 [#3565](https://github.com/tikv/tikv/pull/3565) diff --git a/dev/releases/21rc3.md b/dev/releases/21rc3.md index 04170e77ceac..7d1056647b30 100644 --- a/dev/releases/21rc3.md +++ b/dev/releases/21rc3.md @@ -60,4 +60,4 @@ category: Releases - 添加 `truncate_real` 函数的支持 [#3633](https://github.com/tikv/tikv/pull/3633) + Bug 修复 - 修正时间函数相关的报错行为 [#3487](https://github.com/tikv/tikv/pull/3487) [#3615](https://github.com/tikv/tikv/pull/3615) - - 修复字符串解析成时间与 TiDB 不一致的问题 [#3589](https://github.com/tikv/tikv/pull/3589) \ No newline at end of file + - 修复字符串解析成时间与 TiDB 不一致的问题 [#3589](https://github.com/tikv/tikv/pull/3589) diff --git a/dev/releases/21rc4.md b/dev/releases/21rc4.md index dacd70ff1b3f..6a46324f7c82 100644 --- a/dev/releases/21rc4.md +++ b/dev/releases/21rc4.md @@ -10,33 +10,33 @@ category: Releases ## TiDB + SQL 优化器 - - 修复某些情况下 `UnionAll` 的列裁剪不正确的问题 [#7941](https://github.com/pingcap/tidb/pull/7941) - - 修复某些情况下 `UnionAll` 算子结果不正确的问题 [#8007](https://github.com/pingcap/tidb/pull/8007) + - 修复某些情况下 `UnionAll` 的列裁剪不正确的问题 [#7941](https://github.com/pingcap/tidb/pull/7941) + - 修复某些情况下 `UnionAll` 算子结果不正确的问题 [#8007](https://github.com/pingcap/tidb/pull/8007) + SQL 执行引擎 - - 修复 `AVG` 函数的精度问题 [#7874](https://github.com/pingcap/tidb/pull/7874) - - 支持通过 `EXPLAIN ANALYZE` 语句查看 Query 执行过程中各个算子的运行时间,返回结果行数等运行时统计信息 [#7925](https://github.com/pingcap/tidb/pull/7925) - - 修复多次引用同一列时 `PointGet` 算子 panic 的问题 [#7943](https://github.com/pingcap/tidb/pull/7943) - - 修复当 `Limit` 子句中的值太大时 panic 的问题 [#8002](https://github.com/pingcap/tidb/pull/8002) - - 修复某些情况下 `AddDate`/`SubDate` 执行过程中 panic 的问题 [#8009](https://github.com/pingcap/tidb/pull/8009) + - 修复 `AVG` 函数的精度问题 [#7874](https://github.com/pingcap/tidb/pull/7874) + - 支持通过 `EXPLAIN ANALYZE` 语句查看 Query 执行过程中各个算子的运行时间,返回结果行数等运行时统计信息 [#7925](https://github.com/pingcap/tidb/pull/7925) + - 修复多次引用同一列时 `PointGet` 算子 panic 的问题 [#7943](https://github.com/pingcap/tidb/pull/7943) + - 修复当 `Limit` 子句中的值太大时 panic 的问题 [#8002](https://github.com/pingcap/tidb/pull/8002) + - 修复某些情况下 `AddDate`/`SubDate` 执行过程中 panic 的问题 [#8009](https://github.com/pingcap/tidb/pull/8009) + 统计信息 - - 修复将组合索引的直方图下边界前缀判断为越界的问题 [#7856](https://github.com/pingcap/tidb/pull/7856) - - 修复统计信息收集引发的内存泄漏问题 [#7873](https://github.com/pingcap/tidb/pull/7873) - - 修复直方图为空时 panic 的问题 [#7928](https://github.com/pingcap/tidb/pull/7928) - - 修复加载统计信息时直方图边界越界的问题 [#7944](https://github.com/pingcap/tidb/pull/7944) - - 限制统计信息采样过程中数值的最大长度 [#7982](https://github.com/pingcap/tidb/pull/7982) + - 修复将组合索引的直方图下边界前缀判断为越界的问题 [#7856](https://github.com/pingcap/tidb/pull/7856) + - 修复统计信息收集引发的内存泄漏问题 [#7873](https://github.com/pingcap/tidb/pull/7873) + - 修复直方图为空时 panic 的问题 [#7928](https://github.com/pingcap/tidb/pull/7928) + - 修复加载统计信息时直方图边界越界的问题 [#7944](https://github.com/pingcap/tidb/pull/7944) + - 限制统计信息采样过程中数值的最大长度 [#7982](https://github.com/pingcap/tidb/pull/7982) + Server - - 重构 Latch,避免事务冲突误判,提升并发事务的执行性能 [#7711](https://github.com/pingcap/tidb/pull/7711) - - 修复某些情况下收集 Slow Query 导致的 panic 问题 [#7874](https://github.com/pingcap/tidb/pull/7847) - - 修复 `LOAD DATA` 语句中,`ESCAPED BY` 为空字符串时 panic 的问题 [#8005](https://github.com/pingcap/tidb/pull/8005) - - 完善 “coprocessor error” 日志信息 [#8006](https://github.com/pingcap/tidb/pull/8006) + - 重构 Latch,避免事务冲突误判,提升并发事务的执行性能 [#7711](https://github.com/pingcap/tidb/pull/7711) + - 修复某些情况下收集 Slow Query 导致的 panic 问题 [#7874](https://github.com/pingcap/tidb/pull/7847) + - 修复 `LOAD DATA` 语句中,`ESCAPED BY` 为空字符串时 panic 的问题 [#8005](https://github.com/pingcap/tidb/pull/8005) + - 完善 “coprocessor error” 日志信息 [#8006](https://github.com/pingcap/tidb/pull/8006) + 兼容性 - - 当 Query 为空时,将 `SHOW PROCESSLIST` 结果中的 `Command` 字段设置为 “Sleep” [#7839](https://github.com/pingcap/tidb/pull/7839) + - 当 Query 为空时,将 `SHOW PROCESSLIST` 结果中的 `Command` 字段设置为 “Sleep” [#7839](https://github.com/pingcap/tidb/pull/7839) + 表达式 - 修复 `SYSDATE` 函数被常量折叠的问题 [#7895](https://github.com/pingcap/tidb/pull/7895) - - 修复 `SUBSTRING_INDEX` 在某些情况下 panic 的问题 [#7897](https://github.com/pingcap/tidb/pull/7897) + - 修复 `SUBSTRING_INDEX` 在某些情况下 panic 的问题 [#7897](https://github.com/pingcap/tidb/pull/7897) + DDL - - 修复抛出 “invalid ddl job type” 的错误时导致栈溢出的问题 [#7958](https://github.com/pingcap/tidb/pull/7958) - - 修复某些情况下 `ADMIN CHECK TABLE` 结果不正确的问题 [#7975](https://github.com/pingcap/tidb/pull/7975) + - 修复抛出 “invalid ddl job type” 的错误时导致栈溢出的问题 [#7958](https://github.com/pingcap/tidb/pull/7958) + - 修复某些情况下 `ADMIN CHECK TABLE` 结果不正确的问题 [#7975](https://github.com/pingcap/tidb/pull/7975) ## PD diff --git a/dev/releases/21rc5.md b/dev/releases/21rc5.md index a9d5fc4fb82d..26b7c0753fc9 100644 --- a/dev/releases/21rc5.md +++ b/dev/releases/21rc5.md @@ -45,6 +45,7 @@ category: Releases - [#1298](https://github.com/pingcap/pd/pull/1298) - [#1299](https://github.com/pingcap/pd/pull/1299) - [#1308](https://github.com/pingcap/pd/pull/1308) + - 修复 `regions/check` API 输出错误的问题 [#1311](https://github.com/pingcap/pd/pull/1311) - 修复 PD join 失败后无法重新 join 的问题 [#1279](https://github.com/pingcap/pd/pull/1279) - 修复某些情况下 watch leader 会丢失事件的问题 [#1317](https://github.com/pingcap/pd/pull/1317) @@ -58,4 +59,4 @@ category: Releases ## Tools -- TiDB 支持 TiDB-Binlog cluster,不兼容旧版本 TiDB-Binlog [#8093](https://github.com/pingcap/tidb/pull/8093),[使用文档](https://github.com/pingcap/docs-cn/blob/master/tools/tidb-binlog-cluster.md) \ No newline at end of file +- TiDB 支持 TiDB-Binlog cluster,不兼容旧版本 TiDB-Binlog [#8093](https://github.com/pingcap/tidb/pull/8093),[使用文档](https://github.com/pingcap/docs-cn/blob/master/tools/tidb-binlog-cluster.md) diff --git a/dev/releases/2rc1.md b/dev/releases/2rc1.md index 5df84ccb29ec..6739465e88de 100644 --- a/dev/releases/2rc1.md +++ b/dev/releases/2rc1.md @@ -36,4 +36,4 @@ category: Releases + 增加获取 metrics 的 gRPC API + 启动时候,检查是否使用 SSD + 使用 ReadPool 优化读性能,`raw get` 测试性能提升 30% -+ 完善 metrics,优化 metrics 的使用 \ No newline at end of file ++ 完善 metrics,优化 metrics 的使用 diff --git a/dev/releases/2rc3.md b/dev/releases/2rc3.md index 4489e7e0ab15..a44a69362cfc 100644 --- a/dev/releases/2rc3.md +++ b/dev/releases/2rc3.md @@ -56,4 +56,4 @@ category: Releases - 根据 compaction 事件及时更新对应 Region 的 size 信息 - 对 `scan lock` 的大小进行限制,防止请求超时 - 使用 `DeleteRange` 加速 Region 删除 -- 支持在线修改 RocksDB 的参数 \ No newline at end of file +- 支持在线修改 RocksDB 的参数 diff --git a/dev/releases/2rc5.md b/dev/releases/2rc5.md index 709bcef9cd7f..01043ecd113d 100644 --- a/dev/releases/2rc5.md +++ b/dev/releases/2rc5.md @@ -45,4 +45,4 @@ category: Releases - 优化 metric 相关的内容 - 解决 snapshot 相关的一个潜在 bug - 解决误用了一个 RocksDB metric 的问题 -- Coprocessor 支持 `overflow as warning` 选项 \ No newline at end of file +- Coprocessor 支持 `overflow as warning` 选项 diff --git a/dev/releases/3.0-ga.md b/dev/releases/3.0-ga.md index 92ea326b9866..4e259de17707 100644 --- a/dev/releases/3.0-ga.md +++ b/dev/releases/3.0-ga.md @@ -120,7 +120,8 @@ TiDB Ansible 版本:3.0.0 - 新增从单个节点重建集群的功能 - 将 Region 元信息从 etcd 移到 go-leveldb 存储引擎,解决大规模集群 etcd 存储瓶颈问题 -+ API + ++ API - 新增 `remove-tombstone` 接口,用于清理 Tombstone Store - 新增 `ScanRegions` 接口,用于批量查询 Region 信息 - 新增 `GetOperator` 接口,用于查询运行中的 Operator @@ -159,6 +160,7 @@ TiDB Ansible 版本:3.0.0 - 制定日志格式规范,重构日志系统,方便工具收集分析 - 新增配置信息,Key 越界相关的性能监控指标 - RawKV 使用 Local Reader,提升性能 + + Engine - 优化内存管理,减少 `Iterator Key Bound Option` 的内存分配和拷贝,提升性能 - 支持多个 column family 共享 block cache,提升资源的利用率 diff --git a/dev/releases/3.0.0-beta.1.md b/dev/releases/3.0.0-beta.1.md index 96a971c6b60d..b4fb665aad77 100644 --- a/dev/releases/3.0.0-beta.1.md +++ b/dev/releases/3.0.0-beta.1.md @@ -65,14 +65,14 @@ TiDB-Ansible 版本:3.0.0-beta.1 ## PD -- 统一[日志格式规范](https://github.com/tikv/rfcs/blob/master/text/2018-12-19-unified-log-format.md),利于工具收集分析 ++ 统一[日志格式规范](https://github.com/tikv/rfcs/blob/master/text/2018-12-19-unified-log-format.md),利于工具收集分析 + 模拟器 - - 支持不同 store 可采用不同的心跳间隔时间 [#1418](https://github.com/pingcap/pd/pull/1418) - - 添加导入数据的场景 [#1263](https://github.com/pingcap/pd/pull/1263) -- 热点调度可配置化 [#1412](https://github.com/pingcap/pd/pull/1412) -- 增加 store 地址为维度的监控项,代替原有的 Store ID [#1429](https://github.com/pingcap/pd/pull/1429) -- 优化 `GetStores` 开销,加快 Region 巡检周期 [#1410](https://github.com/pingcap/pd/pull/1410) -- 新增删除 Tombstone Store 的接口 [#1472](https://github.com/pingcap/pd/pull/1472) + - 支持不同 store 可采用不同的心跳间隔时间 [#1418](https://github.com/pingcap/pd/pull/1418) + - 添加导入数据的场景 [#1263](https://github.com/pingcap/pd/pull/1263) ++ 热点调度可配置化 [#1412](https://github.com/pingcap/pd/pull/1412) ++ 增加 store 地址为维度的监控项,代替原有的 Store ID [#1429](https://github.com/pingcap/pd/pull/1429) ++ 优化 `GetStores` 开销,加快 Region 巡检周期 [#1410](https://github.com/pingcap/pd/pull/1410) ++ 新增删除 Tombstone Store 的接口 [#1472](https://github.com/pingcap/pd/pull/1472) ## TiKV @@ -82,13 +82,14 @@ TiDB-Ansible 版本:3.0.0-beta.1 - 定义 `BatchExecutor` 接口,实现将请求转化为 `BatchExecutor` 的方法 [#4243](https://github.com/tikv/tikv/pull/4243) - 实现将表达式树转化成 RPN 格式 [#4329](https://github.com/tikv/tikv/pull/4329) - TableScan 算子实现为 Batch 方式,通过向量化计算加速计算 [#4351](https://github.com/tikv/tikv/pull/4351) + - 统一[日志格式规范](https://github.com/tikv/rfcs/blob/master/text/2018-12-19-unified-log-format.md),利于工具收集分析 -- 支持 Raw Read 接口使用 Local Reader 进行读 [#4222](https://github.com/tikv/tikv/pull/4222) -- 新增配置信息的 Metrics [#4206](https://github.com/tikv/tikv/pull/4206) -- 新增 Key 越界的 Metrics [#4255](https://github.com/tikv/tikv/pull/4255) -- 新增碰到扫越界错误时 Panic 或者报错选项 [#4254](https://github.com/tikv/tikv/pull/4254) -- 增加 Insert 语义,只有在 Key 不存在的时候 Prewrite 才成功,消除 Batch Get [#4085](https://github.com/tikv/tikv/pull/4085) -- Batch System 使用更加公平的 batch 策略 [#4200](https://github.com/tikv/tikv/pull/4200) +- 支持 Raw Read 接口使用 Local Reader 进行读 [#4222](https://github.com/tikv/tikv/pull/4222) +- 新增配置信息的 Metrics [#4206](https://github.com/tikv/tikv/pull/4206) +- 新增 Key 越界的 Metrics [#4255](https://github.com/tikv/tikv/pull/4255) +- 新增碰到扫越界错误时 Panic 或者报错选项 [#4254](https://github.com/tikv/tikv/pull/4254) +- 增加 Insert 语义,只有在 Key 不存在的时候 Prewrite 才成功,消除 Batch Get [#4085](https://github.com/tikv/tikv/pull/4085) +- Batch System 使用更加公平的 batch 策略 [#4200](https://github.com/tikv/tikv/pull/4200) - tikv-ctl 支持 Raw scan [#3825](https://github.com/tikv/tikv/pull/3825) ## Tools @@ -101,8 +102,8 @@ TiDB-Ansible 版本:3.0.0-beta.1 - 支持禁用 TiKV periodic Level-1 compaction,当 TiKV 集群为 2.1.4 或更高时,在导入模式下会自动执行 Level-1 compaction [#119](https://github.com/pingcap/tidb-lightning/pull/119),[#4199](https://github.com/tikv/tikv/pull/4199) - 根据 `table_concurrency` 配置项限制 import engines 数量,默认值:16,防止过多占用 importer 磁盘空间 [#119](https://github.com/pingcap/tidb-lightning/pull/119) - 支持保存中间状态的 SST 到磁盘,减少内存使用 [#4369](https://github.com/tikv/tikv/pull/4369) - - 优化 TiKV-Importer 导入性能,支持将大表的数据和索引分离导入 [#132](https://github.com/pingcap/tidb-lightning/pull/132) - - 支持 CSV 文件导入 [#111](https://github.com/pingcap/tidb-lightning/pull/111) + - 优化 TiKV-Importer 导入性能,支持将大表的数据和索引分离导入 [#132](https://github.com/pingcap/tidb-lightning/pull/132) + - 支持 CSV 文件导入 [#111](https://github.com/pingcap/tidb-lightning/pull/111) + 数据同步对比工具 (sync-diff-inspector) - 支持使用 TiDB 统计信息来划分对比的 chunk [#197](https://github.com/pingcap/tidb-tools/pull/197) - - 支持使用多个 column 来划分对比的 chunk [#197](https://github.com/pingcap/tidb-tools/pull/197) \ No newline at end of file + - 支持使用多个 column 来划分对比的 chunk [#197](https://github.com/pingcap/tidb-tools/pull/197) diff --git a/dev/releases/3.0.0-rc.1.md b/dev/releases/3.0.0-rc.1.md index 96aea2e59dfe..dbdc52e62a9f 100644 --- a/dev/releases/3.0.0-rc.1.md +++ b/dev/releases/3.0.0-rc.1.md @@ -61,20 +61,21 @@ TiDB-Ansible 版本:3.0.0-rc.1 ## PD -+ 升级 ETCD 版本 [#1452](https://github.com/pingcap/pd/pull/1452) ++ 升级 ETCD 版本 [#1452](https://github.com/pingcap/pd/pull/1452) - 统一 etcd 的日志格式与 pd server 一致 - 修复 prevote 可能无法选出 Leader 的问题 - 快速 drop 掉会失败的 propose 和 read 请求,减少阻塞后面的请求时间 - 修复 Lease 的死锁问题 + - 修复 store 读热点的 keys 统计不正确问题 [#1487](https://github.com/pingcap/pd/pull/1487) -- 支持从单一 PD 节点强制重建 PD 集群 [#1485](https://github.com/pingcap/pd/pull/1485) -- 修复 Scatter Region 产生无效 Operator Step 的问题 [#1482](https://github.com/pingcap/pd/pull/1482) -- 修复 Region Merge Operator 超时时间过短的问题 [#1495](https://github.com/pingcap/pd/pull/1495) +- 支持从单一 PD 节点强制重建 PD 集群 [#1485](https://github.com/pingcap/pd/pull/1485) +- 修复 Scatter Region 产生无效 Operator Step 的问题 [#1482](https://github.com/pingcap/pd/pull/1482) +- 修复 Region Merge Operator 超时时间过短的问题 [#1495](https://github.com/pingcap/pd/pull/1495) - 热点调度使用高优先级 [#1492](https://github.com/pingcap/pd/pull/1492) -- 添加 PD server 端处理 TSO 请求的耗时 Metrics [#1502](https://github.com/pingcap/pd/pull/1502) +- 添加 PD server 端处理 TSO 请求的耗时 Metrics [#1502](https://github.com/pingcap/pd/pull/1502) - 添加相对应的 Store ID 和 Address 到 store 相关的 Metrics [#1506](https://github.com/pingcap/pd/pull/1506) - 支持 GetOperator 服务 [#1477](https://github.com/pingcap/pd/pull/1477) -- 修复 Heartbeat stream 下发送 error 找不到 store 的问题 [#1521](https://github.com/pingcap/pd/pull/1521) +- 修复 Heartbeat stream 下发送 error 找不到 store 的问题 [#1521](https://github.com/pingcap/pd/pull/1521) ## TiKV @@ -93,7 +94,7 @@ TiDB-Ansible 版本:3.0.0-rc.1 - 新增 batch index scan executor [#4419](https://github.com/tikv/tikv/pull/4419) - 新增向量化 evaluation 框架 [#4322](https://github.com/tikv/tikv/pull/4322) - 新增 batch 执行器统计框架 [#4433](https://github.com/tikv/tikv/pull/4433) - - 构建 RPN expression 时检查 max column 以防止 evaluation 阶段 column offset 越界的问题 [#4481](https://github.com/tikv/tikv/pull/4481) + - 构建 RPN expression 时检查 max column 以防止 evaluation 阶段 column offset 越界的问题 [#4481](https://github.com/tikv/tikv/pull/4481) - 实现 `BatchLimitExecutor` [#4469](https://github.com/tikv/tikv/pull/4469) - ReadPool 使用 `tokio-threadpool` 替换原本的 `futures-cpupool`,减少 context switch [#4486](https://github.com/tikv/tikv/pull/4486) - 新增 batch 聚合框架 [#4533](https://github.com/tikv/tikv/pull/4533) @@ -120,7 +121,7 @@ TiDB-Ansible 版本:3.0.0-rc.1 - 提升 Lightning encode SQL 性能,性能提升 50%,直接解析数据源文件内容成 TiDB 的 types.Datum,省去 KV encoder 的多余解析工作 [#145](https://github.com/pingcap/tidb-lightning/pull/145) - 日志格式改为 [Unified Log Format](https://github.com/tikv/rfcs/blob/master/text/2018-12-19-unified-log-format.md) [#162](https://github.com/pingcap/tidb-lightning/pull/162) - 新增一些命令行选项,即使缺少配置文件也能使用。[#157](https://github.com/pingcap/tidb-lightning/pull/157) -+ 数据同步对比工具 (sync-diff-inspector) ++ 数据同步对比工具 (sync-diff-inspector) - 支持 checkpoint,记录校验状态,重启后从上次进度继续校验 [#224](https://github.com/pingcap/tidb-tools/pull/224) - 增加配置项 only-use-checksum,只通过计算 checksum 来检查数据是否一致 [#215](https://github.com/pingcap/tidb-tools/pull/215) @@ -130,6 +131,7 @@ TiDB-Ansible 版本:3.0.0-rc.1 - summary 监控适用于用户查看集群状态 - trouble_shooting 监控适用于 DBA 排查问题 - details 监控适用于开发分析问题 + - 修复下载 Kafka 版本 Binlog 失败的 BUG [#730](https://github.com/pingcap/tidb-ansible/pull/730) - 修改操作系统版本限制,仅支持 CentOS 7.0 及以上,Red Hat 7.0 及以上版本的操作系统 [#733](https://github.com/pingcap/tidb-ansible/pull/733) - 滚动升级时的版本检测改为多并发 [#736](https://github.com/pingcap/tidb-ansible/pull/736) diff --git a/dev/releases/3.0.0-rc.2.md b/dev/releases/3.0.0-rc.2.md index 0f87853a472b..278598b8ee00 100644 --- a/dev/releases/3.0.0-rc.2.md +++ b/dev/releases/3.0.0-rc.2.md @@ -56,14 +56,14 @@ TiDB Ansible 版本:3.0.0-rc.2 - 修复某些情况下对含有 partition 的 table 添加索引时引发 TiDB panic 的问题 [#10475](https://github.com/pingcap/tidb/pull/10475) - 添加对某些极端情况下导致 schema 出错的防护功能 [#10464](https://github.com/pingcap/tidb/pull/10464) - 创建 range partition 若有单列或者创建 hash partition 时默认开启分区功能 [#9936](https://github.com/pingcap/tidb/pull/9936) - + ## PD - 默认开启 Region storage 将 Region 元信息存储到 Region storage 中 [#1524](https://github.com/pingcap/pd/pull/1524) - 修复热点调度受其他调度器抢占的问题 [#1522](https://github.com/pingcap/pd/pull/1522) - 修复 Leader 优先级不生效的问题 [#1533](https://github.com/pingcap/pd/pull/1533) - 新增 `ScanRegions` 的 gRPC 接口 [#1535](https://github.com/pingcap/pd/pull/1535) -- 主动下发 operator 加快调度速度 [#1536](https://github.com/pingcap/pd/pull/1536) +- 主动下发 operator 加快调度速度 [#1536](https://github.com/pingcap/pd/pull/1536) - 添加 store limit 机制,限制单个 store 的调度速度 [#1474](https://github.com/pingcap/pd/pull/1474) - 修复 `config` 状态不一致的问题 [#1476](https://github.com/pingcap/pd/pull/1476) @@ -95,7 +95,7 @@ TiDB Ansible 版本:3.0.0-rc.2 - `IsFalse` [#4720](https://github.com/tikv/tikv/pull/4720) - 支持 `Int` 比较运算 [#4625](https://github.com/tikv/tikv/pull/4625) - 支持 `Decimal` 比较运算 [#4625](https://github.com/tikv/tikv/pull/4625) - - 支持 `String` 比较运算 [#4625](https://github.com/tikv/tikv/pull/4625) + - 支持 `String` 比较运算 [#4625](https://github.com/tikv/tikv/pull/4625) - 支持 `Time` 比较运算 [#4625](https://github.com/tikv/tikv/pull/4625) - 支持 `Duration` 比较运算 [#4625](https://github.com/tikv/tikv/pull/4625) - 支持 `Json` 比较运算 [#4625](https://github.com/tikv/tikv/pull/4625) diff --git a/dev/releases/3.0.0-rc.3.md b/dev/releases/3.0.0-rc.3.md index cd15fbc6b70d..6dd3c5df94d5 100644 --- a/dev/releases/3.0.0-rc.3.md +++ b/dev/releases/3.0.0-rc.3.md @@ -78,7 +78,7 @@ TiDB Ansible 版本:3.0.0-rc.3 - 新增 GC worker 相关监控项 [#4922](https://github.com/tikv/tikv/pull/4922) + Raftstore - - 修复 local reader 的 cache 没有正确清理的问题 [#4778](https://github.com/tikv/tikv/pull/4778) + - 修复 local reader 的 cache 没有正确清理的问题 [#4778](https://github.com/tikv/tikv/pull/4778) - 修复进行 transfer leader 和 conf change 时可能导致请求延迟增加的问题 [#4734](https://github.com/tikv/tikv/pull/4734) - 修复误报 stale command 的问题 [#4682](https://github.com/tikv/tikv/pull/4682) - 修复 command 可能一直 pending 的问题 [#4810](https://github.com/tikv/tikv/pull/4810) @@ -119,4 +119,4 @@ TiDB Ansible 版本:3.0.0-rc.3 ## TiDB Ansible -- 新增预测集群最大 QPS 的监控项(默认隐藏)[#f5cfa4d](https://github.com/pingcap/tidb-ansible/commit/f5cfa4d903bbcd77e01eddc8d31eabb6e6157f73) \ No newline at end of file +- 新增预测集群最大 QPS 的监控项(默认隐藏)[#f5cfa4d](https://github.com/pingcap/tidb-ansible/commit/f5cfa4d903bbcd77e01eddc8d31eabb6e6157f73) diff --git a/dev/releases/3.0beta.md b/dev/releases/3.0beta.md index 84e1186886b8..229d30aba437 100644 --- a/dev/releases/3.0beta.md +++ b/dev/releases/3.0beta.md @@ -52,7 +52,7 @@ category: Releases - 优化 `Prepare` 语句,使得 `ORDER BY`/`GROUP BY`/`LIMIT` 子句中可以使用 “?” 占位符 [#8206](https://github.com/pingcap/tidb/pull/8206) + 权限管理 - 增加对 `ANALYZE` 语句的权限检查 [#8486](https://github.com/pingcap/tidb/pull/8486) - - 增加对 `USE` 语句的权限检查 [#8414](https://github.com/pingcap/tidb/pull/8418) + - 增加对 `USE` 语句的权限检查 [#8414](https://github.com/pingcap/tidb/pull/8418) - 增加对 `SET GLOBAL` 语句的权限检查 [#8837](https://github.com/pingcap/tidb/pull/8837) - 增加对 `SHOW PROCESSLIST` 语句的权限检查 [#7858](https://github.com/pingcap/tidb/pull/7858) + Server diff --git a/dev/releases/ga.md b/dev/releases/ga.md index a8a66ea4463a..65743083591f 100644 --- a/dev/releases/ga.md +++ b/dev/releases/ga.md @@ -7,12 +7,12 @@ category: Releases 2017 年 10 月 16 日,TiDB 发布 GA 版(TiDB 1.0)。该版本对 MySQL 兼容性、SQL 优化器、系统稳定性、性能做了大量的工作。 -## TiDB: +## TiDB + SQL 查询优化器 - - 调整代价模型 - - Analyze 下推 - - 函数签名下推 + - 调整代价模型 + - Analyze 下推 + - 函数签名下推 + 优化内部数据格式,减小中间结果大小 + 提升 MySQL 兼容性 @@ -20,12 +20,12 @@ category: Releases + 重构 Hash Aggregator 算子,降低内存使用 + 支持 Stream Aggragator 算子 -## PD: +## PD + 支持基于读流量的热点调度 + 支持设置 Store 权重,以及基于权重的调度 -## TiKV: +## TiKV + Coprocessor 支持更多下推函数 + 支持取样操作下推 @@ -33,7 +33,7 @@ category: Releases + 提升性能和稳定性 + 增加 Debug API,方便调试 -## TiSpark Beta Release: +## TiSpark Beta Release + 支持可配置框架 + 支持 ThriftSever/JDBC 和 Spark SQL 脚本入口 @@ -53,7 +53,7 @@ category: Releases - 腾讯云 - 韩国三星研究院 -### 感谢以下组织/个人提供出色的开源软件/服务: +### 感谢以下组织/个人提供出色的开源软件/服务 - Asta Xie - CNCF diff --git a/dev/releases/prega.md b/dev/releases/prega.md index 76eb4fc15232..75d0d1fcfa44 100644 --- a/dev/releases/prega.md +++ b/dev/releases/prega.md @@ -7,7 +7,7 @@ category: Releases 2017 年 8 月 30 日,TiDB 发布 Pre-GA 版。该版本对 MySQL 兼容性、SQL 优化器、系统稳定性、性能做了大量的工作。 -## TiDB: +## TiDB + SQL 查询优化器 - 调整代价模型 @@ -18,20 +18,20 @@ category: Releases + 完成 JSON 类型支持 (Experimental),包括对 JSON 中的字段查询、更新、建索引 + 裁剪无用数据,减小执行器内存消耗 + 支持在 SQL 语句中设置优先级,并根据查询类型自动设置部分语句的优先级 -+ 完成表达式重构,执行速度提升 30% 左右 ++ 完成表达式重构,执行速度提升 30% 左右 -## PD: +## PD + 支持手动切换 PD 集群 Leader -## TiKV: +## TiKV + Raft Log 使用独立的 RocksDB 实例 + 使用 DeleteRange 加快删除副本速度 + Coprocessor 支持更多运算符下推 + 提升性能,提升稳定性 -## TiSpark Beta Release: +## TiSpark Beta Release + 支持谓词下推 + 支持聚合下推 diff --git a/dev/releases/rc1.md b/dev/releases/rc1.md index b763d946cf4e..20e24a1d6ae8 100644 --- a/dev/releases/rc1.md +++ b/dev/releases/rc1.md @@ -9,33 +9,33 @@ category: Releases ## TiKV - + 提升写入速度 - + 降低磁盘空间占用 - + 支持百 TB 级别数据 - + 提升稳定性,集群规模支持 200 个节点 - + 提供 Raw KV API,以及 Golang client ++ 提升写入速度 ++ 降低磁盘空间占用 ++ 支持百 TB 级别数据 ++ 提升稳定性,集群规模支持 200 个节点 ++ 提供 Raw KV API,以及 Golang client ## PD - + PD 调度策略框架优化,策略更加灵活合理 - + 添加 label 支持,支持跨 DC 调度 - + 提供 PD Controler,方便操作 PD 集群 ++ PD 调度策略框架优化,策略更加灵活合理 ++ 添加 label 支持,支持跨 DC 调度 ++ 提供 PD Controler,方便操作 PD 集群 ## TiDB - + SQL 查询优化器 - - 支持 eager aggregate - - 更详细的 explain 信息 - - union 算子并行化 - - 子查询性能优化 - - 条件下推优化 - - 优化 CBO 框架 - + 重构 time 相关类型的实现,提升和 MySQL 的兼容性 - + 支持更多的 MySQL 内建函数 - + Add Index 语句提速 - + 支持用 change column 语句修改列名;支持使用 Alter table 的 modify column 和 change column 完成部分列类型转换 ++ SQL 查询优化器 + - 支持 eager aggregate + - 更详细的 explain 信息 + - union 算子并行化 + - 子查询性能优化 + - 条件下推优化 + - 优化 CBO 框架 ++ 重构 time 相关类型的实现,提升和 MySQL 的兼容性 ++ 支持更多的 MySQL 内建函数 ++ Add Index 语句提速 ++ 支持用 change column 语句修改列名;支持使用 Alter table 的 modify column 和 change column 完成部分列类型转换 ## 工具 - + Loader:兼容 Percona 的 mydumper 数据格式,提供多线程导入、出错重试、断点续传等功能,并且针对 TiDB 有优化 - + 开发完成一键部署工具 ++ Loader:兼容 Percona 的 mydumper 数据格式,提供多线程导入、出错重试、断点续传等功能,并且针对 TiDB 有优化 ++ 开发完成一键部署工具 diff --git a/dev/releases/rc3.md b/dev/releases/rc3.md index 6b57c34fdd89..8e7f92da528f 100644 --- a/dev/releases/rc3.md +++ b/dev/releases/rc3.md @@ -41,7 +41,7 @@ category: Releases - 通过 Key 获取 Region 信息 - 添加、删除 scheduler 和 operator - 获取集群 label 信息 - + ## TiKV + 支持 Async Apply 提升整体写入性能 diff --git a/dev/releases/rc4.md b/dev/releases/rc4.md index f2b42b956fa7..fb4e0eeea71c 100644 --- a/dev/releases/rc4.md +++ b/dev/releases/rc4.md @@ -8,7 +8,7 @@ category: Releases 2017 年 8 月 4 日,TiDB 正式发布 RC4 版。该版本对 MySQL 兼容性、SQL 优化器、系统稳定性、性能做了大量的工作。性能方面重点优化了写入速度,计算任务调度支持优先级,避免分析型大事务影响在线事务。SQL 优化器全新改版,查询代价估算更加准确,且能够自动选择 Join 物理算子。功能方面进一步 MySQL 兼容性。 同时为了更好的支持 OLAP 业务,开源了 TiSpark 项目,可以通过 Spark 读取和分析 TiKV 中的数据。 -## TiDB: +## TiDB + SQL 查询优化器重构 - 更好的支持 TopN 查询 @@ -22,7 +22,7 @@ category: Releases + 支持 Json 类型及其操作 + 支持查询优先级、隔离级别的设置 -## PD: +## PD + 支持通过 PD 设置 TiKV location labels + 调度优化 @@ -31,7 +31,7 @@ category: Releases - 优化 balance 算法 + 优化数据加载,加快 failover 速度 -## TiKV: +## TiKV + 支持查询优先级设置 + 支持 RC 隔离级别 @@ -40,9 +40,9 @@ category: Releases + Coprocessor 支持更多下推函数 + 提升性能,提升稳定性 -## TiSpark Beta Release: - +## TiSpark Beta Release + + 支持谓词下推 + 支持聚合下推 + 支持范围裁剪 -+ 通过 TPC-H 测试 (除去一个需要 View 的 Query) \ No newline at end of file ++ 通过 TPC-H 测试 (除去一个需要 View 的 Query) diff --git a/dev/roadmap.md b/dev/roadmap.md index 256cc7c42f3a..ce28652dced4 100644 --- a/dev/roadmap.md +++ b/dev/roadmap.md @@ -5,7 +5,7 @@ category: Roadmap # TiDB 路线图 -## TiDB: +## TiDB - [ ] 优化器 - [ ] 统计信息优化 @@ -37,7 +37,7 @@ category: Roadmap - [ ] 支持白名单插件 - [ ] 支持审计日志插件 - [ ] 支持 RBAC 插件 - - [ ] 支持诊断插件 + - [ ] 支持诊断插件 - [ ] 支持 Query Tracing - [ ] 支持行列混合存储引擎 - [ ] 支持 New Storage Row Format,提升性能并减小内存占用 @@ -48,7 +48,7 @@ category: Roadmap - [ ] 改善模型,降低延迟 - [ ] 支持最小事务 (like the mini-transaction of InnoDB) -## TiKV: +## TiKV + Raft - [x] Region Merge - 合并小的 Region 以减少开销 @@ -77,7 +77,7 @@ category: Roadmap - [ ] 提供 Rust 版本的 TiKV client - [ ] gRPC 消息批量化 - 减少消息交互的开销 -## PD: +## PD - [x] Namespace 完善 - [x] 不同 Namespace 或者 Table 配置不同的副本策略 @@ -86,14 +86,14 @@ category: Roadmap - [ ] 使用机器学习优化调度 - [ ] 优化 Region 元信息存储 - 把元信息存储在一个独立的存储引擎里 -## TiSpark: +## TiSpark - [ ] Limit/Order 下推 - [x] DAG 接口接入(废除 Select 接口) - [ ] Index Join 和并行 merge join - [ ] Data Federation(桥接其他数据源,最好能和社区同步,这个接进来可以比较好扩展 Usecase,如果再做一个 InputFormat 适配就可以接 Hive 和 Presto 这些 Hadoop 上的数仓) -## Tools: +## Tools - [x] 集群部署工具 - [X] 高性能数据导入工具(lightning) diff --git a/dev/tispark/tispark-quick-start-guide_v1.x.md b/dev/tispark/tispark-quick-start-guide_v1.x.md index 3047f460890e..03040610889c 100644 --- a/dev/tispark/tispark-quick-start-guide_v1.x.md +++ b/dev/tispark/tispark-quick-start-guide_v1.x.md @@ -9,12 +9,12 @@ category: tispark ## 部署信息 -- Spark 默认部署在 TiDB 实例部署目录下 spark 目录中 -- TiSpark jar 包默认部署在 Spark 部署目录 jars 文件夹下: +- Spark 默认部署在 TiDB 实例部署目录下 spark 目录中 +- TiSpark jar 包默认部署在 Spark 部署目录 jars 文件夹下: spark/jars/tispark-SNAPSHOT-jar-with-dependencies.jar -- TiSpark sample data 及导入脚本默认部署在 TiDB-Ansible 目录下: +- TiSpark sample data 及导入脚本默认部署在 TiDB-Ansible 目录下: tidb-ansible/resources/bin/tispark-sample-data @@ -22,7 +22,7 @@ category: tispark ### 在 TiDB 实例上安装 JDK -在 [Oracle JDK 官方下载页面 ](http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html) 下载 JDK 1.8 当前最新版,本示例中下载的版本为 `jdk-8u141-linux-x64.tar.gz`。 +在 [Oracle JDK 官方下载页面](http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html) 下载 JDK 1.8 当前最新版,本示例中下载的版本为 `jdk-8u141-linux-x64.tar.gz`。 解压并根据你的 JDK 部署目录设置环境变量, 编辑 `~/.bashrc` 文件,比如: @@ -185,4 +185,4 @@ scala> spark.sql( -----------------+---------+------------+--------+-----------+ ``` -更多样例请参考 https://github.com/ilovesoup/tpch/tree/master/sparksql。 +更多样例请参考 [https://github.com/ilovesoup/tpch/tree/master/sparksql](https://github.com/ilovesoup/tpch/tree/master/sparksql)。 diff --git a/dev/tispark/tispark-user-guide_v1.x.md b/dev/tispark/tispark-user-guide_v1.x.md index b2d704ecfef8..a96f89686780 100644 --- a/dev/tispark/tispark-user-guide_v1.x.md +++ b/dev/tispark/tispark-user-guide_v1.x.md @@ -36,11 +36,11 @@ TiSpark 可以在 YARN,Mesos,Standalone 等任意 Spark 模式下运行。 对于 TiKV 与 TiSpark 分开部署的场景,可以参考如下建议配置: -+ 硬件配置建议 ++ 硬件配置建议 普通场景可以参考 [TiDB 和 TiKV 硬件配置建议](/how-to/deploy/hardware-recommendations.md),但是如果是偏重分析的场景,可以将 TiKV 节点增加到至少 64G 内存。 -+ TiKV 参数建议 ++ TiKV 参数建议 ```toml [server] @@ -133,7 +133,9 @@ cd $SPARKPATH 类似地,可以用如下命令启动 Spark-Slave 节点: - ./sbin/start-slave.sh spark://spark-master-hostname:7077 +```bash +./sbin/start-slave.sh spark://spark-master-hostname:7077 +``` 命令返回以后,即可通过刚才的面板查看这个 Slave 是否已经正确地加入了 Spark 集群。在所有 Slave 节点重复刚才的命令。确认所有的 Slave 都可以正确连接 Master,这样你就拥有了一个 Standalone 模式的 Spark 集群。 @@ -175,10 +177,10 @@ spark.sql("select count(*) from lineitem").show ## TiSpark FAQ -- Q. 是独立部署还是和现有 Spark/Hadoop 集群共用资源? +- Q. 是独立部署还是和现有 Spark/Hadoop 集群共用资源? - A. 可以利用现有 Spark 集群无需单独部署,但是如果现有集群繁忙,TiSpark 将无法达到理想速度。 + A. 可以利用现有 Spark 集群无需单独部署,但是如果现有集群繁忙,TiSpark 将无法达到理想速度。 -- Q. 是否可以和 TiKV 混合部署? +- Q. 是否可以和 TiKV 混合部署? - A. 如果 TiDB 以及 TiKV 负载较高且运行关键的线上任务,请考虑单独部署 TiSpark;并且考虑使用不同的网卡保证 OLTP 的网络资源不被侵占而影响线上业务。如果线上业务要求不高或者机器负载不大,可以考虑与 TiKV 混合部署。 + A. 如果 TiDB 以及 TiKV 负载较高且运行关键的线上任务,请考虑单独部署 TiSpark;并且考虑使用不同的网卡保证 OLTP 的网络资源不被侵占而影响线上业务。如果线上业务要求不高或者机器负载不大,可以考虑与 TiKV 混合部署。 diff --git a/v2.1/how-to/get-started/local-cluster/install-from-docker-compose.md b/v2.1/how-to/get-started/local-cluster/install-from-docker-compose.md index 93af97c72ede..ed64c6e104d7 100644 --- a/v2.1/how-to/get-started/local-cluster/install-from-docker-compose.md +++ b/v2.1/how-to/get-started/local-cluster/install-from-docker-compose.md @@ -59,7 +59,7 @@ category: how-to ``` 如果是 Mac 系统,也可以通过 Homebrew 安装: - + ``` brew install kubernetes-helm ```