10 月,开发者不可错过的开源大数据大会-2021 WeDataSphere 社区大会深圳站 了解详情
写点什么

国内首款 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:103485

评论

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

PBAC相对于传统ABAC的优势

龙归科技

IT 架构师 权限 ABAC PBAC

BOE(京东方)物联网解决方案让会议更“智慧”

爱极客侠

第八章学习总结

Kasn

产品经理 产品经理训练

Redis 在项目中合理使用经验总结

Java小咖秀

redis

互联网信贷风险与大数据 催收管理

张老蔫

28天写作

【315特别放送】TcaplusDB致力于给用户提供安全放心有保障的数据服务

TcaplusDB

数据库 后端 TcaplusDB Tcaplus

GitHub Action + ACK:云原生 DevOps 落地利器

阿里巴巴云原生

容器 运维 云原生 k8s 应用服务中间件

架构师训练营第六周作业 - 命题作业

阿德儿

面试字节跳动定级2-2,拿32*16offer,P8大佬的算法教程给了我春天!

Java架构之路

Java 程序员 架构 面试 编程语言

邀请领好礼!米家显示器挂灯、雷蛇烈焰神虫送给你!

滴滴云

openpyxl 对Excel的基础操作

IT蜗壳-Tango

办公自动化 3月日更 IT蜗壳教学

中台还没建就开始拆中台了?医疗中台何去何从?

菜根老谭

中台 医疗中台

小树量化交易机器人系统开发策略

薇電13O25249123

数字货币

Wireshark 数据包分析学习笔记Day12

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

寻找被遗忘的勇气(十五)

Changing Lin

3月日更

融云聊天室属性 kv

融云 RongCloud

音视频

使用 Arthas 排查 SpringBoot 诡异耗时的 Bug

阿里巴巴云原生

Java 开发者 云原生 中间件 Arthas

HECO火币生态链挖矿系统开发搭建技术

薇電13242772558

数字货币 区块链生态

Web 安全之 CSRF

架构精进之路

Web 安全 3月日更

区块链助飞机加油和支付过程更透明高效

CECBC区块链专委会

区块链

架构师训练营第十周作业 - 命题作业

阿德儿

本科毕业,六年Java开发经验,阿里技术三面+HR面,拿下38*16薪资P7offer

Java架构之路

Java 程序员 架构 面试 编程语言

【死磕JVM】一道面试题引发的“栈帧”!!!

牧小农

JVM Java虚拟机 运行时数据区 Java虚拟机栈 栈帧

教你如何在Centos配置Oracle客户端运行时

happlyfox

28天写作 3月日更

干货 | 比特币就是时钟

CECBC区块链专委会

比特币 时间同步

Web3.0时代到来 imToken借助区块链帮更多人完成价值存储和转移

CECBC区块链专委会

区块链

华为18级工程师总结的50W字算法、LeetCode、操作系统、计算机底层刷题必备笔记

Java架构之路

Java 程序员 架构 面试 编程语言

如何写好操作类说明文档

lenka

3月日更

第八章作业

Kasn

产品经理 产品经理训练

Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?

云流

数据库 redis 架构

不要去毕业就进外包!苦肝900个小时从外包到大厂,回头看这一路是真的辛酸!

程序员小毕

Java 程序员 架构 面试 分布式

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