写点什么

国内首款 Serverless MySQL 数据库!

2021 年 4 月 09 日

国内首款 Serverless MySQL 数据库!

腾讯云重磅发布了自研云原生数据库 TDSQL-C Serverless (原 CynosDB Serverless),这是国内首款计算和存储全 Serverless 架构的云原生 MySQL, TDSQL-C Serverless 能够让企业用户像使用水、电、煤一样使用云数据库,用户不需为数据库的闲时进行付费,而是按照数据库资源响应单元实际使用量进行计费,将腾讯云云原生技术普惠用户。


作为 Serverless 生态中的重要一环,TDSQL-C Serverless 的发布也补齐了 Serverless 架构里 MySQL 数据库的空缺。因此,Serverless Framework 同步发布了 TDSQL-C Serverless 组件。这样,腾讯云就拥有了一套 Serverless 全栈的核心解决方案,包括 Serverless API 网关、腾讯云的 Serverless 函数计算服务、Serverless 对象存储和数据库。在数据存储层可以通过 TDSQL-C Serverless 直接对数据库连接并进行 SQL 操作。


TDSQL-C Serverless(MySQL 数据库),具备完全自动化的无感扩容能力,能够随着用户业务的请求数的增加和减少,智能化“膨胀”和“缩小”,实现资源的自动“吞吐”。从此以后,开发者可以真正的完成 Serverless 架构应用的开发,专注于业务本身,免除运维,按需付费,不用不付费,享受 Serverless 架构带来的众多优势。


服务特性


  • 自动驾驶(Autopilot):

数据库根据业务负载自动启动停止,无感扩缩容,扩缩容过程不会断开连接。

  • 按使用计费(Utility Pricing):

按实际使用的计算和存储量计费,不用不付费,按秒计量,按小时结算。


适用场景


  • 开发、测试环境等低频数据库使用场景。

  • 物联网(IoT)、边缘计算等不确定负载场景。

  • 中小企业建站等 SaaS 应用场景。


下面的教程将以 Node.js 开发语言的函数,指导您如何快速创建 TDSQL-C Serverless MySQL 实例,并在云函数中进行调用:


操作步骤


  1. 配置环境变量

  2. 配置私有网络: 通过 Serverless Framework VPC 组件 创建 VPC 和 子网,支持云函数和数据库的网络打通和使用。

  3. 配置 Serverless DB: 通过 Serverless Framework Cynosdb 组件 创建 MySQL 实例,为云函数项目提供数据库服务。

  4. 编写业务代码: 通过 Serverless DB SDK 调用数据库,云函数支持直接调用 Serverless DB SDK,连接 PostgreSQL 数据库进行管理操作。

  5. 部署应用: 通过 Serverless Framework 部署项目至云端,并通过云函数控制台进行测试。

  6. 移除项目: 可通过 Serverless Framework 移除项目。


1. 配置环境变量

在本地建立目录,用于存放代码及依赖模块。本文以  test-MySQL 文件夹为例。

mkdir test-MySQL && cd test-MySQL
复制代码

由于目前 TDSQL-C Serverless 只支持 ap-beijing-3ap-guangzhou-4ap-shanghai-2 和 ap-nanjing-1 四个区域,所以这里还需要配置下,只需要在项目根目录下创建 .env 文件,然后配置 REGION 和 ZONE 两个环境变量:

# .envREGION=xxx  ZONE=xxx
复制代码


2. 配置私有网络

在 test-MySQL 目录下创建文件夹 VPC

mkdir VPC && cd VPC
复制代码

同时在 VPC 中新建 serverless.yml 文件,使用 VPC 组件完成私有网络和子网的创建。

serverless.yml 示例内容如下,全量配置参考产品文档

#serverless.ymlorg:mysql-appapp:mysql-appstage:devcomponent:vpc# (required) name of the component. In that case, it's vpc.name:mysql-app-vpc# (required) name of your vpc component instance.inputs:  region:${env:REGION}  zone:${env:ZONE}  vpcName:serverless-mysql  subnetName:serverless-mysql
复制代码


3. 配置 Serverless DB

在 test-MySQL 下创建文件夹 DB,并在 DB 文件夹下新建 serverless.yml 文件,并输入以下内容,通过 Serverless Framework 组件完成云开发环境配置。

serverless.yml 示例内容如下,全量配置参考产品文档

# serverless.yml org:mysql-appapp:mysql-appstage:devcomponent:cynosdbname:mysql-app-dbinputs:  region:${env:REGION}  zone:${env:ZONE}  vpcConfig:    vpcId:${output:${stage}:${app}:mysql-app-vpc.vpcId}    subnetId:${output:${stage}:${app}:mysql-app-vpc.subnetId}
复制代码


4. 编写业务代码与配置文件

在 test-MySQL 下创建文件夹 src,用于存放业务逻辑代码和相关依赖项。并在 src 文件夹下创建文件 index.js,输入如下示例代码。在函数中通过 SDK 连接数据库,并在其中完成 MySQL 数据库的调用。

