星辰考古:TiDB v4.0 进化前夜

news2024/9/19 11:10:32
alt

@

  • 前情回顾
  • TiDB v4 时间线
  • TiDB v4 新特性
    • TiDB
    • TiKV
    • PD
    • TiFlash
    • TiCDC
  • TiDB v4 兼容性变化
    • TiDB
    • TiKV
    • PD
    • 其他
  • TiDB 社区互助升级活动
  • TiDB 3.0.20 升级到 4.0.16
    • 注意事项
    • 升级速览
    • 直观变化
  • 总结
  • 素材来源
  • 🌻 往期精彩 ▼

前情回顾

在前面的章节中,我们共同梳理了 TiDB v1/v2/v3 的相关内容。

  • 星辰考古:TiDB v1.0 再回首
  • 星辰考古:TiDB v2.x 回忆杀
  • 星辰考古:TiDB v3.x 忆水木

本节将继续讨论 TiDB v4.0 大版本,在该版本中 TiDB 集群架构没有太大变化,不过 TiFlash 重要程度进一步提升,下图为 TiDB HTAP 形态架构,其中包含 TiFlash 节点。

alt

TiDB v4 时间线

TiDB v3.x 的时间线是 2019.1--2020.12,TiDB v4.x 的时间线来到了 2020.1--2021.12

  • 2020-01-17,TiDB 4.0.0-beta 发布。
  • 2020-05-28, TiDB 4.0 GA。TiDB v4.0 在稳定性、易用性、性能、安全和功能方面进行了大量的改进。
  • 2020-12-21,TiDB 4.0.9 发布。
  • 2021-01-15,TiDB 4.0.10 发布。
  • 2021-12-17, TiDB 4.0.16 发布,这是 TiDB v4 系列的最后一个小版本。

20 年共发布 16 个小版本,21 年共发布 7 个小版本。

alt (TiDB v4.0 与 v3.0 的 TPC-C 性能测试对比图)

alt (TiDB v4.0 与 v3.0 的 TPC-H 性能测试对比图)

TiDB v4 新特性

TiDB v4 引入 70 余项重要新特性,以下是几项关键功能:

热点调度支持更多维度。热点调度在决策时,除了根据写入/读取流量作为调度依据外,新引入 key 的维度。可以很大程度改善原有单一维度决策造成的 CPU 资源利用率不均衡的问题。

TiFlash 是 TiDB 为完善 Realtime HTAP 形态引入的关键组件,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。

注: TiFlash 是 TiDB 生态中的核心组件,从 TiDB 3.1 引入,于 22.04.01 正式开源,随 4.0 正式 GA。

TiDB Dashboard:DBA 通过 TiDB Dashboard UI 可以快速了解集群的集群拓扑、配置信息、日志信息、硬件信息、操作系统信息、慢查询信息、SQL 访问信息、诊断报告信息等,帮助 DBA 通过 SQL 快速了解、分析系统的各项指标。

