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

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.mzph.cn/bicheng/44991.shtml

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

相关文章

BUCK电源芯片,电气参数,极限参数,工作特性,引脚功能

概述 在应用DC-DC开关电源芯片时&#xff0c;通常需要关注以下参数&#xff0c;同步与非同步&#xff0c;输入电压&#xff0c;输入电流&#xff0c;输出电压&#xff0c;输出电流&#xff0c;输入输出电容的选择&#xff1b;mosfet选型&#xff0c;电感选型&#xff0c;功耗&a…

人工智能算法工程师(中级)课程10-PyTorch神经网络之卷积神经网络与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程10-PyTorch神经网络之卷积神经网络实战与代码详解。卷积神经网络&#xff08;CNN&#xff09;是一种广泛应用于图像识别、目标检测、视频分析等领域的深度学习模型。本文将详细介绍卷积…

vue-router history 模式下将所有资源文件js/css/img都存放在oss 利用 cdn 访问整体思路汇总

背景 我们有一个域名https://example.com&#xff0c;但是ssl证书很贵&#xff0c;搞子域名来承接新站点有点费钱&#xff0c;所以我们想用一个目录https://example.com/admin/ 来作为管理后台的站点&#xff0c;这个站点是单页面应用&#xff0c;我又想让其用history router的…

Redis基础教程(十六):Redis Stream

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

Qt常用基础控件总结—带边框的部件(QFrame和QLabel)

