腾讯云云原生数据库TDSQL-C对接使用完全指南:从入门到生产实战

apphuang2026年07月05日 13:27:092

1. TDSQL-C产品概述

TDSQL-C MySQL版是腾讯云自研的新一代云原生关系型数据库,采用计算与存储分离的架构,100%兼容原生MySQL协议。与传统自建数据库相比,TDSQL-C具备秒级弹性扩缩容、按需计费、最高可达百万级QPS等核心优势。其计算层完全兼容MySQL 5.7和8.0,您可以在不修改应用程序任何代码的情况下,将现有MySQL数据库平滑迁移至TDSQL-C。

在实例形态上,TDSQL-C提供两种选择:预置资源实例(包年包月或按量计费)和Serverless实例。Serverless模式的计算和存储独立计费,计算按CCU个数计费,存储按实际使用量计费,计费系统按秒计费、按小时结算,非常适合业务负载波动较大的场景。

一个TDSQL-C集群包含一个读写实例和最多15个只读实例。通过增加只读实例,可以有效降低读写实例的负载,实现一写多读的架构。

需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联

2. 创建TDSQL-C集群

2.1 前提条件

在使用TDSQL-C之前,首先需要完成腾讯云账号的注册和实名认证。实名认证通过后,即可进入TDSQL-C购买页创建集群。

2.2 创建集群配置要点

在购买页中,需要完成以下核心配置:

  • 实例形态:选择预置资源或Serverless。预置资源适合负载稳定的生产环境;Serverless适合开发测试或波动较大的业务场景。
  • 实例引擎:支持事务集群和分析集群两种引擎。事务集群可通过开启只读分析引擎配合TXSQL读写实例提供HTAP能力;分析集群中仅存在只读分析引擎实例,通过Zero-ETL能力将配置的数据源数据同步至分析引擎。
  • 地域与可用区:选择数据库部署的地域和可用区,支持多可用区部署以提升容灾能力。
  • 网络:目前仅支持私有网络VPC。选择VPC后,同一VPC内的云服务器才能通过内网访问数据库实例。
  • 数据库版本:支持MySQL 5.7和8.0。
  • 计算实例:必须配置一个读写实例,并可选择添加0-15个只读实例。

2.3 创建数据库账号

集群创建完成后,需要在控制台创建用于连接的数据库账号。建议为不同的应用或环境创建独立的账号,并授予最小必要的权限。

3. 连接TDSQL-C的三种方式

TDSQL-C MySQL版支持通过以下三种方式进行连接:

3.1 内网地址连接(推荐)

通过内网地址连接是生产环境的首选方式。使用同地域、同账号、同VPC内的云服务器CVM直接连接数据库的内网地址,这种连接方式使用内网高速网络,延迟低、安全性高。

TDSQL-C支持实例级独立IP地址,即可以通过集群下读写实例或任意只读实例的IP地址连接访问对应实例。

查询内网地址:在TDSQL-C控制台的集群管理页面,找到目标实例,在其所属网络下方即可查看内网IP地址。

3.2 外网地址连接

外网地址需要手动开启。在控制台的实例详情页可以开启或关闭外网地址。外网连接易受网络影响,对网络有较高要求的场景推荐使用内网连接或云联网连接。需要注意的是,TDSQL-C不支持更换外网地址。

3.3 DMC数据库管理控制台连接

DMC(Database Management Center)是腾讯云提供的一款数据库管理工具,提供库表级操作、实时监控、实例会话管理、SQL窗口、数据管理等一体化服务。通过DMC可以直观方便地管理数据库实例。DMC服务目前免费使用,暂不收费。

登录DMC时,需要选择集群类型(事务集群或分析集群)、地域、集群、访问地址(主实例、只读实例、只读分析引擎或数据库代理),然后输入账号和密码即可。

4. 通过命令行连接TDSQL-C

在Linux云服务器上,可以通过MySQL客户端命令行工具连接TDSQL-C。

4.1 安装MySQL客户端

以CentOS 7.2系统为例,执行以下命令安装MySQL客户端:

