作者: SuiXin 原文来源:https://tidb.net/blog/dd963ac0
前言
本人的工作内容与制造业强相关,多涉及 MES、ERP 等系统,绝大多数使用着单机部署的数据库。在当前国产化替代的背景下,各业务系统都在找寻一款合适的国产数据库产品进行替换。TiDB 作为一款优秀的分布式 NewSQL 数据库,其敏捷模式的单机部署降低了使用成本,这一点吸引我参与这次体验活动。
平凯数据库的敏捷模式,支持单节点部署,将 tikv、tidb、pd 组件间的网络调用变为进程间调用,进一步降低延迟。依然支持分布式能力,未来可按需一键转换。总的来说,敏捷模式降低了 TiDB 的初步使用成本、优化了请求延迟。
本次体验重点关注敏捷模式的部署、数据压缩率、OLTP 性能和可扩展性,并与社区版 MYSQL 8 进行对比。同时,在 TEM 中试用纳管敏捷模式集群的功能。
敏捷模式部署
机器清单
mysql 配置
[mysqld]datadir=/tidbx/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysql/mysqld.logpid-file=/run/mysqld/mysqld.pid
server-id=30007
log-bin=mysql-bin
innodb_flush_log_at_trx_commit=1
port = 3306
key_buffer_size=64M
max_allowed_packet=128M
net_buffer_length = 8K
read_buffer_size = 64M
innodb_lock_wait_timeout=300
tmp_table_size=167772160
tmpdir=/tidbx/mysql/tmp
log_timestamps=system
innodb_buffer_pool_size = 10G
join_buffer_size = 64M
sort_buffer_size = 64M
read_rnd_buffer_size = 64M
复制代码
命令行部署
首先,上传 sever 包和 toolkit 包,搭建本地镜像仓。之后,开始编辑配置文件和部署集群
cd tidb-ee-server-v7.1.8-5.2-20250630-linux-amd64./local_installcp -R tidb-ee-server-v7.1.8-5.2-20250630-linux-amd64/keys ~/.tiup/tiup mirror merge tidb-ee-toolkit-v7.1.8-5.2-20250630-linux-amd64tiup cluster deploy tidbx v7.1.8-5.2-20250630 tidbx.yml
复制代码
与常规部署对比,敏捷模式部署多了kind: fusion,配置文件如下:
global: kind: fusion user: "tidb" ssh_port: 22 deploy_dir: "/tidb-deploy" data_dir: "/tidbx"monitored: node_exporter_port: 9700 blackbox_exporter_port: 9715server_configs: pd: replication.max-replicas: 1 replication.enable-placement-rules: falsetidb_servers: - host: 192.168.228.200monitoring_servers: - host: 192.168.228.200grafana_servers: - host: 192.168.228.200
复制代码
进行集群初始化和 root 用户修密
tiup cluster start tidbx --initmysql -h 192.168.228.200 -P 4000 -uroot -p <<EOFalter user root@'%' identified by '******';EOF
复制代码
完成敏捷模式部署后,设置以下参数
set global tidb_runtime_filter_mode=LOCAL; set global tidb_opt_enable_mpp_shared_cte_execution=on; set global tidb_rc_read_check_ts=on; set global tidb_analyze_skip_column_types="json,blob,mediumblob,longblob,mediumtext,longtext"; set global tidb_enable_collect_execution_info=off; set global tidb_enable_instance_plan_cache=on; set global tidb_instance_plan_cache_max_size=2GiB; set global tidbx_enable_tikv_local_call=on; set global tidbx_enable_pd_local_call=on; set global tidb_schema_cache_size=0; -- 是否持久化到集群:否,仅作用于当前连接的 TiDB 实例 set global tidb_enable_slow_log=off;
复制代码
敏捷模式相关进程如下,可以看到 tikv、tidb、pd 组件整合为了 tidbx 组件
体验 TEM
部署流程
解压安装包
tar -xvf tem-amd64.tarcd tem-package-v3.1.0-linux-amd64/mkdir -pv /tem-datamkdir -pv /tem-deploy
复制代码
修改 config.yaml 配置文件:
global: user: "tem" group: "tem" ssh_port: 22 deploy_dir: "/tem-deploy" data_dir: "/tem-data" arch: "amd64" log_level: "info" enable_tls: falseserver_configs: tem_servers: db_addresses: "127.0.0.1:4000" db_u: "root" db_pwd: "" db_name: "test" log_filename: "/tem-deploy/tem-server-8080/log/tem.log" log_tem_level: "info" log_max_size: 300 log_max_days: 0 log_max_backups: 0 external_tls_cert: "" external_tls_key: "" internal_tls_ca_cert: "" internal_tls_cert: "" internal_tls_key: ""tem_servers: - host: "0.0.0.0" port: 8080 mirror_repo: true
复制代码
一键安装部署,很便捷
部署完成后,检查 TEM 组件状态
TIUP_HOME=/tem-deploy/.tem tiup tem display tem-servers
复制代码
纳管集群
前置步骤,添加凭证、添加可用主机
选择可用中控机
选择需纳管的集群
填写数据库管理员账号密码,等待纳管任务执行成功
指标监控
基础指标很全面
高级指标包括内存、IO、线程池 CPU 等等,常见问题也给出了排查指南
备份、闪回、巡检等
备份任务配置
可视化操作闪回
定时巡检配置
数据压缩率对比
对 TiDB 执行合并
tiup ctl:v7.1.8-5.2-20250630 tikv --pd="127.0.0.1:2379" compact-cluster
复制代码
在 TiDB 和 MYSQL 执行以下 SQL,收集统计信息,统计各表数据量
ANALYZE table test.customer; ANALYZE table test.district; ANALYZE table test.history; ANALYZE table test.item; ANALYZE table test.new_order; ANALYZE table test.order_line; ANALYZE table test.orders; ANALYZE table test.stock; ANALYZE table test.warehouse; SELECT table_schema AS '数据库名', table_name, ROUND((data_length + index_length) / 1024 / 1024, 2) AS '数据库大小(MB)' FROM information_schema.tables where table_schema='test' ORDER BY 3 DESC;
复制代码
各表的数据量
如下图,MYSQL 数据文件大小为 48G
如下图,TiDB 数据文件大小为 22G
TPC-C 性能对比
TPC-C 是一个对 OLTP 系统进行测试的规范,使用一个商品销售模型对 OLTP 系统进行测试,其中包含五类事务:
TPC-C Benchmark 规定了数据库的初始状态,其中 ITEM 表中固定包含 10 万种商品,仓库的数量可进行调整,假设 WAREHOUSE 表中有 W 条记录
使用 tiup bench 工具 以 50 WAREHOUSE 进行 OLTP 测试
准备数据
tiup bench tpcc prepare -P 4000 -D tpcc --user=tpcc --password=****** -T 8 --warehouses 50
复制代码
执行测试命令
tiup bench tpcc run -P 4000 -D tpcc --user=tpcc --password=****** --warehouses 50 --time 12m -T 16 run
复制代码
在此次 TPC-C Benchmark 中,TiDB(敏捷模式单机)在吞吐量、写延迟方面显著优于 MySQL,读延迟则与 MYSQL 相当。
吞吐量:TiDB 的吞吐量比 MySQL 高出 97%。
延迟:TiDB 的写延迟优势非常明显。通过敏捷模式的优化,订单查询的读延迟也略优于 MYSQL。但在库存缺货状态分析场景下逊于 MYSQL,可能需要调整 Block Cache 等参数。
可扩展性
在 TiDB 敏捷模式 下,可以采用 TiCD 组件构建两个集群的主-从或主-主高可用架构。也可以通过扩容tidb-server节点,从单机一键转为分布式。
TiCDC 实现高可用
有两个敏捷模式集群 A、B,规划每个集群均创建一个 ticdc 组件,搭建两个集群间的双向复制,参考《TiCDC 双向复制》。
准备工作
用 Dumpling + Lightning 把 A、B 集群当前数据互相同步到对端,保证起点一致。
记录集群 A、B 在数据一致时刻对应的 TSO,后续 --start-ts 分别用这两个 TSO,避免重复回放。
下面为每个集群扩容一个 ticdc 组件
集群 A 的 scale-out.yaml
cdc_servers: - host: 192.168.228.200 port: 8300
复制代码
集群 B 的 scale-out.yaml
cdc_servers: - host: 192.168.228.111 port: 8300
复制代码
分别在集群 A、B 执行tidb cluster scale-out xxx scale-out.yaml
创建主从同步任务
集群 A 创建 A->B 链路
cdc cli changefeed create --server=http://192.168.228.200:8300 \ --changefeed-id=a-to-b \ --sink-uri="tidb://user:pwd@192.168.228.111:4000/?worker-count=16&max-txn-row=256" \ --start-ts=<A集群对应TSO> \ --config=cfg-a.toml
复制代码
cfg-a.toml
# 会在 KV 层打标记,TiCDC 识别到复制来的数据,即丢弃该条,从而天然避免回环bdr-mode = true# 可选:加数据源标记,方便排障source-id = "dc-a"enable-old-value = trueforce-replicate = true[mounter]worker-num = 16[filter]rules = ["tpcc.*"]
复制代码
集群 B 创建 B->A 链路
cdc cli changefeed create --server=http://192.168.228.111:8300 \ --changefeed-id=b-to-a \ --sink-uri="tidb://user:pwd@192.168.228.200:4000/?worker-count=16&max-txn-row=256" \ --start-ts=<B集群对应TSO> \ --config=cfg-b.toml
复制代码
cfg-b.toml
# 防止循环复制bdr-mode = true# 可选:加数据源标记,方便排障source-id = "dc-b"enable-old-value = trueforce-replicate = true[mounter]worker-num = 16[filter]rules = ["tpcc.*"]
复制代码
查看链路状态
cdc cli changefeed query -s http://192.168.228.200:8300 -c a-to-b
复制代码
一键转分布式
和常规模式下类似,编辑 scale-out 配置文件,扩容 tidb-server
tidb_servers: - host: 192.168.228.111
复制代码
执行tidb cluster scale-out tidbx tidbx-cdc.yml,完成扩容,region 自动重分布
总结
评论