【腾讯云 TDSQL-C Serverless 产品测评】- 云原生时代的TDSQL-C MySQL数据库技术实践

一、活动介绍:

“腾讯云 TDSQL-C 产品测评活动”是由腾讯云联合 CSDN 推出的针对数据库产品测评及产品体验活动,本次活动主要面向 TDSQL-C Serverless版本,初步的产品体验或针对TDSQL-C产品的自动弹性能力、自动启停能力、兼容性、安全、并发、可靠性等多方面的产品测评。

在这里插入图片描述


二、手册体验:

在进行报名后,加入微信群,助手提供了2个实验手册用来体验TDSQL-C MySQL的一个简单入门,由于新电脑还没有装Ptyhon环境,所以,这里选择《Vue+Koa+TDSQL实现问答系统》来实际操作一下。

在这里插入图片描述
通过不到15分钟的时间,按照手册的功能描述步骤,从0到1完成了TDSQL-C MySQL的体验,接下来就让我们深入的体验一下TDSQL-C MySQL的功能。


三、 数据库介绍:

  1. 数据库是什么?

数据库(Database,简称DB)是长期储存在计算机内、有组织、可共享的大量数据的集合。

数据库中的数据按一定的数据模型组织、描述和储存。具有较小冗余度、较高数据独立性、易扩展性,并可为各种用户共享。

  1. 数据库、数据库管理工具的关系:

在这里插入图片描述

  1. 常见数据库管理系统:

在这里插入图片描述

在平时的开发中,接触过MySQL、SQL Server2种数据库,在早期使用过.NET就是使用SQL Server数据库进行开发,后面学习了PHP后,大多数都是PHP + MySQL进行Web相关的开发工作。其间,对于PostgreSQL也是学习调研过。

  1. 如何操作数据库:

数据库管理系统可以通过SQL(结构化查询语言)来定义和操作数据,维护数据的完整性和安全性,以及进行各种数据库的管理等。

在这里插入图片描述

像我平时的工作就是全栈开发,php + vue + uniapp小程序,后端基本上70%的时间,都是跟MySQL打交道,平时,也遇到过不少MySQL的问题点。希望通过这次学习,也可以复盘一下自己的所学。


四、 TDSQL-C介绍:

从最上面活动的截图,我们先大致了解一下,TDSQL-C是什么?TDSQL-C有什么样的作用呢?以下是我的一个总结,可以先了解一下TDSQL-C的基本功能、场景、作用。

在这里插入图片描述

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

  1. 功能:
  • 具有高可用性、高性能和可扩展性
  • 支持水平自动拆分,有完整的业务逻辑表,而且数据被均匀拆分到多个物理分片中
  • 有效的解决超大并发,超高性能,超大容量的OLTP类场景
  1. 作用:
  • 对金融级高可用、企业级安全性、数据强一致性等场景支持友好
  • 提供完善的生态、完善的服务保障能力

五、 TDSQL-C MYSQL实操:

  1. 官网购买TDSQL-C MYSQL数据库:

打开官网 (TDSQL-C MYSQL链接)[https://cloud.tencent.com/product/tdsqlc] ,点击“立即选购”。
在这里插入图片描述

新账号的话,有一些前置动作,需要进行实名制一下,否则会提示不能购买。
在这里插入图片描述

再往账号中充一点值,好进行产品的购买,这里用于测试的话,充了10块钱进行体验一下。
在这里插入图片描述
在产品选购页面,实例形态这里一定要选择“Serverless”的产品,TDSQL-C分为两个产品:一个是MySQL、一个是PostgreSQL,这里我们选择“MySQL”数据库引擎。

可以看到地域还支持国外的地域,给产品点赞,牛!

在这里插入图片描述
我们选择最新的数据库版本“MySQL 8.0”,可以根据自己的业务设置自动暂停时,选择“1个小时”,存储计费模式,可以用使用资源包,点击“购买资源包”进行购买。

在这里插入图片描述

选择“存储资源包”,容量的话,根据自己的需求进行调整,可以看出也比较便宜。

在这里插入图片描述

通过几个确认下单的步骤,购买成功存储资源包。
在这里插入图片描述

再回到数据库购买页面,将刚刚购买的存储资源包进行绑定。
在这里插入图片描述

第二步,可以设置数据库密码、默认字符集,自定义端口,表名大小写等参数。
在这里插入图片描述

经过几个确认步骤,集群创建成功,很有的意思是,这里不叫数据库实例,而是叫集群。

  1. 数据库集群功能介绍:

在这里插入图片描述

默认数据库集群实例的外网是关闭的,需要自己开启。这里为了方便演示,将“自动暂停时长”设置为10分钟,有个疑问是数据库刚开启怎么就有24M存储空间了?
在这里插入图片描述

可以看到对应的资源包是0,并没有存储数据。
在这里插入图片描述

通过数据库管理工具DMC,可以看到系统默认有一些系统库,猜测这24M数据是它们的。

在这里插入图片描述

  1. 开启外网访问地址:

点击上面“开启”,在开通外网访问地址后,注意host是一个域名(并非是IP),端口是一个随机的(并非是3306)。

在这里插入图片描述

  1. 账号管理:

添加一个开发的账号,有只读的权限,不能有操作的权限。

在这里插入图片描述在这里插入图片描述

  1. 数据库管理:

在这里插入图片描述

可以单独对一些账号进行权限的控制。
在这里插入图片描述
在这里插入图片描述

  1. 参数设置:

针对一些数据库的参数可以自己去修改,符合自己的需求。

在这里插入图片描述

  1. 体验中遇到的问题:

使用数据库密码时,不能使用”Mysql.”,试了很多次,发现是密码有问题,改为”Test123.”

在这里插入图片描述

导入了一点表,在Navicat中删除后,看到表的空间并没有释放?
在这里插入图片描述

手册中的mysql2在并发流量时,好像不是太好用,下次试试Java的多线程。

在这里插入图片描述

六、TDSQL-C MySQL降本策略:

  1. 自动启停:

Serverless的好处,当设置10分钟(可以随时调配)没有使用时,数据库就会暂停状态,暂停后计算将不再计费,如下数据库集群实例状态是“已暂停”。

在这里插入图片描述

一般像我们的网站,在夜晚的是没有流量的,可以节省一段时间的费用,如果是一年,那也是一笔比较可观的节能收入。

  1. Serverless秒级伸缩:

改造一下上面手册的后端Node代码,进行并发写入数据库数据,模拟线上突然QPS上升的场景。

const mysql = require('mysql2/promise');

// 初始化数据库连接
let connection = null
async function initDb () {
    
    
  connection = await mysql.createConnection({
    
    
    host: 'bj-cynosdbmysql-grp-8znse6hq.sql.tencentcdb.com',
    user: 'root',
    password: 'Test123..',
    database: 'shop',
    port: 26668,
  });

  async function selectData () {
    
    
    for (let i = 0; i < 999999; i++) {
    
    
      let sql = "INSERT INTO `tb_seckill_goods` VALUES (943095, NULL, 'xxxxxxx', 'http://img14.360buyimg.com/n7/jfs/t23629/293/671156875/53383/8ab4ce73/5b3c24abN8090cb25.jpg', 825.26, 82.53, '2019-05-24 06:51:00', '2019-05-24 06:51:00', '1', '2019-05-23 16:00:00', '2019-05-23 17:59:00', 79, 75, 'xxxxx')";
      connection.execute(sql);
    }
  }
  
  selectData()
}
initDb()

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

可以看到,我们买的配置当时是最小0.5,最大1,按以前的经验来说,可能CPU就达到了100%,SQL的进程在阻塞了,而TDSQL-C MySQL Serverless版本,可以自动的将CPU由最大1扩大到上面的差不多5。

  1. 总结:

可以看到TDSQL-C MySQL Serverless版本有高度弹性灵活的使用方式,根据实际使用量进行计费,非常适合对业务量波动较大的中小企业。用这种按需按量的计费模式,极大降低了使用成本和资源浪费。

在这里插入图片描述


七、 TDSQL-C MySQL 提效策略:

  1. 权限管控:

我们可以通过上面设置的权限进行有效的控制角色的操作类型,防止团队中有些人误操作,传统的工作可能是DBA在分配,这里的可以直接设置,比较方便。可以看到当我们使用dev_chen进行insert操作时,直接就报错了。

在这里插入图片描述

  1. SQL导入:

在Navicat中导入数据需要差不多5分钟,而在DMC管理平台导入数据节省了差不多一半的时间。

在这里插入图片描述

个人猜测,可能是DMC先把SQL上传到服务器上,然后,再相当于本地导入,速度就快很多。导出的速度也是比较快的,不过建议用zip压缩一下,这样可以节省流量,速度也比较快。

在这里插入图片描述

可以看到在Navicat中导入表数据的过程中,发现这张表有数据了。
在这里插入图片描述

但是在DMC上查询却是空的,只有在表导完数据后,才能在下面这张图查出数据。

在这里插入图片描述在这里插入图片描述

  1. Mysql 5.7迁移到8.0:

可以看到Mysql 5.7的表,在8.0中导入,有一些小报错,但是不影响使用。基本上可以100%进行迁移。

在这里插入图片描述

  1. 总结:

在这里插入图片描述

八、 TDSQL-C MySQL 运维的能力:

111


九、 总结:

在这里插入图片描述

TDSQL是腾讯云企业级分布式数据库,旗下涵盖金融级分布式、云原生、分析型等多引擎融合的完整数据库产品体系,提供业界领先的金融级高可用、计算存储分离、数据仓库、企业级安全等能力,同时具备智能运维平台、Serverless版本等完善的产品服务体系。

我也是在通过活动、自己动手操作手册、自己在项目中实践TDSQL-C MySQL 8.0,从0到1的由浅到深的了解,从一些论点实际去操作,了解到TDSQL-C MySQL确实能给我们的业务带来提效降本的方案,希望在以后能够在业务中去落地并实践TDSQL-C MySQL。

综上所述,可以看到TDSQL-C MySQL 是一个强大、灵活、可扩展的数据库中间件,适用于中大型企业级应用程序。如果需要寻找一种可靠、高性能、可扩展的数据库解决方案,TDSQL-C MySQL 版本是一个很不错的选择。

猜你喜欢

转载自blog.csdn.net/2301_77888392/article/details/132448663