yum install mysql

4.2 内网连接命令

安装完成后,执行以下命令登录TDSQL-C:

mysql -h 内网地址 -P 端口 -u 用户名 -p

参数说明:

  • -h:替换为TDSQL-C集群下目标实例的内网地址
  • -P:替换为内网端口号(默认为3306)
  • -u:替换为数据库账号名
  • -p:提示输入密码

示例:

mysql -h 10.0.168.14 -P 5308 -u root -p

输入密码后,出现 MySQL [(none)]> 提示即表示成功登录。

重要提示:使用MySQL登录命令时,务必增加 -c 参数,以支持注释透传功能。注释透传指支持透传SQL语句到对应的一个或者多个物理分片,并透传到分表键对应的分片中的操作方式。

mysql -h 内网地址 -P 端口 -u 用户名 -p密码 -c

5. Python连接TDSQL-C代码示例

TDSQL-C完全兼容MySQL协议,因此可以使用标准的Python MySQL驱动(如pymysql)进行连接。

5.1 安装pymysql

pip install pymysql

5.2 Python连接示例

import pymysql

# 数据库连接配置 config = { 'host': 'your_tdsql_c_endpoint.tencentcdb.com', # 内网或外网地址 'port': 3306, # 端口号 'user': 'your_username', # 数据库账号 'password': 'your_password', # 数据库密码 'database': 'your_database', # 数据库名 'charset': 'utf8mb4' # 字符集 }

try: # 建立连接 connection = pymysql.connect(**config) print("TDSQL-C连接成功!")

# 创建游标 cursor = connection.cursor()

# 执行查询 cursor.execute("SELECT VERSION()") result = cursor.fetchone() print(f"数据库版本: {result[0]}")

# 创建表示例 create_table_sql = """ CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(200) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) """ cursor.execute(create_table_sql) print("用户表创建成功")

# 插入数据示例 insert_sql = "INSERT INTO users (name, email) VALUES (%s, %s)" cursor.execute(insert_sql, ("张三", "zhangsan@example.com")) connection.commit() print(f"插入数据成功,影响行数: {cursor.rowcount}")

# 查询数据示例 cursor.execute("SELECT * FROM users") rows = cursor.fetchall() for row in rows: print(row)

# 关闭游标和连接 cursor.close() connection.close()

except pymysql.Error as e: print(f"数据库操作失败: {e}") except Exception as e: print(f"连接失败: {e}")

上述代码展示了完整的连接、建表、插入和查询流程。在实际生产环境中,建议将连接配置放在配置文件中,并使用连接池管理数据库连接。

6. Java连接TDSQL-C代码示例

TDSQL-C完全兼容MySQL协议和JDBC规范,可以使用标准的MySQL JDBC驱动进行连接。

6.1 引入JDBC依赖

在Maven项目的pom.xml中添加以下依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

6.2 JDBC基础连接示例

TDSQL Boundless无需单独引入驱动包,直接使用MySQL官方驱动即可:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class TDSQLConnectionExample { // JDBC连接URL - 完整示例 private static final String URL = "jdbc:mysql://tdsql-xxxxxx.dns.tdsql.com:3306/your_db_name?" + "useUnicode=true&characterEncoding=utf8mb4&" + "serverTimezone=Asia/Shanghai&autoReconnect=true&" + "failOverReadOnly=false&rewriteBatchedStatements=true&" + "connectTimeout=3000&socketTimeout=60000";

private static final String USER = "your_username"; private static final String PASSWORD = "your_password";

public static void main(String[] args) { try { // 加载JDBC驱动 Class.forName("com.mysql.cj.jdbc.Driver");

// 建立连接 Connection conn = DriverManager.getConnection(URL, USER, PASSWORD); System.out.println("TDSQL-C连接成功!");

// 执行查询 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT VERSION()");

if (rs.next()) { System.out.println("数据库版本: " + rs.getString(1)); }

// 关闭资源 rs.close(); stmt.close(); conn.close();

} catch (Exception e) { e.printStackTrace(); } } }

