关于TDSQL(MySQL)的简单知识分享

这篇具有很好参考价值的文章主要介绍了关于TDSQL(MySQL)的简单知识分享。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 前言

最近在系统改造过程中,接触到了国产分布式数据库TDSQL,记录一下关于TDSQL的部分知识点。

1. TDSQL简介

TDSQL是腾讯推出的一款兼容MySQL的自主可控、高一致性分布式数据库产品。

1.1 TDSQL优点:

  • 数据强一致性
  • 高性能低成本
  • 线性水平扩展
  • 金融级高可用
  • 企业级安全性
  • 便捷的运维

1.2 TDSQL系统总览

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

  • 资源池:TDSQL部署的服务器资源。

  • 存储节点:存储节点要强调的是TDSQL的两种存储形态,一种是Noshard数据库,一种是分布式数据库(也叫Shard版TDSQL)。简单来说,Noshard就是一个单机版的TDSQL,在MySQL的基础上做了一系列的改造和改良,让它支持TDSQL的一系列特性,包括高可用,数据强一致、7×24小时自动故障切换等。第二种是分布式数据库,具备水平伸缩能力。所以TDSQL对外其实呈现了两种形态,呈现一种非分布式形态,一种是分布式的形态。

  • 计算节点:计算节点就是TDSQL的计算引擎,做到了计算层和存储层相分离。计算层主要是做一些SQL方面的处理,比如词法解析、语法解析、SQL改写等。如果是分布式数据库形态,还要做分布式事务相关的协调。

  • 赤兔运营管理平台 :通过这个平台,DBA可以操纵TDSQL后台黑盒,所以相当于是一套WEB管理系统。让所有DBA的操作都可以在用户界面上完成,而不需要登陆到后台,管理节点的操作可以通过界面化完成。

  • “扁鹊”智能DBA平台:扁鹊智能DBA平台还有一个智能诊断系统,可以定期由DBA发起对实例进行的诊断。

1.3 TDSQL架构模块及其特性

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

首先用户的请求通过负载均衡发往SQL引擎。然后,SQL引擎作为计算接入层,根据这个SQL的要求从后端的存储节点去取数据。当然,无论是SQL引擎还是后端的数据库实例都存在一个元数据来管理调度。举个例子,计算引擎需要拿到一个路由,路由告诉SQL引擎,这个SQL该发往哪一个后端的数据节点,到底是该发往主节点还是发往备节点。TDSQL引入了ZK(Zookeeper)来储存类似于路由这类元数据信息。当然ZK只是静态的存储元数据,维护和管理这些元数据信息,还需要有一套调度以及接口组件,这里是OSS、Manager/Schedule。这张图可以看到是TDSQL整体来说就分为三部分:管理节点、计算节点和存储节点。当然这里还有一个辅助模块,帮助完成一些个性化需求的,比如备份、消息队列,数据迁移工具等。另外,这里的负载均衡其实不是必需的,用户可以选用自身的硬件负载,也可以用LVS软负载,这个负载均衡根据实际的用户场景可自定义。

2. 模块划分

2.1 管理模块

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

作为一个集群只搭建一套的管理模块,一般可以复用一组机器。

首先,DBA用户在赤兔管理台——这一套WEB前台发起一个操作——点了一个按纽,这个按纽可能是对实例进行扩容,这个按纽会把这个https的请求转移到OSS模块,这个OSS模块有点像web服务器,它能接收web请求,但是它可以把这个转发到ZK。所以,OSS模块就是一个前端到后台的桥梁,有了OSS模块,整个后台的工作模块都可以跟前台、跟web界面绑定在一起。

捕捉到这个请求之后,在ZK上创建一个任务节点,这个任务节点被调度模块捕获,捕获之后就处理任务。处理完任务,再把它的处理结果返回到ZK上。ZK上的任务被OSS捕获,最后也是https的请求,去查询这个任务,最后得到一个结果,返回给前端。

这是一个纯异步的过程。

2.2 DB模块

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

DB模块,即数据节点,数据存取服务属于IO密集型的服务,因此,数据节点是TDSQL的存储节点,它对IO的要求比较高。

SET就是数据库实例,一个SET包含数据库的主从节点。

模块Agent,它来完成对所有集群对MySQL的操作,并且上报MySQL的状态。

2.3 SQL引擎模块

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

