当前位置:首页 > 行业动态 > 正文

分布式数据库TDSQL怎么创建

安装TDSQL软件包,配置多节点集群参数,启动各节点服务,通过管理工具或SQL命令执行集群初始化,创建

分布式数据库TDSQL创建指南

TDSQL基础认知

TDSQL是酷盾安全自主研发的分布式数据库产品,兼容MySQL/PostgreSQL协议,提供金融级高可用、弹性扩展能力,其核心特性包括:

  • 分布式架构:支持自动分片(Sharding)与负载均衡
  • 高可用设计:采用Raft协议实现多副本强一致性
  • 弹性扩展:在线扩容节点无需停机
  • 混合存储引擎:支持行存+列存混合存储
  • 全局事务:基于2PC实现跨节点事务一致性

创建前环境准备

创建TDSQL集群需满足以下条件:

组件类型 最低配置要求 推荐配置
计算节点(TN) 8核CPU/16GB内存/50GB SSD 16核CPU/32GB内存/100GB SSD
管理节点(CN) 4核CPU/8GB内存/20GB SSD 8核CPU/16GB内存/50GB SSD
网络要求 万兆网卡+VPC私有网络 支持RDMA的网络环境
操作系统 CentOS 7.6+/Tencent Linux 3.0+ 建议使用容器化部署(TKE)

创建流程详解

控制台创建(标准路径)

登录酷盾安全控制台,选择【数据库】->【分布式数据库TDSQL】,点击「创建实例」进入向导:

步骤1:基础配置

  • 计费模式:按需/包年包月
  • 地域选择:优先同AZ部署,跨AZ需开启DRR
  • 实例规格:根据业务量选择基础/通用/金融级规格
  • 存储类型:SSD云盘(建议开启多副本)

步骤2:网络配置
| 配置项 | 说明 | 建议值 |
|—————-|——————————|————————-|
| VPC网络 | 选择已创建的私有网络 | 新建独立VPC |
| 子网 | 需包含至少3个可用IP段 | /16子网划分 |
| 安全组 | 开放必要端口 | 默认规则+自定义3306/443 |

步骤3:集群拓扑设计

  • 三节点起步:1个CN+2个TN(生产环境建议5节点以上)
  • 部署架构:
    • 单AZ:适合开发测试环境
    • 多AZ:生产环境必须,开启跨AZ容灾
  • 存储策略:
    • 本地SSD+COS对象存储(冷热分离)
    • 开启落盘同步(SYNC_MODE=STRICT)

步骤4:参数调优
关键参数配置建议:

# 事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
# 分片策略配置(示例:按用户ID哈希)
CREATE SHARDING RULE `user_shard`
    PARTITION BY HASH(user_id)
    BUCKETS 4;
# 连接池配置(Java示例)
HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(50);
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");

命令行创建(高级路径)

对于需要精细化控制的场景,可通过CLI工具创建:

# 下载TDSQL客户端工具包
wget https://tdsql-download.tencent.cloud/tools/tdsql_cli_tool_linux.tar.gz
tar -xzf tdsql_cli_tool_linux.tar.gz
# 初始化集群元信息
tdsql-ctl --action init-cluster 
    --cn-ip 192.168.1.10 
    --tn-ips 192.168.1.20,192.168.1.30 
    --pd-ips 192.168.1.40,192.168.1.50 
    --cluster-name my_tdsql_cluster 
    --db-version mysql-8.0
# 启动管理服务
tdsql-ctl --action start-service 
    --role cn 
    --data-dir /data/tdsql/cn_data 
    --log-dir /var/log/tdsql/cn_log

数据库初始化操作

创建逻辑库

CREATE DATABASE wechat_pay;
ALTER DATABASE wechat_pay CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

表结构设计规范