JDBC URL中各参数的含义:

  • useUnicode=true&characterEncoding=utf8mb4:启用Unicode编码,支持完整Unicode包括emoji字符,防止中文乱码
  • serverTimezone=Asia/Shanghai:设置时区为UTC+8,解决MySQL 8.x驱动中的时区异常
  • autoReconnect=true:当连接断开或主库切换时自动重连,防止业务因无效连接而报错
  • rewriteBatchedStatements=true:启用批量SQL重写,提高INSERT/UPDATE批量操作的性能
  • connectTimeout=3000:连接建立超时设置为3秒,实现快速失败,避免线程阻塞
  • socketTimeout=60000:读写超时设置为60秒,防止慢SQL导致连接池耗尽

6.3 使用HikariCP连接池(生产推荐)

在生产环境中,强烈建议使用连接池管理数据库连接。连接池的核心价值在于解决频繁创建/销毁连接带来的性能开销、连接无限制增长以及数据库雪崩风险。以下以HikariCP为例:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class TDSQLHikariCPExample { private static HikariDataSource dataSource;

static { HikariConfig config = new HikariConfig();

// JDBC URL config.setJdbcUrl( "jdbc:mysql://tdsql-xxxxxx.dns.tdsql.com:3306/your_db_name?" + "useUnicode=true&characterEncoding=utf8mb4&" + "serverTimezone=Asia/Shanghai&autoReconnect=true&" + "rewriteBatchedStatements=true" ); config.setUsername("your_username"); config.setPassword("your_password");

// 驱动类名 config.setDriverClassName("com.mysql.cj.jdbc.Driver");

// 连接池核心参数 config.setMinimumIdle(5); // 最小空闲连接数 config.setMaximumPoolSize(20); // 最大连接数 config.setIdleTimeout(300000); // 空闲连接回收时间:5分钟 config.setConnectionTimeout(3000); // 连接超时:3秒 config.setMaxLifetime(1800000); // 连接最大生命周期:30分钟

// 连接测试 config.setConnectionTestQuery("SELECT 1");

dataSource = new HikariDataSource(config); }

public static Connection getConnection() throws Exception { return dataSource.getConnection(); }

public static void main(String[] args) { try (Connection conn = getConnection(); PreparedStatement ps = conn.prepareStatement("SELECT VERSION()"); ResultSet rs = ps.executeQuery()) {

if (rs.next()) { System.out.println("TDSQL-C版本: " + rs.getString(1)); } } catch (Exception e) { e.printStackTrace(); } } }

HikariCP核心参数建议值:

  • minimumIdle:建议设置为CPU核心数×2,保证连接池中有固定数量的空闲连接
  • maximumPoolSize:根据业务并发量按需配置
  • idleTimeout:建议300000ms(5分钟),回收长期空闲的连接以释放数据库资源
  • connectionTimeout:建议3000ms,快速失败避免线程阻塞

7. 数据库代理与读写分离

TDSQL-C的数据库代理服务提供了自动读写分离能力。通过数据库代理,可以将读请求自动路由到只读实例,写请求路由到读写实例,从而有效降低读写实例的负载。

7.1 开启数据库代理

在TDSQL-C控制台的集群管理页面,选择已开启代理的集群,进入集群详情页后可以在拓扑图中找到数据库代理板块,点击详情进入数据库代理管理页面。

7.2 设置读写分离

在数据库代理管理页面,可以设置代理访问地址的读写属性。选择"读写分离"后,系统自动开启读写分离功能。同时支持为读写实例和多个只读实例分配不同的读权重。

接入模式支持"均衡分配"和"就近访问"两种模式。均衡分配模式适合对延迟不敏感的场景,就近访问模式则优先路由到同可用区的实例以降低延迟。

8. Serverless弹性伸缩配置

对于Serverless实例,TDSQL-C支持自动暂停和弹性扩缩容功能。

8.1 配置自动暂停

在集群详情页的"Serverless配置"中,可以勾选"自动暂停"并设置暂停时间(如1小时)。当1小时内无连接时,实例自动暂停,计算层停止计费。

