上一篇
分布式数据库TDSQL怎么创建
- 行业动态
- 2025-05-12
- 6
安装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:该错误通常由以下原因导致:
- PD服务器端口(默认2379)未开放
- VPC路由表缺少对应条目
- 安全组规则未放行TCP协议2379端口
解决方法:检查CN/TN节点的云主机安全组,添加入方向规则允许2379端口访问,并确认VPC路由正确。
Q2:如何优化大批量导入性能?
A2:建议采取以下措施:
- 禁用索引:导入前临时删除二级索引,完成后重建
- 调整参数:设置innodb_flush_log_at_trx_commit=0,import_buffer_size=64M
- 并行导入:使用pt-online-schema-change工具分批次导入
- 开启批量插入:将INSERT语句合并为单条含