设计原则 具体措施
分区键选择 使用业务主键作为分片键,如user_id/order_id
索引优化 每个表最多创建3个二级索引,避免全表扫描
数据类型 DECIMAL替代FLOAT,VARCHAR(255)统一字符长度
分片表模板 “`sql

CREATE TABLE user_data (
id BIGINT PRIMARY KEY,
name VARCHAR(64) NOT NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX(name) CLUSTERED
) SHARDKEY=id;

|
## 3. 数据迁移方案
离线迁移:使用DTS工具(支持MySQL/CSV/SQLServer)
实时同步:部署Canal组件+TDSQL Binlog接入
数据校验:执行CHECKSUM TABLE + MD5校验
# 五、高可用配置
## 1. 多活架构部署
| 部署模式 | 说明                                 | RPO/RTO指标               |
|----------|--------------------------------------|--------------------------|
| 同城双活 | 同一地域不同AZ部署                   | RPO<5s, RTO<30s          |
| 异地灾备 | 跨可用区部署+异步复制                | RPO<1min, RTO<2min       |
| 全球多活 | 多地域部署+单元化架构                | RPO<15s, RTO<1min        |
## 2. 故障切换演练
```bash
# 模拟TN节点故障
kill -9 `ps -ef | grep tdsql_tn | awk '{print $2}'`
# 查看集群状态
tdsql-ctl --action status --cluster-name my_tdsql_cluster
# 触发自动故障转移
tdsql-ctl --action failover --target-node tn2

性能调优指南

SQL执行计划分析

EXPLAIN ANALYZE SELECT  FROM order_data WHERE order_id = 'O202311010001';

典型优化案例:

  • 原始执行计划:全表扫描+排序(耗时800ms)
  • 优化后计划:范围扫描+索引覆盖(耗时12ms)

参数调整建议

参数名称 默认值 调优方向
innodb_buffer_pool_size 4G 根据内存总量调整至60%-80%
query_cache_size 128M 关闭(分布式场景易导致缓存雪崩)
max_connections 500 根据业务峰值调整至2000+
read_timeout 30s 长事务场景调整为300s

监控与运维

监控指标看板

指标类别 关键指标 阈值告警
节点健康 CPU使用率/内存使用率/磁盘IO CPU>85%持续5分钟
SQL执行 QPS/TPS/慢查询比例 慢查询>1%
存储水位 数据盘使用率/WAL日志延迟 使用率>95%持续10分钟
网络延迟 跨节点RTT/丢包率 RTT>50ms

日志分析技巧

  • 错误日志定位:/var/log/tdsql/error.log中查找ORA-xxxx错误码
  • 慢日志分析:启用slow_query_log=ON,设置long_query_time=2s
  • 审计日志:开启binlog_format=ROW,配合pt-query-digest分析高频SQL

安全加固措施

安全维度 实施方法
访问控制 启用KMS加密,设置白名单IP,强制SSL连接
权限管理 最小权限原则,使用RBAC模型分配权限
数据脱敏 内置函数MASK()实现敏感字段加密,如:SELECT MASK(credit_card,'')
审计合规 开启audit_log记录所有DDL/DML操作,保留周期≥180天

典型应用场景

电商订单系统

  • 分片策略:按order_id^HASH%4分片
  • 容量规划:初期2个TN节点支撑50万QPS,线性扩展至10节点支持百万级并发
  • 性能表现:事务处理延迟<10ms,99分位线<50ms

金融交易系统

  • 多活架构:北京+上海双活,数据同步延迟<200ms
  • 一致性保障:开启全局事务,采用XA协议保证原子性
  • 灾备方案:每分钟备份+异地留存3份副本

FAQs

Q1:创建集群时提示”PD server not reachable”如何处理?
A1:该错误通常由以下原因导致:

  1. PD服务器端口(默认2379)未开放
  2. VPC路由表缺少对应条目
  3. 安全组规则未放行TCP协议2379端口
    解决方法:检查CN/TN节点的云主机安全组,添加入方向规则允许2379端口访问,并确认VPC路由正确。

Q2:如何优化大批量导入性能?
A2:建议采取以下措施:

  1. 禁用索引:导入前临时删除二级索引,完成后重建
  2. 调整参数:设置innodb_flush_log_at_trx_commit=0,import_buffer_size=64M
  3. 并行导入:使用pt-online-schema-change工具分批次导入
  4. 开启批量插入:将INSERT语句合并为单条含
0