星辰资讯 | TiUP v1.16 发版,支持 PD 微服务

如果你对 TiDB 还不太了解,或者你对数据库安装部署的认知仍然停留在手动和脚本时代,那么,请先戳这里了解一下 TiUP 神器:

  • 震惊!数据库小白装国产数据库只需10分钟!
  • TiDB 7.x 源码编译之 TiUP 篇
  • TiUP:TiDBAer 必备利器

TiUP 1.16.0

7 月 2 日,TiUP 1.16.0 发版,更新日志如下:

新特性

  • tiup-cluster 中将 PD 部署为微服务 (#2377, @rleungx)

修复

  • 修复 tiup-cluster 横向扩展时缺少 TiProxy 会话证书的问题 (#2432, @djshow832)

改进

  • 执行 tiup-cluster prune 时删除 pd 的墓碑节点 (#2044, @nexustar)
  • 在命令执行中隐藏 -p (密码)参数 (#2425, @nexustar)
  • 升级时避免重复下载 (#2423, @nexustar)

PD 微服务

TiDB 集群的“大脑” PD (Placement Driver),是整个 TiDB 集群的元信息管理模块,负责存储每个 TiKV 节点实时的数据分布情况和集群的整体拓扑结构,提供 TiDB Dashboard 管控界面,并为分布式事务分配事务 ID。

从 TiDB 8.0.0 版本开始,PD 支持微服务模式(目前为实验特性,不建议在生产环境中使用)。

PD 微服务通常用于解决 PD 出现性能瓶颈的问题,提高 PD 服务质量。它可以避免因 PD 集群压力过大而导致的时间戳分配延迟,调度模块故障导致的服务不可用问题,以及 PD 自身单点瓶颈的问题。

微服务模式可将 PD 的时间戳分配和集群调度功能拆分为以下微服务单独部署,从而与 PD 的路由功能解耦,让 PD 专注于元数据的路由服务。

  • tso 微服务

为整个集群提供单调递增的时间戳分配。

  • scheduling 微服务

为整个集群提供调度功能,包括但不限于负载均衡、热点处理、副本修复、副本放置等。当调度模块发生变更时,你可以单独更新 scheduling 微服务,无需再对 PD 进行重启,进而不会影响集群的整体服务。

每个微服务都以独立进程的方式部署。当设置某个微服务的副本数大于 1 时,该微服务会自动实现主备的容灾模式,以确保服务的高可用性和可靠性。

功能演示:扩容 tso, scheduling 服务

升级 TiUP 到 1.16.0 版本。

[root@tidb1 ~]# tiup update --self
download https://tiup-mirrors.pingcap.com/tiup-v1.16.0-linux-amd64.tar.gz 5.03 MiB / 5.03 MiB 100.00% 2.83 MiB/s                                     
Updated successfully!
[root@tidb1 ~]# tiup -v
1.16.0 tiup
Go Version: go1.21.11
Git Ref: v1.16.0
GitHash: e543145831d44a863366ff8c379d25980730bbd1

准备 POC 集群环境,TiDB 版本为 v8.1.0。

[root@tidb1 ~]# tiup cluster display mytidb
Cluster type:       tidb
Cluster name:       mytidb
Cluster version:    v8.1.0
Deploy user:        tidb
SSH type:           builtin
Dashboard URL:      http://192.0.2.81: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|UI  /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       /tidb-data/pd-2379            /tidb-deploy/pd-2379
192.0.2.86:9090   prometheus    192.0.2.86  9090/12020   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.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: 10

编辑集群全局配置,增加 PD 微服务配置项。

tiup cluster edit-config mytidb
global:
  pd_mode: ms

应用配置后,扩容 tso 微服务,这里设定为 2 个副本,其中 1 个将为主副本,另一个为备份副本。

tso_servers:
- host: 192.0.2.82
- host: 192.0.2.83
[root@tidb1 ~]# tiup cluster scale-out mytidb ./tso.yaml -uroot -p
...
Please confirm your topology:
Cluster type:    tidb
Cluster name:    mytidb
Cluster version: v8.1.0
Role  Host        Ports  OS/Arch       Directories
----  ----        -----  -------       -----------
tso   192.0.2.82  3379   linux/x86_64  /tidb-deploy/tso-3379,/tidb-data/tso-3379
tso   192.0.2.83  3379   linux/x86_64  /tidb-deploy/tso-3379,/tidb-data/tso-3379
...
+ Download TiDB components
  - Download pd:v8.1.0 (linux/amd64) ... Done
+ Initialize target host environments
+ Deploy TiDB instance
  - Deploy instance tso -> 192.0.2.82:3379 ... Done
  - Deploy instance tso -> 192.0.2.83:3379 ... Done
+ Copy certificate to remote host
+ Generate scale-out config
  - Generate scale-out config tso -> 192.0.2.82:3379 ... Done
  - Generate scale-out config tso -> 192.0.2.83:3379 ... Done
...
+ [ Serial ] - Save meta
+ [ Serial ] - Start new instances
Starting component tso
 Starting instance 192.0.2.83:3379
 Starting instance 192.0.2.82:3379
 Start instance 192.0.2.83:3379 success
 Start instance 192.0.2.82:3379 success
...
+ Refresh components conifgs
+ Reload prometheus and grafana
+ [ Serial ] - UpdateTopology: cluster=mytidb
Scaled cluster `mytidb` out successfully

扩容 tso 微服务成功,查看集群信息。

[root@tidb1 ~]# tiup cluster display mytidb
Cluster type:       tidb
Cluster name:       mytidb
Cluster version:    v8.1.0
ID                Role          Host        Ports        OS/Arch       Status   Data Dir                      Deploy Dir
--                ----          ----        -----        -------       ------   --------                      ----------
...
192.0.2.82:3379   tso           192.0.2.82  3379         linux/x86_64  Up       /tidb-data/tso-3379           /tidb-deploy/tso-3379
192.0.2.83:3379   tso           192.0.2.83  3379         linux/x86_64  Up|P     /tidb-data/tso-3379           /tidb-deploy/tso-3379
Total nodes: 12

再扩容 scheduling 微服务,仍然是双副本。

scheduling_servers:
- host: 192.0.2.81
- host: 192.0.2.86

扩容后,查看集群状态。

[root@tidb1 ~]# tiup cluster display mytidb
Cluster type:       tidb
Cluster name:       mytidb
Cluster version:    v8.1.0
ID                Role          Host        Ports        OS/Arch       Status   Data Dir                      Deploy Dir
--                ----          ----        -----        -------       ------   --------                      ----------
192.0.2.81:2379   pd            192.0.2.81  2379/2380    linux/x86_64  Up|L|UI  /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       /tidb-data/pd-2379            /tidb-deploy/pd-2379
...
192.0.2.81:3379   scheduling    192.0.2.81  3379         linux/x86_64  Up       /tidb-data/scheduling-3379    /tidb-deploy/scheduling-3379
192.0.2.86:3379   scheduling    192.0.2.86  3379         linux/x86_64  Up|P     /tidb-data/scheduling-3379    /tidb-deploy/scheduling-3379
...
192.0.2.82:3379   tso           192.0.2.82  3379         linux/x86_64  Up       /tidb-data/tso-3379           /tidb-deploy/tso-3379
192.0.2.83:3379   tso           192.0.2.83  3379         linux/x86_64  Up|P     /tidb-data/tso-3379           /tidb-deploy/tso-3379
Total nodes: 14

Demo: 查询 HTTP API

通过 HTTP API 查看 tso, scheduling 微服务的主节点和成员信息。

[root@tidb1 ~]# curl 192.0.2.81:2379/pd/api/v2/ms/primary/tso
"http://192.0.2.83:3379"[root@tidb1 ~]
[root@tidb1 ~]# curl 192.0.2.81:2379/pd/api/v2/ms/members/tso
[
    {
        "service-addr""http://192.0.2.82:3379",
        "version""v8.1.0",
        "git-hash""fca469ca33eb5d8b5e0891b507c87709a00b0e81",
        "deploy-path""/tidb-deploy/tso-3379/bin",
        "start-timestamp": 1719931905
    },
    {
        "service-addr""http://192.0.2.83:3379",
        "version""v8.1.0",
        "git-hash""fca469ca33eb5d8b5e0891b507c87709a00b0e81",
        "deploy-path""/tidb-deploy/tso-3379/bin",
        "start-timestamp": 1719931905
    }
][root@tidb1 ~]#
[root@tidb1 ~]# curl 192.0.2.81:2379/pd/api/v2/ms/primary/scheduling
"http://192.0.2.86:3379"[root@tidb1 ~]
[root@tidb1 ~]# curl 192.0.2.81:2379/pd/api/v2/ms/members/scheduling
[
    {
        "service-addr""http://192.0.2.81:3379",
        "version""v8.1.0",
        "git-hash""fca469ca33eb5d8b5e0891b507c87709a00b0e81",
        "deploy-path""/tidb-deploy/scheduling-3379/bin",
        "start-timestamp": 1719932211
    },
    {
        "service-addr""http://192.0.2.86:3379",
        "version""v8.1.0",
        "git-hash""fca469ca33eb5d8b5e0891b507c87709a00b0e81",
        "deploy-path""/tidb-deploy/scheduling-3379/bin",
        "start-timestamp": 1719932211
    }

我们知道可以使用 TiUP 转移 PD 的主节点,那么问题来了,如何切换微服务的主节点呢?再想想。。。

[root@tidb1 ~]# tiup ctl:v8.1.0 pd member leader transfer "pd-192.0.2.82-2379"
Starting component ctl: /root/.tiup/components/ctl/v8.1.0/ctl pd member leader transfer pd-192.0.2.82-2379
Success!
[root@tidb1 ~]# tiup ctl:v8.1.0 tso member leader transfer "pd-192.0.2.81-3379"
Starting component ctl: /root/.tiup/components/ctl/v8.1.0/ctl tso member leader transfer pd-192.0.2.81-3379
Error: ctl only supports tidb, tikv, pd, binlog, etcd and cdc currently
[root@tidb1 ~]# tiup ctl:v8.1.0 pd member leader transfer "pd-192.0.2.81-3379"
Starting component ctl: /root/.tiup/components/ctl/v8.1.0/ctl pd member leader transfer pd-192.0.2.81-3379
Failed to transfer leadership: [500] "no valid pd to transfer etcd leader"

Demo: 微服务配置项

从 TiDB 4.0 开始,增加了 CLUSTER_CONFIG 系统表,可以轻松获取集群当前所有组件实例的配置。

这里分别查看 pd,tso,scheduling 各有多少个配置项。

MySQL [(none)]> select count(*) from information_schema.cluster_config where type = 'pd' and instance = '192.0.2.81:2379';
+----------+
| count(*) |
+----------+
|      188 |
+----------+
1 row in set (0.04 sec)

MySQL [(none)]> select count(*) from information_schema.cluster_config where type = 'tso' and instance = '192.0.2.82:3379';
+----------+
| count(*) |
+----------+
|       51 |
+----------+
1 row in set (0.16 sec)

MySQL [(none)]> select count(*) from information_schema.cluster_config where type = 'scheduling' and instance = '192.0.2.81:3379';
+----------+
| count(*) |
+----------+
|      123 |
+----------+
1 row in set (0.04 sec)

升级建议

在升级 TiDB 集群之前,记得先升级 TiUP。

alt

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

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

推荐阅读:

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

🌻 往期精彩 ▼

[Oracle]

  • Oracle 数据库全面升级为 23ai
  • python-oracledb 已率先支持 Oracle 23ai
  • 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法

[MySQL]

  • 「合集」MySQL 8.x 系列文章汇总
  • 如何选择适合的 MySQL Connector/J 版本
  • MySQL 8.4.0 LTS 发布 (MySQL 第一个长期支持版本)

[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 / --

👉 这里可以找到我

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

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

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于改进高斯-拉普拉斯滤波器的一维时间序列平滑与降噪(MATLAB)

以图像处理为例,拉普拉斯算子是基于图像的二阶导数来找到边缘并搜索过零点,传统的拉普拉斯算子常产生双像素宽的边缘,对于较暗区域中的亮斑进行边缘检测时,拉普拉斯运算就会使其变得更亮。因此,与梯度算子一样&#xf…

基于tensorflow2的目标检测完整实现过程

序言 虽然tf1仍然在维护,但tf2毕竟是主流,如果不是项目有明确要求,建议直接选择tf2。本文以tf2为例展开,总结从环境准备到使用自己的数据和tensorflow预训练模型进行快速训练和调用。对tensorflow和目标检测算法有深入了解的&…

Seal^_^【送书活动第8期】——《ChatGLM3大模型本地化部署、应用开发与微调》

Seal^_^【送书活动第8期】——《ChatGLM3大模型本地化部署、应用开发与微调》 一、参与方式二、本期推荐图书2.1 作者建语2.2 编辑推建2.3 图书简介2.4 前 言2.5 目 录 三、正版购买 大模型领域 既是繁星点点的未知宇宙,也是蕴含无数可能的广阔天地, 正…

“不喝鸡汤 不诉离殇”华火电燃灶用实力引领烹饪灶具发展

在这个快节奏的时代,我们常常被各种厨房电器的鸡汤所包围,并悄悄的告诉我们厨房生活是美好与温暖的,但面对现实中的挑战与困难时,常常表现出选择性失明;那些隐藏在传统厨房烹饪环境下的危机,就像是慢性的毒…

参数污染漏洞(HPP)挖掘技巧及实战案例全汇总

目录 概念: 漏洞原理: 实战案例总结: 1. 逻辑漏洞(IDOR) 2. 绕过检测(WAF) 挖掘技巧: 修复方案: 概念: HTTP参数污染,也叫HPP(HTTP Parameter Pollution)。简单地讲就是给一个参数赋上两个或两个以上的值,由于现行的HTTP标准没有提及在遇到多个输入值给相…

设计IC行业SAP软件如何处理芯片成本计算

在集成电路(IC)设计与制造行业中,精确的成本计算对于维持健康的财务状况、优化生产流程以及保持市场竞争力至关重要。SAP软件,作为一种全面的企业资源规划(ERP)解决方案,为IC行业提供了强大且灵活的成本计算工具。以下是SAP软件如何处理芯片成…

【Linux】应用层创建XXX文件,文件系统调用可以查看到文件名

搞了台电脑,昨天把系统装了下,继续搞事: 上次基于内核代码openat的系统打印被操作的文件名,发现不成功,很奇怪,这种问题内核不可能会犯这种低级别的问题吧? 反过来想,那不是内核的问…

Vscode快捷键崩溃

Vscode快捷键崩溃 Linux虚拟机下使用vscode写代码【ctrlA,CtrlC,CtrlV】等快捷键都不能使用,还会出现“NO text insert“等抽象的指令,问题就是不知道什么时候装了一个VIM插件,让他滚出电脑》》》

[vue3+js]实现3d旋转效果

1. 实现效果图&#xff1a; 2.实现代码&#xff1a; css: <style lang"scss" scoped>.bottomContainer{width: 1200px;height: 400px;display: flex;justify-content: center;position: relative;margin:200px auto;align-items: center;// background-image…

迈向智慧水利新时代:聚焦智慧水利解决方案的核心技术与发展方向,展望其在推动水利行业可持续发展中的重要作用

目录 一、引言 二、智慧水利解决方案的核心技术 1. 物联网技术 2. 大数据与云计算 3. 人工智能与机器学习 4. 区块链技术 三、智慧水利的发展方向 1. 深化技术融合与创新 2. 强化系统集成与协同 3. 提升公众参与与互动 4. 注重生态友好与可持续发展 四、智慧水利在…

5.3.3、二维数组案例-考试成绩统计

代码 #include <iostream> using namespace std; #include <string>int main() {//二维数组案例-考试成绩统计//1、创建二维数组int scores[3][3] {{100,100,100},{90,50,100},{60,70,80},};string names[3] { "张三","李四","王五&quo…

Qt——升级系列(Level Seven):事件、文件

目录 Qt事件 事件介绍 事件的处理 按键事件 鼠标事件 定时器 事件分发器 事件过滤器 Qt文件 Qt文件概述 输入输出设备类 文件读写类 文件和目录信息类 Qt事件 事件介绍 事件是应⽤程序内部或者外部产⽣的事情或者动作的统称。在 Qt 中使⽤⼀个对象来表⽰⼀个事件。所有的 Qt …

STM32 ADC精度提升方法

STM32 ADC精度提升方法 Fang XS.1452512966qq.com如果有错误&#xff0c;希望被指出&#xff0c;学习技术的路难免会磕磕绊绊量的积累引起质的变化 硬件方法 优化布局布线&#xff0c;尽量减小其他干扰增加电源、Vref去耦电容使用低通滤波器&#xff0c;或加磁珠使用DCDC时尽…

在Android运行时切换Retrofit Base URL:简化开发环境与生产环境的切换

在运行时切换Retrofit Base URL:简化开发环境与生产环境的切换 在Android开发中,Retrofit是一个由Square开发的类型安全的HTTP客户端库。它为API认证和网络请求提供了一个强大的框架。然而,在开发过程中,我们常常需要在不同的环境(如开发环境和生产环境)之间切换Base UR…

2024上半年剧集市场复盘:质增量减之下,腾讯持续领跑

随着2024上半年结束&#xff0c;剧集市场长视频平台的比拼也告一段落了。 总结2024H1阶段的剧集市场&#xff0c;依旧延续了“高质量增长”的发展路线&#xff0c;具体表现在数量上的减少和质量上的提升&#xff0c;“质增量减”成为这一阶段的关键词。 根据灯塔专业版数据&a…

openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 二(51-)

环境&#xff1a;OpenCV3.2.0 VS2015 51、Mean-Shift算法分割图像 cv::pyrMeanShiftFiltering() 参考链接&#xff1a;【从零学习OpenCV 4】分割图像——Mean-Shift分割算法 Mean-Shift算法又被称为均值漂移法&#xff0c;是一种基于颜色空间分布(彩色图像的像素值)的图像分割…

java框架的落地实践案例:大数据平台设计与实现

使用 java 框架设计和实现大数据平台可为企业提供数据处理和分析解决方案&#xff0c;使之能够做出数据驱动的决策。系统采用微服务架构&#xff0c;分解数据处理任务为松散耦合组件&#xff0c;构建于 spring boot 等 java 框架之上。数据采集通过kafka 进行&#xff0c;数据清…

【原理】随机森林模型是怎么训练的

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、随机森林简介二、随机森林训练原理2.1. 随机森林的训练流程2.2. 随机森林训练的核心代码 用过随机森林的朋友都知道&#xff0c;随机森林是集成决策的一个经典代表&#xff0c;它通过训练多棵决策树&#xf…

1、线性回归模型

1、主要解决问题类型 1.1 预测分析(Prediction) 线性回归可以用来预测一个变量(通常称为因变量或响应变量)的值,基于一个或多个输入变量(自变量或预测变量)。例如,根据房屋的面积、位置等因素预测房价。 1.2 异常检测(Outlier Detection) 线性回归可以帮助识别数…

鸿蒙应用开发-时间屏幕

点击下载源码&#xff1a; https://download.csdn.net/download/liuhaikang/89509449 做一个时间屏幕&#xff0c;可以点击切换白色和黑色&#xff0c;有渐变效果&#xff0c;使用到了鸿蒙的动画效果。 在这个设计中&#xff0c;我们首先引入了通用能力包&#xff0c;以实现功…
最新文章