exports.main_handler = async (event, context, callback) => {  var mysql      = require('mysql2');  var connection = mysql.createConnection({    host     : process.env.HOST,    user     : 'root',    password : process.env.PASSWORD  });  connection.connect();  connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {    if (error) throw error;    console.log('The solution is: ', results[0].solution);  });  connection.end(); }
复制代码

安装所需依赖模块:

npm install mysql2
复制代码

完成业务代码编写和依赖安装后,创建 serverless.yml 文件,示例文件如下:

org:mysql-appapp:mysql-appstage:devcomponent:scfname:mysql-app-scf
inputs: src:./ functionName:${name} region:${env:REGION} runtime:Nodejs10.15 timeout:30 vpcConfig: vpcId:${output:${stage}:${app}:mysql-app-vpc.vpcId} subnetId:${output:${stage}:${app}:mysql-app-vpc.subnetId} environment: variables: HOST:${output:${stage}:${app}:mysql-app-db.connection.ip} PASSWORD:${output:${stage}:${app}:mysql-app-db.adminPassword}
复制代码


5. 快速部署

完成创建后,项目目录结构如下:

   ./test-MySQL   ├── vpc   │   └── serverless.yml # vpc 配置文件   ├── db   │   └── serverless.yml # db 配置文件   ├── src   │   ├── serverless.yml # scf 组件配置文件   │   ├── node_modules # 项目依赖文件   │   └── index.js # 入口函数   └── .env # 环境变量文件
复制代码

使用命令行在 test-MySQL 下,执行以下命令进行部署。

sls deploy
复制代码
  • 部署时需要扫码授权,如果没有腾讯云账号,请 注册新账号。

  • 如果是子账号,请参考子账号权限配置完成授权

返回结果如下所示,即为部署成功。

mysql-app-vpc:   region:        xxx  zone:          xxx  vpcId:         xxxx-xxx  ...
mysql-app-db: dbMode: xxxx region: xxxx zone: xxxx ...
mysql-app-scf: functionName: xxxx description: xxx ...
59s › test-MySQL › "deploy" ran for 3 apps successfully.

复制代码

部署成功后,您可通过 云函数控制台,查看并进行函数调试,测试成功如下图所示:


移除项目

在 test-MySQL 目录下,执行以下命令可移除项目。

sls remove
复制代码

返回如下结果,即为成功移除。

serverless ⚡ framework4s › test-MySQL › Success
复制代码

除了通过组件一键创建所有资源外,您也可以通过控制台完成 Serverless 版本 MySQL 数据库的创建,并在云函数中正常使用 SDK 的方式完成调用。



头图:Unsplash

作者:April

原文:https://mp.weixin.qq.com/s/lUHHsF_fDAccpuavvkICvw

原文:国内首款 Serverless MySQL 数据库重磅发布,免费试用!

来源:TencentServerless - 微信公众号 [ID:ServerlessGo]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021 年 4 月 09 日 23:103131

评论

发布
暂无评论
发现更多内容

并发编程Bug的源头-原子性

996小迁

Java 程序员 架构 面试 并发编程

数字货币交易所开发价格,深圳区块链交易所系统APP开发

13530558032

合约API跟单系统开发方案,智能合约跟单软件

13530558032

Week 9 设计秒杀系统

黄立

三步法解析Axios源码

执鸢者

前端 axios

并发编程Bug的源头-原子性

Java架构师迁哥

作业-第5周

arcyao

架构师训练营第 1 期第九周总结

Leo乐

极客大学架构师训练营

架构师训练营第五周作业

丁乐洪

第九周作业

fmouse

极客大学架构师训练营

架构师第2期第5周作业一

老坛酸菜

极客大学架构师训练营

JVM垃圾回收及秒杀系统

天天向上

极客大学架构师训练营

训练营第九周作业 1

仲夏

极客大学架构师训练营

第八周作业 1

Yangjing

极客大学架构师训练营

第九周总结

fmouse

极客大学架构师训练营

第九周作业

alpha

极客大学架构师训练营

第九周总结

alpha

极客大学架构师训练营

native关键字作用到底是什么?

秦怀杂货店

Java 源码 源码刨析 native

第8周 作业2

Yangjing

极客大学架构师训练营

这种算法都看不懂!9张图是如何展示出来的

周老师

Java 编程 程序员 架构 面试

极客时间架构师训练营 - 第五期作业

文江

极客时间架构师训练营 1 期 - 第 9 周总结

Kaven

架构师训练营第 1 期第九周作业

Leo乐

极客大学架构师训练营

微服务手册:分库分表从分析到实践,不再停留只会说分库分表

互联网应用架构

分库分表

区块链钱包开发功能与优势,数字货币钱包APP开发

13530558032

交易所量化机器人搭建--市值管理机器人

13530558032

性能优化三第九周作业「架构师训练营第 1 期」

天天向善

极客时间架构师培训 1 期 - 第 9 周作业

Kaven

首次排查 OOM 实录

AI乔治

Java 架构 OOM

神经网络泛化

计算机与AI

神经网络 学习

斐波那契查找

ilovealt

算法和数据结构

国内首款 Serverless MySQL 数据库!-InfoQ