8.2 自动扩缩容规则

Serverless实例可根据负载变化自动扩缩容。例如,当CPU使用率超过70%时自动扩容,负载下降后自动缩容。计算资源按秒级实际使用量收取费用,实例暂停后不收取计算费用。

这种弹性能力特别适合开发测试环境、电商大促等业务负载波动较大的场景。

9. 监控告警配置

TDSQL-C控制台提供了丰富的可视化监控告警页面,支持查看数据库运行状况和性能指标。

9.1 查看监控数据

在集群管理页选择"监控告警",可以查看CPU使用率、内存使用率、连接数、QPS、慢查询等核心性能指标。

9.2 设置告警策略

通过腾讯云可观测平台控制台,可以配置告警策略:

  1. 登录腾讯云可观测平台控制台,在左侧导航选择"告警管理" > "告警配置"
  2. 在告警策略列表页,点击"新建策略"
  3. 在新建策略页中,完成基本信息、告警规则、告警通知的设置

告警规则可以针对CPU使用率、连接数、慢查询数等指标设置阈值,当指标超过阈值时通过短信、邮件、微信等方式推送告警通知。

10. 安全组与访问控制

安全组是一种虚拟防火墙,用于设置云数据库等实例的网络访问控制,是重要的网络安全隔离手段。

10.1 配置安全组

在TDSQL-C控制台的集群管理页面,选择"安全组"页签,选择需要配置安全组的实例类型(读写实例、只读实例、只读分析引擎、数据库代理),点击"配置安全组"。

安全组目前仅支持私有网络VPC内网访问和外网访问的网络控制。

10.2 安全组规则建议

  • 授权用户访问时只允许特定IP或IP段访问
  • 如果是公网访问场景,务必放通所有涉及到的出口IP
  • 遵循最小权限原则,仅开放必要的端口(如3306)

11. 数据迁移与导入导出

TDSQL-C MySQL版计算层100%兼容原生MySQL,因此可以使用MySQL原生的工具进行数据迁移。

11.1 数据导出方法

支持以下两种导出方式:

  • 通过DMC管理平台导出:在DMC界面中可视化导出数据
  • 使用MySQL原生工具:如mysqldump命令行工具
mysqldump -h 内网地址 -P 端口 -u 用户名 -p 数据库名 > backup.sql

11.2 数据导入方法

支持以下导入方式:

  • 使用DTS数据传输服务:持续同步增量数据
  • 使用DMC管理平台导入
  • 使用MySQL Workbench导入:通过Server > Data Import功能导入SQL文件
  • 使用MySQL命令行工具
mysql -h 内网地址 -P 端口 -u 用户名 -p 数据库名 < backup.sql

注意:使用mysqldump导出的数据文件必须兼容目标TDSQL-C的MySQL版本。

12. 计费模式与成本优化

12.1 计费模式

TDSQL-C的计费项包括计算节点、存储空间以及增值服务项。预置资源实例支持按量计费和包年包月两种模式。Serverless实例计算和存储独立计费,计算按CCU个数计费,存储按使用量GB计费。

12.2 成本优化建议

  • 选择合适的实例规格:根据业务实际负载选择计算规格,避免资源浪费
  • 使用Serverless应对波动:对于开发测试或负载波动大的场景,Serverless模式可以显著降低成本
  • 利用自动暂停功能:Serverless实例在无连接时可自动暂停,暂停期间不收取计算费用
  • 合理规划只读实例:根据读流量需求合理配置只读实例数量
  • 购买资源包:对于稳定运行的实例,可以购买资源包进行资源抵扣,享受更优惠的价格

13. 常见连接问题排查

13.1 连接失败常见原因

TDSQL-C数据库连接失败可能由以下原因导致:

  • 网络问题:客户端与数据库不在同一VPC或子网,未配置正确的网络互通(如安全组、NAT网关)
  • 认证失败:用户名、密码错误,或账号权限不足
  • 实例状态异常:数据库实例未启动、已隔离(欠费)或正在维护中
  • 配置问题:连接地址填写错误,或端口未开放
  • 客户端问题:客户端驱动版本不兼容,或代码中连接字符串配置错误