SQL引擎处于计算层的位置,本身属于CPU密集型,所以在选机型上尽量要求CPU高一些。其次是内存,作为计算接入层,它要管理链接,如果是大量的短链接或者长链接,非常占内存,所以它对CPU和内存的要求比较高。此外,它本身不存储数据,也没有主备之分。

SQL引擎要处理分布式事物,还要维护全局自增字段,保证多个数据、多个存储节点共享一个保证全局自增的序列;如果是分布式的话,要限制一些语法,包括词法和语法的解析;还有在一些复杂计算上,它还要做一些SQL下推,以及最后数据的聚合。

2.4 TDSQL主备数据复制

mysql主备数据复制实现方式:
tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

  • 异步复制:主机在不等从机应答直接返回客户端成功。
  • 半同步:主机在一定条件下等备机应答,如果等不到备机应答,它还是会返回业务成功,也就是说它最终还会退化成一个异步的方式。
  • 全同步机制:当主库提交事务之后,所有的从库节点必须收到,APPLY并且提交这些事务,然后主库线程才能继续做后续操作。

TDSQL引入了基于raft协议的强同步复制,主机接收到业务请求后,等待其中一个备机应答成功后才返回客户端成功。

有点类似把半同步的基础上把这个超时时间改成无限大同时应答的备机设置为1,但是TDSQL强同步复制的性能是在原生半同步的基础上做了大量的优化和改进,使得性能基本接近于异步。

2.5自动容灾切换

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

SQL引擎将请求发给主节点,主节点被两个备机所同步,每个节点上都有对应的Agent上报当前节点的状态。这时,主节点发生了故障被Agent觉察,上报到zk被Scheduler捕获,然后Scheduler首先会把这个主节点进行降级,把它变成Slave。也就是说此时其实整个集群里面全是Slave,没有主节点。这个时候另外两个存活的备机上报自己最新的binlog点,因为有了强同步的保障,另外两个备机其中之一一定有最新的binlog,那么两个备机分别上报自己最新的点后,Schedule就可以清楚的知道哪个节点的数据是最新的,并将这个最新的节点提升成主节点。

容灾切换需要建立在强同步的基础上。

2.6 数据强一致性

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式
比如说A节点作为主节点,B、C是从,正常去同步A节点的数据,A+1、A+2,接下来该同步A+3。当A+3还没有同步到从节点的时候发生了故障,这个时候根据B、C节点的数据情况,C的数据是最新的,因此C被选成了主节点,进而C继续同步数据到B。过了一阵,A节点拉起了,可以重新加入集群。重新加入集群之后,发现它有一笔请求A+3还没有来得及被B、C节点应答,但已经写入到日志。这个时候其实A节点的数据是有问题的,我们需要把这个没有被备机确认的A+3的回滚掉,防止它将来再同步给其他的节点。

3. 分表

3.1 分表

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

shardkey——是TDSQL的分片关键字,也就是说TDSQL会根据shardkey字段将这个数据去分散。

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

3.2 水平拆分

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

对于分布式来说,可能最初我们所有的数据都在一个节点上。当一个节点出现了性能瓶颈,需要将数据拆分。

3.3 分布式事务

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

分布式事务也是根据shardkey来判断,具体来说,对于SQL引擎读发起一个事务,比如第一条SQL是改用户ID为A的用户信息表。第二条SQL是插入一个用户ID为A的流水表,这两张表都以用户ID作为shardkey。如果这两条SQL都是发往一个分片,虽然是一个开启的事务,但是发现它并没有走分布式事务,它实际还是限制在单个分片里面走了一个单节点的事务。当然如果涉及到转帐:比如从A帐户转到B帐户,正好A帐户在第一个分片,B帐户是第二个分片,这样就涉及到一个分布式事务,需要SQL引擎完成整个分布式事务处理。

TDSQL分布式事务优点:

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式

3.4 分布式总结

tdsql,信创,数据库,mysql,数据库,TDSQL,分布式数据库,分布式文章来源地址https://www.toymoban.com/news/detail-852966.html