alt (TiDB 热力图,来源:https://asktug.com/t/topic/813071)

TiUP 是 4.0 版本中新推出的包管理器的工具,主要用于管理 TiDB 生态内的所有的包,提供组件管理、本地部署、集群管理、镜像管理、离线部署、性能测试等功能,将安装、部署、运维 TiDB 工具化,提升 DBA 部署、运维 TiDB 的效率。

悲观事务正式 GA 并作为默认事务模式提供,支持 Read Committed 隔离级别以及 SELECT FOR UPDATE NOWAIT 语法。

支持大事务,最大事务限制由 100 MB 提升到了 10 GB,同时支持乐观事务和悲观事务。

TiCDC 从 v4.0.6 起成为正式功能,可用于生产环境。TiCDC 是一款通过拉取 TiKV 变更日志实现的 TiDB 增量数据同步工具,具有将数据还原到与上游任意 TSO 一致状态的能力,同时提供开放数据协议 (TiCDC Open Protocol),支持其他系统订阅数据变更。

alt (TiCDC 架构图)

alt (TiCDC 集群及节点内部组件的设计图)

下面按 TiDB, TiKV, PD, TiFlash, TiCDC 组件分别摘录了部分重要新特性,以供参考。

TiDB

  • 新增 SQL Binding 的自动捕获和自动演进功能 #13199 #12434
  • information_schema.tables 表新增 TIDB_ROW_ID_SHARDING_INFO 列,输出列的 RowID 打散相关的信息(例如:表 A 指定 SHARD_ROW_ID_BITS,该列的值为 "SHARD_BITS={bit_number}") #13418
  • 支持在 CREATE TABLE 语句中指定 auto_random 选项 #16813
  • AUTO RANDOM 被移出实验特性并正式 GA (TiDB 4.0.3)
  • 支持将列属性 AUTO_INCREMENT 变更为 AUTO_RANDOM #24608
  • 新增 DDLJobs 系统表,用于查询 DDL 任务详细信息 #14837
  • 新增 Sequence 功能 #14731 #14589 #14674 #14442
  • 新增大小写不敏感的排序规则,用户可在新集群上启用 utf8mb4_general_ci 和 utf8_general_ci #33
  • 支持 uft8_unicode_ci 和 utf8mb4_unicode_ci 排序规则 #22558
  • 增强 RECOVER TABLE 语法,现在该语法支持恢复被 Truncate 的表 #15398
  • 新增 Flashback 命令,支持恢复被 Truncate 的表。
  • 新增 SQL 语法 BACKUP/RESTORE 来进行数据备份恢复 #15274 #16960
  • 支持 show table partition regions 语法 #17294
  • 支持新增分区时自动分裂 Region 的功能 #17665
  • 新增动态修改、更新配置项的功能,配置项由 PD 持久化存储 #14750 #14303 #14830
  • 支持使用 SHOW CONFIG 语法显示 PD 和 TiKV 的配置 #16475
  • 支持 SET CONFIG 语句进行 PD/TiKV 节点配置修改 #16853
  • 新增系统自动根据负载均衡策略从不同角色上读取数据的功能,且新增 leader-and-follower 系统变量用于控制开启此功能 #14761
  • 默认打开 Coprocessor cache #16710
  • 默认打开 tidb_allow_batch_cop #18552
  • 默认打开执行信息的收集 #18518
  • 支持会话和全局变量 sql_select_limit #17604
  • 添加 txn-entry-size-limit 配置项,用于限制事务中单个 key-value 记录的大小 #21843
  • 在 v4.0 中将 tidb_multi_statement_mode 的默认值从 WARN 更改为 OFF。建议使用客户端库的多语句功能。#25749
  • 支持在 INSERT 语句中使用 MEMORY_QUOTA() hint #18101
  • 支持在广播 Join 中使用外连接 #19664
  • 对于自动提交语句的重试转换到悲观锁模式 #19796
  • 使用标准错误替换 TiDB 中的错误码和错误信息 #19888
  • 支持接受来自 MySQL 8.0 客户端的连接 #19959
  • Grafana 面板支持多集群 #22534
  • Grafana 升级到 v7.5.11 以解决安全漏洞

TiKV

  • 升级 RocksDB 的版本到 6.4.6
  • 新增从 Follower 副本读取数据的功能
  • 支持将动态修改配置的结果持久化存储到硬盘 #6684
  • 支持基于负载的 Region split #7623
  • 为错误定义错误码 #8387
  • 支持日志输出为 JSON 格式 #8382

注: TiDB 3.0.20 中内置 RocksDB v5.18.3,升级到 TiDB 4.0.16 后, RocksDB 版本升级到 v6.4.6。 在作者的印象中,PingCAP 从不避讳使用了开源组件,如 RocksDB, etcd, ClickHouse 等。 TiDB 源于开源,拥抱开源,贡献开源,海纳百川,与世界开发者协同科技创新。 本文只讨论 TiDB 相关技术内容,就不提套壳、马甲、超过 100% 兼容之类的事情了。

PD

  • 新增根据存储节点负载信息优化热点调度的功能
  • 新增 Placement Rules 功能,通过组合不同的调度规则,精细控制任意一段数据的副本的数量、存放位置、存储主机类型、角色等信息
  • 新增通过 UI 访问集群热点数据分布功能 #2086
  • member API 返回信息新增部署路径和组件版本信息 #2130
  • pd-ctl 新增 component 命令用于修改、查看组件配置信息 (experimental) #2092
  • 支持将动态修改配置的结果持久化存储到硬盘 #2153
  • 移除 config manager 以使其它组件自行控制它们的配置 #2349
  • 支持 JSON 格式日志 #2565
  • PD 客户端中添加 GetAllMembers 函数,用于获取 PD 成员信息 #2980
  • 添加了配置项 enable-redact-log,可以设置将日志中的用户数据脱敏 #3266

TiFlash

  • 存储引擎中的粗糙索引默认开启
  • 支持运行在 ARM 架构
  • 在 TiFlash 中支持在广播 Join 中使用外连接
  • 支持 CAST 函数下推
  • 添加了配置项 security.redact_info_log,可以设置将日志中的用户数据脱敏
  • 新增工具用于检测当前 tiflash replica 的状态

TiCDC

自 v4.0.6 起,TiCDC 成为正式功能,可用于生产环境

  • 支持通过 cdc cli 来管理同步任务 (changefeed) #546
  • 支持输出 maxwell 格式的数据 #869
  • 为 maxwell 协议默认开启 old value 特性 #1144
  • 支持快照级别一致性复制 #932
  • 默认启用 unified sorter 特性 #1230
  • 在 capture 元信息中添加版本信息和在 changefeed 元信息中创建该 changefeed 的 CLI 版本 #1342
  • 若任务的暂停同步时间超过 1 天,再次启动该任务时需要二次确认 #1497
  • 遇到无法恢复的 DML 错误立即退出,不进行重试 #1724
  • 为 EtcdWorker 添加 tick 频率限制,防止 PD 的 etcd 写入次数过于频繁影响 PD 服务 #3112

TiDB v4 兼容性变化

TiDB

  • 修改配置项 log.enable-slow-log 的类型,由整数型改为布尔类型 #14864
  • 调整修改系统表 mysql.userpassword 列名为 authentication_string,与 MySQL 5.7 保持一致( 该变动会导致升级后不能回退) #14598
  • txn-total-size-limit 配置项的默认值由 1GB 调整为 100MB #14522
  • 新增动态修改、更新配置项的功能,配置项由 PD 持久化存储 #14750 #14303 #14830
  • tidb-server 状态端口被占用时由原来打印一条告警日志改成拒绝启动 #15177
  • 去掉了特别为开启 Binlog 时定义的事务容量上限 (100 MB),现在事务的容量上限统一为 10 GB,但若开启 Binlog 且下游是 Kafka,由于 Kafka 消息大小的限制是 1 GB,请根据情况调整 txn-total-size-limit 配置参数 #16941
  • 移除慢查询日志和 statement summary 表中的敏感信息 #18130
  • 禁止在 sequence 缓存中出现负数 #18103
  • CLUSTER_INFO 表中不再显示 tombstone 状态的 TiKV 和 TiFlash 节点 #17953
  • 诊断规则 current-load 变更为 node-check #17660
  • 修改 drop partitiontruncate partition 的参数 #18930
  • add partition 操作添加状态检查 #18865
  • 废弃配置文件中 enable-streaming 配置项 #21055
  • 以下 Bug 修复涉及执行结果变化,可能引起兼容性变化:
    • 修复了 greatest(datetime) union null 返回空字符串的问题 #26532
    • 修复了 having 可能执行错误的问题 #26496
    • 修复了当 between 表达式两边的 collation 不一致会导致查询结果错误的问题 #27146
    • 修复了 extract 函数的参数是负数时查询结果错误的问题 #27236
    • 修复了当 group_concat 函数包含非 bin 的 collation 时查询结果错误的问题 #27429
    • 修复将 Apply 算子转为 Join 时漏掉列信息的问题 #27233
    • 修复将非法字符串转为 DATE 类型时的非预期行为 #26762
    • 修复开启 New Collation 时多列的 count distinct 返回结果错误的问题 #27091

TiKV

  • 新增 readpool.unify-read-pool 配置项,默认值为 True,用于控制点查是否共用 Coprocessor 的处理线程
  • 调整 unify-read-pool 配置项的方式,仅在新部署的集群时默认启用,旧集群保持原来的方式 #7059
  • 默认关闭 hibernate region #7618
  • 将加密相关的配置移到 security 分类下,即调整配置项 [encryption][security.encryption] #7810
  • 减少开启加密时的 I/O 开销和锁冲突。该修改向下不兼容。如果需要降级至 v4.0.9 以下,需要将 security.encryption.enable-file-dictionary-log 配置为 false,并在降级前重启 #9195
  • 在 v4.0.16 以前,当把一个非法的 UTF-8 字符串转换为 Real 类型时会直接报错。自 v4.0.16 起,TiDB 会依照该字符串中的合法 UTF-8 前缀进行转换 #11466

注: 关于 Unnify Read Pool 的内容,我们在上文 星辰考古:TiDB v3.x 忆水木 的文末有所提及,细心的小伙伴可能已经注意到了。 这里再推荐一篇文章: TiDB 4.0 新 Feature 原理及实践:统一读线程池 https://tidb.net/blog/56f2a0cd

PD

  • 持久化 store-limit 配置项,弃用 store-balance-rate 配置 #2557

其他

  • oom-action 参数设置为 cancel 时,当查询语句触发 OOM 阈值后会被 kill 掉,升级到 4.0 版本后除了 select 语句,还可能 kill 掉 insert/update/delete 等 DML 语句。
  • 4.0 版本增加了 rename 时对表名长度的检查,长度限制为 64 个字符。升级后 rename 后的表名长度超过这个限制会报错,3.0 及之前的版本则不会报错。
  • 4.0 版本增加了对分区表的分区名长度的检查,长度限制为 64 个字符。升级后,当你创建和修改分区表时,如果分区名长度超过这个限制会报错,3.0 及之前的版本则不会报错。
  • 4.0 版本对 explain 执行计划的输出格式做了改进,需要注意是否有针对 explain 制订了自动化的分析程序。
  • 4.0 版本支持 Read Committed 隔离级别。升级到 4.0 后,在悲观事务里隔离级别设置为 READ-COMMITTED 会生效,3.0 及之前的版本则不会生效。
  • 4.0 版本执行 alter reorganize partition 会报错,之前的版本则不会报错,只是语法上支持没有实际效果。
  • 4.0 版本创建 linear hash partition 和 subpartition 分区表时实际不生效,会转换为普通表,之前的版本则转换为普通分区表。

TiDB 社区互助升级活动

好消息!!!

TiDB 升级互助活动,延续到9月30日!由 20 位社区版主、资深布道师及官方技术支持组成的升级导师天团为你升级保驾护航!

详情戳这里: https://asktug.com/t/topic/1025499

推荐阅读:

  • 【收藏】TiDB 版本升级最全材料包&升级指南
  • 为什么要升级 TiDB ?要选什么版本?要选哪种升级方案?
alt

TiDB 3.0.20 升级到 4.0.16

在上文中我们搭建了 TiDB 3.0.20 作为 PoC 环境,本文基于此环境升级到 4.0.16 版本。

注意事项

  1. 从 TiDB 3.0 开始已经支持使用 TiUP 管理集群,如果你还在使用 TiDB Ansible,需先使用 TiUP 纳管集群,参考 tiup cluster import
  2. TiDB 目前暂不支持版本降级或升级后回退。如需将 3.0 之前的版本升级到最新 LTS 版本,需先升级到 TiDB 4.0,再进行后续升级操作。
  3. 升级前,需确认集群中没有正在运行的 DDL 操作,且升级过程中,也要避免 DDL 请求。
  4. TiDB 4.0 新增了排序规则支持框架,由参数 new_collations_enabled_on_first_bootstrap 控制,该参数默认关闭,但需注意,从 TiDB v6 开始该参数默认开启,更多内容可参考: TiDB 6.x 新特性解读 | Collation 规则

升级速览

  1. 升级前,检查集群状态。
[root@tidb1 ~]# tiup cluster display mytidb
Cluster type:       tidb
Cluster name:       mytidb
Cluster version:    v3.0.20
Deploy user:        tidb
SSH type:           builtin
Grafana URL:        http://192.0.2.86:3000
ID                Role          Host        Ports        OS/Arch       Status  Data Dir                      Deploy Dir
--                ----          ----        -----        -------       ------  --------                      ----------
192.0.2.86:9093   alertmanager  192.0.2.86  9093/9094    linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
192.0.2.86:3000   grafana       192.0.2.86  3000         linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
192.0.2.81:2379   pd            192.0.2.81  2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.82:2379   pd            192.0.2.82  2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.83:2379   pd            192.0.2.83  2379/2380    linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.86:9090   prometheus    192.0.2.86  9090         linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
192.0.2.81:4000   tidb          192.0.2.81  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.0.2.82:4000   tidb          192.0.2.82  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.0.2.81:20160  tikv          192.0.2.81  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.0.2.82:20160  tikv          192.0.2.82  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.0.2.83:20160  tikv          192.0.2.83  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
Total nodes: 11
  1. 在中控节点执行升级。
[root@tidb1 ~]# time tiup cluster upgrade mytidb v4.0.16 --force --wait-timeout 600
Before the upgrade, it is recommended to read the upgrade guide at https://docs.pingcap.com/tidb/stable/upgrade-tidb-using-tiup and finish the preparation steps.
This operation will upgrade tidb v3.0.20 cluster mytidb to v4.0.16:
will upgrade and restart component "                 pd" to "v4.0.16",
will upgrade and restart component "               tikv" to "v4.0.16",
will upgrade and restart component "               tidb" to "v4.0.16",
...
Do you want to continue? [y/N]:(default=N) y
Upgrading cluster...
+ [ Serial ] - Download: component=tidb, version=v4.0.16, os=linux, arch=amd64
+ [ Serial ] - BackupComponent: component=tidb, currentVersion=v3.0.20, remote=192.0.2.81:/tidb-deploy/tidb-4000
+ [ Serial ] - CopyComponent: component=tidb, version=v4.0.16, remote=192.0.2.81:/tidb-deploy/tidb-4000 os=linux, arch=amd64
+ [ Serial ] - InitConfig: cluster=mytidb, user=tidb, host=192.0.2.81, path=/root/.tiup/storage/cluster/clusters/mytidb/config-cache/tidb-4000.service, deploy_dir=/tidb-deploy/tidb-4000, data_dir=[], log_dir=/tidb-deploy/tidb-4000/log, cache_dir=/root/.tiup/storage/cluster/clusters/mytidb/config-cache
deploy monitored
refresh monitored config
+ [ Serial ] - UpgradeCluster
Upgrading component pd
Upgrading component tikv
Upgrading component tidb
 Restarting instance 192.0.2.81:4000
 Restart instance 192.0.2.81:4000 success
Upgrading component prometheus
Upgrading component grafana
Upgrading component alertmanager
Stopping component node_exporter
Stopping component blackbox_exporter
Starting component node_exporter
Starting component blackbox_exporter
Upgraded cluster `mytidb` successfully
  1. 升级完成后,检查集群状态。

这里可以看到新增的 UI Dashboard 运行在 83 节点上。

[root@tidb1 ~]# tiup cluster display mytidb
Cluster type:       tidb
Cluster name:       mytidb
Cluster version:    v4.0.16
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://192.0.2.83:2379/dashboard
Grafana URL:        http://192.0.2.86:3000
ID                Role          Host        Ports        OS/Arch       Status  Data Dir                      Deploy Dir
--                ----          ----        -----        -------       ------  --------                      ----------
192.0.2.86:9093   alertmanager  192.0.2.86  9093/9094    linux/x86_64  Up      /tidb-data/alertmanager-9093  /tidb-deploy/alertmanager-9093
192.0.2.86:3000   grafana       192.0.2.86  3000         linux/x86_64  Up      -                             /tidb-deploy/grafana-3000
192.0.2.81:2379   pd            192.0.2.81  2379/2380    linux/x86_64  Up|L    /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.82:2379   pd            192.0.2.82  2379/2380    linux/x86_64  Up      /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.83:2379   pd            192.0.2.83  2379/2380    linux/x86_64  Up|UI   /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.86:9090   prometheus    192.0.2.86  9090         linux/x86_64  Up      /tidb-data/prometheus-9090    /tidb-deploy/prometheus-9090
192.0.2.81:4000   tidb          192.0.2.81  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.0.2.82:4000   tidb          192.0.2.82  4000/10080   linux/x86_64  Up      -                             /tidb-deploy/tidb-4000
192.0.2.81:20160  tikv          192.0.2.81  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.0.2.82:20160  tikv          192.0.2.82  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
192.0.2.83:20160  tikv          192.0.2.83  20160/20180  linux/x86_64  Up      /tidb-data/tikv-20160         /tidb-deploy/tikv-20160
Total nodes: 11
  1. 连接 tidb-server 查看版本信息。
[root@tidb1 ~]# tidb
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25-TiDB-v4.0.16 TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(root@127.1) [(none)] 00:28:36> select version(), tidb_version()\G
*************************** 1. row ***************************
     version(): 5.7.25-TiDB-v4.0.16
tidb_version(): Release Version: v4.0.16
Edition: Community
Git Commit Hash: 75f81d2d7faae72575c4e471ec0b96756796284a
Git Branch: heads/refs/tags/v4.0.16
UTC Build Time: 2021-12-02 04:17:32
GoVersion: go1.13
Race Enabled: false
TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
Check Table Before Drop: false
1 row in set (0.00 sec)

直观变化

  1. 默认 Schema 新增 METRICS_SCHEMA

它是基于 Prometheus 中 TiDB 监控指标的一组视图。每个表的 PromQL(Prometheus 查询语言)的源均可在 INFORMATION_SCHEMA.METRICS_TABLES 表中找到。

  1. TiDB 状态端口输出信息增加。
[root@tidb1 ~]# curl -s localhost:10080/info | jq
{
  "is_owner"true,
  "max_procs": 2,     <-- New!
  "gogc": 100,      <-- New!
  "version""5.7.25-TiDB-v4.0.16",
  "git_hash""75f81d2d7faae72575c4e471ec0b96756796284a",
  "ddl_id""0d3ad6f4-5932-494e-8285-1c702390151a",
  "ip""192.0.2.81",
  "listening_port": 4000,
  "status_port": 10080,
  "lease""45s",
  "binlog_status""Off",
  "start_timestamp": 1720456032  <-- New!
}
  1. ROOT 用户权限增加。

TiDB v3.0.20 中 ROOT 用户默认权限 25 项,升级后,TiDB v4.0.16 中有 28 项,新增三个权限。

RELOAD
FILE
CONFIG

TiDB v4 系列的新功能、兼容性变化介绍,以及升级演示就到这里了。

总结

依惯例,我们再看下 TiDB v4 时期(2020-2021) 的几件重要事情:

  • 2020.03,教大家从零到一写分布式数据库的 Talent Plan Courses 正式发布
  • 2020.05,电子书《 TiDB in Action 4.0》由 102 作者在 48 小时内完稿并上线,目录: https://book.tidb.io/SUMMARY.html
  • 2020.09,PingCAP 团队的论文《TiDB: A Raft-based HTAP Database 》入选 VLDB 2020 ,成为业界第一篇 Real-time HTAP 分布式数据库工业实现的论文
  • 2020.10,TiDB 培训认证项目两周年,TiDB 4.0 PCTA/PCTP 认证项目上线
  • 2020.11,完成 2.7 亿美元的 D 轮融资
  • 2020.12,TiDB 通过信通院分布式数据库性能与基础能力两项评测
  • 2020.12,TiDB 社区 AskTUG 成员突破 5300 人,27 人获得 MVA 荣誉称号
  • 2021.01,PingCAP 连续两年在 CNCF 全球贡献排行榜中位列中国企业第一位,全球排名第 6 位
  • 2021.04,面向企业级核心场景的 TiDB 5.0 GA 发版
alt

如果用一个词来总结 TiDB 1.0 到 4.0 的这 6 年,一定是“创业维艰”。国产基础软件领域,尤其是数据库赛道,国内长年使用国际领先的商业软件或国际通用的开源软件,在一片红海中从零全新打造国产数据库,推行商用,投产几百家客户的生产环境,并得到资本市场的认可,这是国产基础软件的骄傲。

alt

【星辰考古】系列的四个章节就到这里。

下一期,我们开启新篇章,【星辰往事】,共同讨论 TiDB v5.x/v6.x 的内容。

素材来源

本文素材来自 PingCAP 官方网站及网络,包括但不局限于:

  • https://asktug.com/
  • https://tidb.net/blog
  • https://docs-archive.pingcap.com/tidb/v4.0/overview

#tidb #pingcap #htap #国产数据库

🌻 往期精彩 ▼

  • [Oracle]
    • Oracle 数据库全面升级为 23ai
    • python-oracledb 已率先支持 Oracle 23ai
    • 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
  • [MySQL]
    • MySQL 9.0 的 VECTOR 文档更新
    • MySQL 9.0.0 新鲜出炉!支持向量类型
    • 「合集」MySQL 8.x 系列文章汇总
    • 如何选择适合的 MySQL Connector/J 版本
  • [TiDB]
    • 星辰考古:TiDB v3.x 忆水木
    • 星辰考古:TiDB v2.x 回忆杀
    • 敢于公布BUG的国产数据库才是好数据库
  • [PG]
    • [RL9] Rocky Linux 9.4 搭载 PG 16.1
    • 即将告别PG 12,建议升级到PG 16.3版本
    • 后 EL 7 时代,PG 16 如何在 CentOS 7 上运行

-- / END / --

👉 这里可以找到我

  • 微信公众号: 少安事务所
  • 墨天轮: 严少安
  • PGFans: 严少安
  • ITPUB: 少安事务所
  • TiDB 专栏: @ShawnYan

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1918676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ARM】CCI缓存一致性整理

目录 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置​编辑 3.CCI500内部结构​编辑 4.功能描述 1.CCI500提供的功能 2.CCI500在SOC系统中所处的位置 3.CCI500内部结构 Transaction Tracker&#xff08;TT&#xff09;是用来解决一致性和ordering问题的&#xff0c;它…

光伏仿真系统推荐

在全球能源转型和绿色能源发展的背景下&#xff0c;光伏行业作为重要的绿色能源组成部分&#xff0c;其智能化、数字化的发展显得尤为关键。光伏仿真系统作为提升光伏项目设计、运维效率的重要工具&#xff0c;在行业中扮演着不可或缺的角色。在众多光伏仿真系统中&#xff0c;…

构建工具webpackvite

1. webpack 使用步骤: 1.初始化项目yarn init -y&#xff08;也可以是npm其他包管理工具&#xff09; 2.安装依赖webpack webpack-cli&#xff1a;yarn add -D webpack webpack-cli&#xff08;-D是只用于开发时候加&#xff09; 3.在项目中创建src目录&#xff0c;然后编写代…

mov视频怎么改成mp4?把mov改成MP4的四个方法

mov视频怎么改成mp4&#xff1f;选择合适的视频格式对于确保内容质量和流通性至关重要。尽管苹果公司的mov格式因其出色的视频表现备受赞誉&#xff0c;但在某些情况下&#xff0c;它并非最佳选择&#xff0c;因为使用mov格式可能面临一些挑战。MP4格式在各种设备&#xff08;如…

Suricata引擎二次开发之命中规则定位

二开背景 suricata是一款高性能的开源网络入侵检测防御引擎&#xff0c;旨在检测、预防和应对网络中的恶意活动和攻击。suricata引擎使用多线程技术&#xff0c;能够快速、准确地分析网络流量并识别潜在的安全威胁&#xff0c;是众多IDS和IPS厂商的底层规则检测模块。 前段时间…

Python精神病算法和自我认知异类数学模型

&#x1f3af;要点 &#x1f3af;空间不确定性和动态相互作用自我认知异类模型 | &#x1f3af;精神病神经元算法推理 | &#x1f3af;集体信念催化个人行动力数学模型 | &#x1f3af;物种基因进化关系网络算法 | &#x1f3af;电路噪声低功耗容错解码算法 &#x1f4dc;和-…

下载设计免抠元素,就上这6个网站,免费下载!

寻找免费PNG免抠素材网站是创意设计者们探索的重要一环。这些网站提供了丰富的PNG格式素材&#xff0c;去除了背景&#xff0c;方便在不同项目中使用。精心挑选了6个免费PNG免抠素材网站&#xff0c;它们提供了高品质的素材资源&#xff0c;无论是个人设计还是商业项目&#xf…

Jetson-AGX-Orin 非docker环境源码编译安装CyberRT

Jetson-AGX-Orin 非docker环境源码编译安装CyberRT 1、安装依赖 sudo apt update sudo apt-get install g gdb gcc cmake sudo apt install libpoco-dev uuid-dev libncurses5-dev python3-dev python3-pip python3 -m pip install protobuf3.14.02、下载CyberRT源码 git cl…

从0开始的STM32HAL库学习4

对射式红外传感器计数复现 配置工程 我们直接复制oled的工程&#xff0c;但是要重命名。 将PB14设置为中断引脚 自定义命名为sensorcount 设置为上升沿触发 打开中断 配置NVCI 都为默认就可以了 修改代码 修改stm32f1xx_it.c 文件 找到中断函数并修改 void EXTI15_10_I…

mp3文件导入音乐乱码

在网上下载了beyond的mp3文件&#xff0c;发现看起来没问题&#xff0c;一旦加入到音乐软件就会乱码&#xff0c;看起来说因为音乐文件加载到元数据 思路参考了这个文章 解决Mac电脑音乐显示歌名的乱码问题_音频文件乱码-CSDN博客 不过这个只能解决名称乱码&#xff0c;我发…

Kodcloud可道云安装与一键发布上线实现远程访问详细教程

文章目录 1.前言2. Kodcloud网站搭建2.1. Kodcloud下载和安装2.2 Kodcloud网页测试 3. cpolar内网穿透的安装和注册4. 本地网页发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6.结语 1.前言 本文主要为大家介绍一款国人自研的在线Web文件管理器可道云&#xff0c;…

前端新手小白的React入坑指南

有个小伙伴跟我说&#xff0c;已经毕业了&#xff0c;开始实习了。但公司现在用的还是Vue&#xff0c;领导说是过段时间让他用React做项目&#xff0c;先自己学习起来。 我给他找了一些文档&#xff0c;顺便着呢&#xff0c;反正自己也写博客&#xff0c;自己也写一份吧&#x…

共集电极放大器+共基极放大器+放大器参数总结+单片机(全局/静态/动态变量+LED点阵初识+点亮LED并显示图形)

2024-7-11&#xff0c;星期四&#xff0c;18:38&#xff0c;天气&#xff1a;雨&#xff0c;心情&#xff1a;晴。终于下雨了&#xff0c;感受到了久违的凉爽&#xff0c;没有什么特殊的事情发生&#xff0c;继续学习啦&#xff0c;加油加油&#xff01;&#xff01;&#xff0…

君子签电子合同推动企业人事管理变革,降本提效

在日益复杂的人力资源管理领域&#xff0c;合同签署与管理成为HR面临的一大挑战。面对庞大的合同量、繁琐的审批流程、频繁的岗位变动以及离职时的合同管理难题&#xff0c;传统方式已难以满足高效、安全、合规的需求。 君子签针对HR面临的挑战和需求&#xff0c;打造智能合同…

如何定量选择孔销基准?-DTAS来帮你!

在当今快速发展的工程领域&#xff0c;公差仿真的作用日渐重要&#xff0c;在公差仿真中&#xff0c;基准体系的选择对于最终结果更是至关重要。基准体系不同可能导致仿真过程中的参数计算、误差分析以及最终的工程设计都有所不同。基准体系作为评估和比较的参照&#xff0c;直…

专业模板,轻松打造个性化产品册

​在当今竞争激烈的市场环境中&#xff0c;如何让你的产品在众多竞品中脱颖而出&#xff0c;吸引消费者的目光&#xff1f;专业模板为您提供了解决方案。通过轻松打造个性化产品册&#xff0c;让您的产品焕发出独特的魅力&#xff0c;赢得消费者的青睐。本文将结合实际案例和数…

C++中的虚函数:深入探究多态性

目录 ​编辑 引言 虚函数基础 纯虚函数与抽象类 虚函数与多态 虚析构函数 结论 引言 在C中&#xff0c;虚函数是实现多态性的关键机制&#xff0c;它允许我们编写更为灵活和可扩展的代码。通过虚函数&#xff0c;派生类可以提供不同的实现&#xff0c;而基类指针或引用…

面对频繁紧急修复,测试人员5大应对技巧!

频繁的紧急修复问题&#xff0c;经常会过多占用测试时间&#xff0c;影响正常测试周期和回归测试的完整性&#xff0c;不利于测试效率和质量的提高。因此为了更高效地处理此问题&#xff0c;测试人员可以采取以下5大策略来应对&#xff0c;以减少此类问题的发生并提高工作效率。…

王老师 linux c++ 通信架构 笔记(二)配置服务器为固定的 ip 地址、远程登录、安装 gcc g++ 与虚拟机文件夹共享

&#xff08;7&#xff09;本条目开始配置 linux 的固定 ip 地址&#xff0c;以作为服务器使用&#xff1a; 首先解释 linux 的网口编号&#xff1a; linux 命令 cd &#xff1a; change directory 改变目录。 ls &#xff1a; list 列出某目录下的文件 根目录文件名 / etc &a…

链接服务器“XX”的OLEDB访问接口“MSOLEDBSQL”返回了消息“登录超时已过期” 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 出现如下问题: 与链接服务器的测试连接失败。执行Transact-SQL 语句或批处理时发生了异常。命名管道提供程序:无法打开与SQL SERVER的链接[53]链接服务器“XX”的OLEDB访问接口“MSOLEDBSQL”返回了消息“登录超时已过期…