13.2 解决建议

  • 通过TDSQL-C控制台检查实例状态、网络配置和账号权限
  • 通过私有网络VPC和安全组配置网络隔离与访问规则
  • 通过云监控查看实例的CPU、内存、连接数等指标,排查资源瓶颈
  • 通过数据库审计功能追踪连接失败的具体操作记录

14. 常见问题问答

问1:TDSQL-C支持哪些MySQL版本?
答:TDSQL-C MySQL版支持MySQL 5.7和8.0两个大版本。

问2:一个TDSQL-C集群最多可以配置多少个只读实例?
答:一个集群包含一个读写实例和最多15个只读实例。

问3:TDSQL-C支持JDBC连接吗?
答:支持。TDSQL-C完全兼容MySQL协议,也完全支持JDBC协议。使用标准的MySQL JDBC驱动即可连接。

问4:TDSQL-C Serverless实例如何计费?
答:Serverless实例的计算和存储独立计费。计算按CCU个数计费,存储按实际使用量GB计费。计费系统按秒计费、按小时结算。实例暂停后不收取计算费用。

问5:TDSQL-C支持数据库版本升级吗?
答:目前TDSQL-C不支持直接进行数据库版本升级(如从MySQL 5.7升级到8.0)。如需升级版本,可以创建目标版本的新实例,通过DTS数据传输服务将源数据迁移到新实例。

问6:TDSQL-C如何实现读写分离?
答:通过开启数据库代理服务,在代理访问地址中选择"读写分离"属性即可自动开启读写分离功能。系统会自动将读请求路由到只读实例,写请求路由到读写实例。

相关文章

腾讯云服务器购买优惠!3 个省钱攻略 + 1 个安全真相,新手必看!

腾讯云服务器购买优惠!3 个省钱攻略 + 1 个安全真相,新手必看!

最近后台总收到小伙伴私信:“腾讯云服务器看着挺好,但价格有点顶,学生党 / 小团队实在买不起咋办?” 别急!今天就来手把手教你 “花小钱办大事”,不光有省钱攻略,还会扒一扒大家最关心的安全问题,看完这…

After 10 Years as a Tencent Cloud Agent, Let Me Talk About Rebates

After 10 Years as a Tencent Cloud Agent, Let Me Talk About Rebates

Lately, I’ve been getting a lot of questions from friends: “Does Tencent offer rebates? Can you…

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

一、腾讯云代理商返利机制核心逻辑1. 行业背景与代理模式腾讯云作为国内公有云市场的第二大领导者(据IDC 2025年数据,占据国内27.6%的市场份额),采用渠道商代理模式拓展市场。代理商负…

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

2026腾讯云代理商返利政策深度解析:头部代理合作指南与成本优化策略

一、腾讯云代理商返利机制核心逻辑1. 行业背景与代理模式腾讯云作为国内公有云市场的第二大领导者(据IDC 2025年数据,占据国内27.6%的市场份额),采用渠道商代理模式拓展市场。代理商负…

2026腾讯云代理商返佣政策全解析:五级代理体系与企业上云成本优化指南

2026腾讯云代理商返佣政策全解析:五级代理体系与企业上云成本优化指南

一、腾讯云五级代理体系:权益阶梯与合作价值1. 五级代理的核心权益差异腾讯云按规模、服务能力与合作深度,构建了从基础到顶级的五级代理体系,各级权益呈现显著阶梯差:•标准级代理:入门门槛最低,仅能提供基…

2026年腾讯云代理深度解析:从折扣体系到最优合作策略

2026年腾讯云代理深度解析:从折扣体系到最优合作策略

上海汪远信息科技有限公司作为腾讯云全国级殿堂级代理,凭借13年云服务经验与深厚的官方合作关系,为企业提供全方位的上云支持,可百度:上海汪远信息科技有限公司,微信:791201210一、腾讯云代理体系全…