到了这里,关于关于TDSQL(MySQL)的简单知识分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【TDSQL-C Serverless 产品体验】| 实战分享 | 文末送书

    在当今云计算时代,不同类型的业务对高弹性、高可用性和可扩展性的需求越来越强烈,按需使用资源成为企业所需要的关键功能。为了满足这些需求,云原生数据库的Serverless化已经成为云数据库发展的重要方向之一。 过去,云数据库的发展经历了几个时代。在1.0时代, 主

    2024年02月11日
    浏览(27)
  • 腾讯云数据库 TDSQL—— 私有云安装部署手册

    目录 基础环境说明 TDSQL 集群架构设计 基础部署 1.配置主机名 2.添加主机名IP映射 3.开启时间同步 4.规划存储目录 TDSQL下载 TDSQL配置 1.配置免密登录 2.修改tdsql_hosts文件 3.配置tdsql密码 4.修改ansible变量 5.安装ansible TDSQL安装 赤兔初始化 1.环境检测 2.集群配置 3.集群初始化 4.新增

    2024年02月13日
    浏览(35)
  • 对腾讯云的TDSQL的简单入门学习

    分类 数据库名称 类型 CDB(SQL) MYSQL OLTP集中式 MariaDB SQL Server PostgreSQL TDSQL 分布式 CynosDB

    2023年04月10日
    浏览(20)
  • 【腾讯云 TDSQL-C Serverless 产品测评】全面测评TDSQL-C Mysql Serverless

    数据库是我们开发应用不可或缺的底层基座,它负责存储和管理应用程序所需的数据。随着技术的不断进步,出现了各种新的数据库模式和解决方案,其中包括备受瞩目的 Serverless 模式。 Serverless 模式的出现改变了传统数据库的运行方式,它提供了更高的弹性和灵活性,使开

    2024年02月12日
    浏览(32)
  • 【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless实践之路

    【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless实践之路 腾讯云TDSQL-C联合CSDN推出了一款云数据库产品测评活动,让我们一起来体验一下。 云数据库是指被优化或部署到一个虚拟计算环境中的数据库,可以实现按需付费、按需扩展、高可用性以及存储整合等优势。 云数

    2024年02月08日
    浏览(30)
  • 【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless最佳实践

    随着云计算技术的不断发展,越来越多的企业开始选择将自己的数据库部署在云上,以更好了的支持企业数字化转型以及业务创新,在这个过程中,很多客户会遇到这样一个问题,业务会存在高峰期和低谷期,同样数据库的访问量也是会存在相应的高峰期和低谷期。 序号 业

    2024年02月07日
    浏览(34)
  • 【腾讯云 TDSQL-C Serverless 产品体验】基于TDSQL-C MySQL Serverless的性能测试

    可以帮助发现性能瓶颈,并及时采取措施来优化数据库性能。 序号 测试方法 描述 1 基准测试(Benchmark Testing) ①. 通过运行预定义的测试项目来测量数据库性能的方法 ②. 基准测试适用于比较不同数据库系统或不同硬件配置的性能 ③. 建议根据实际使用场景来选择最适合的基

    2024年02月08日
    浏览(36)
  • 【腾讯云 TDSQL-C Serverless 产品测评】- 云数据库之旅

    “腾讯云 TDSQL-C 产品测评活动”是由腾讯云联合 CSDN 推出的针对数据库产品测评及产品体验活动,本次活动主要面向 TDSQL-C Serverless版。 本次参与活动可以涵盖不同技术层面的用户,可以针对TDSQL-C产品的自动弹性能力、自动启停能力、兼容性、安全、并发、可靠性等多方面进

    2024年02月11日
    浏览(39)
  • 【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless“随心所欲”的弹性计费

    数据库作为公司软件业务应用中最重要的基础软件之一,在整个IT生态体系中具有举足轻重的作用,随着业务数据量的增大和算力的限制,单台MySQL实例越来越满足不了需求,腾讯云 TDSQL-C Serverless是腾讯云自研的云原生关系型数据库 TDSQL-C MySQL版的无服务器架构版。按实际计算

    2024年02月08日
    浏览(33)
  • 【腾讯云 TDSQL-C Serverless 产品体验】TDSQL-C MySQL Serverless助力企业降本增效直播读后感

    本人接触互联网也有差不多10个年头,从个人的博客、商城、电商、教育、淘宝客等,手里大大小小的项目也不在少数,接触过的技术栈也是比较多,从.net、php、java、go、python等都有涉猎,接触的规模也是逐渐由小到大,从简单的单机应用部署到SOA架构,再到目前公司业务的

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包