带边框的部件 框架控件QFrame类 QFrame类介绍 QFrame 类是带有边框的部件的基类,带边框部件的特点是有一个明显的边框,QFrame类就是用来实现边框的不同效果的(把这种效果称为边框样式),所有继承自 QFrame 的子类都可以使用 QFrame 类实现的效果。 部件通常是矩形的(其他…

谷粒商城学习笔记-18-快速开发-配置测试微服务基本CRUD功能

文章目录 一&#xff0c;product模块整合mybatis-plus1&#xff0c;引入依赖2&#xff0c;product启动类指定mapper所在包3&#xff0c;在配置文件配置数据库连接信息4&#xff0c;在配置文件中配置mapper.xml映射文件信息 二&#xff0c;单元测试1&#xff0c;编写测试代码&am…

凯中精密:下一个正丹吗?

业绩预增超十倍&#xff01; 又一匹A股业绩黑马诞生——凯中精密 近期&#xff0c;凯中精密发布2024年上半年业绩预告&#xff0c;预计净利润增速高达1068%至1402%。 从23年的209.54%到24年Q1惊人的6885.78%&#xff0c;再到24年上半年的十倍增速&#xff0c;这条业绩黑马利润…

【python算法学习2】冒泡排序的写法

目的&#xff1a;学习冒泡排序的写法 1 定义 1.1百度百科 冒泡排序_百度百科在程序设计语言中&#xff0c;排序算法主要有冒泡排序、快速排序、选择排序以及计数排序等。冒泡排序&#xff08;Bubble Sort&#xff09;是最简单和最通用的排序方法&#xff0c;其基本思想是&…

设计模式 - 最简单最有趣的方式讲述

别名《我替你看Head First设计模式》 本文以故事的形式带你从0了解设计模式&#xff0c;在其中你仅仅是一名刚入职的实习生&#xff0c;在项目中摸爬滚打。&#xff08;以没有一行真正代码的形式&#xff0c;让你无压力趣味学习&#xff09; 设计模式 策略模式观察者模式装饰者…

springboot仪器校准系统-计算机毕业设计源码51504

摘 要 随着科技的不断发展。测量设备的准确性和可靠性对于各行各业都至关重要。仪器校准系统作为确保测量设备性能的重要手段&#xff0c;已成为工业生产、科学研究、质量控制等领域不可或缺的一部分。本文对仪器校准系统进行了概述&#xff0c;探讨了校准方法、流程、特点、应…

Apache防盗链、网页压缩、网页缓存

目录 网页压缩 类型 示例 动态添加模块操作步骤 重装Apache操作步骤 网页缓存 示例 操作步骤 隐藏版本信息 操作步骤 Apache防盗链 定义 原理 配置防盗链实验环境 实验环境 本地图片盗链示例 操作步骤 防盗链示例 操作步骤 网页压缩 网站的访问速度是由多个…

following a different leader because i am not the healthiest node

源代码 解决方案&#xff1a; 手动 patronictl failover 修改切换模式从高可靠模式改成高可用模式 patronictl edit-config-synchronous_mode: true synchronous_mode: false

透明加密软件哪个好?这5款好用的加密软件尽在你眼前!

数据安全和隐私保护已成为企业和个人不可忽视的重要问题。 透明加密技术以其无需用户额外操作即可实现文件的加密和解密&#xff0c;大大提高了数据处理的便捷性和安全性。 下面小编将为您介绍五款优质的透明加密软件&#xff0c;帮助您选择最适合自己的加密工具。 1. Pg32 …

超秒集物商城打造“私域流量新策略”用消费增值破解流量困局

消费增值模式是什么?在如今这个公域流量的竞争愈发激烈的时代,流量已成为企业竞争的关键,消费增值可以帮助企业在私域流量的海洋中乘风破浪? 一、消费增值模式的引入 消费增值模式不仅仅是一种商业模式,更是一种营销策略。它鼓励消费者在享受商品或服务的同时,通过消费行为获…

KEIL5 MDK的(官网)下载安装(Win11)

一、KEIL5 MDK下载 1、Keil官网下载&#xff1a;Keil Product Downloadshttps://www.keil.com/download/product/ 支持包和破解软件和V5编译器下载链接 链接&#xff1a;https://pan.baidu.com/s/1ery0Q3FAR8_bLLlPQHSFNg?pwd9pxf 提取码&#xff1a;9pxf 选择最新版本下载&…

打造高效能“园区企业服务平台”,让企业更好更快发展!

​近年来&#xff0c;随着我国经济的快速发展&#xff0c;各地产业园区建设如火如荼&#xff0c;成为区域经济的支柱&#xff0c;如果说园区是区域经济的支柱&#xff0c;企业则是园区的血液&#xff0c;给园区带来生命力&#xff0c;为园区发展提供着动力&#xff0c;各地政府…

electron + express 实现 vue 项目客户端部署

写在前面 作为一个前端程序员&#xff0c;如何实现从前端到客户端的跨越&#xff0c;可能是一个很难实现的事。但客户需求千奇百怪&#xff0c;偶尔遇到一个非要客户端的&#xff0c;如何应对&#xff1f; 那Electron可能真是你福音。具体它有哪些功能&#xff0c;可自行官网…

向日葵IT运维节丨解决三个关键问题,搞好企业IT运维

724运维节&#xff0c;是所有运维人的节日&#xff0c;贝锐向日葵也在这一天致敬所有需要7x24小时待命的运维人&#xff0c;将这一天定为“向日葵IT运维节”&#xff0c;为广大运维人带来大量专属福利&#xff01; 724这组数字&#xff0c;折射出运维人的日常&#xff0c;即7x2…

c++多态的定义和原理

目录 1、多态的定义和实现 1.多态的构成条件 2.虚函数 3.虚函数的重写(覆盖) 4.虚函数重写的两个例外 5.c11 override和final 6.重载&#xff0c;覆盖(重写)和隐藏(重定义) 2、抽象类 概念 接口继承和实现继承 3、多态的原理 1.虚函数表 2.多态的原理 4、多继承中的虚…

MessageBox与HubSpot:企业沟通与客户管理的双重利器

今天咱们来聊聊两个超实用的工具——MessageBox和HubSpot。它们就像是你的超级助手&#xff0c;让你和客户沟通起来更顺畅&#xff0c;管理起来也更轻松。 先说说MessageBox吧 想象一下&#xff0c;你正在忙着工作&#xff0c;突然客户发来个消息&#xff0c;你嗖的一下就收到…