写点什么

TiDB 企业版敏捷模式体验与对比|制造业 MES、ERP 可参考

作者: 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
复制代码


一键安装部署,很便捷


sh install.sh
复制代码


部署完成后,检查 TEM 组件状态


TIUP_HOME=/tem-deploy/.tem tiup tem display tem-servers
复制代码

纳管集群

前置步骤,添加凭证、添加可用主机


选择可用中控机



选择需纳管的集群



填写数据库管理员账号密码,等待纳管任务执行成功


指标监控

基础指标很全面



高级指标包括内存、IO、线程池 CPU 等等,常见问题也给出了排查指南


备份、闪回、巡检等

备份任务配置



可视化操作闪回



定时巡检配置


数据压缩率对比

  • 准备数据使用 tiup bench 生成 500 Warehouse 的数据,大小约为 50G

  • 数据压缩比


对 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



  • 压缩比:48 GB / 22 GB ≈ 2.18

  • 总结:本次测试中,TiDB 的存储效率约为 MySQL 的 2 倍,即 TiDB 能够在相同数据量下节省近一半的磁盘空间。

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 相当。


  1. 吞吐量:TiDB 的吞吐量比 MySQL 高出 97%。

  2. 延迟: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 自动重分布

总结

  • TiDB 敏捷模式 能够完美替换 MES、ERP 系统中的 MYSQL 单机数据库。

  • TEM 的可视化操作让运维更轻松、便捷;

  • 吞吐量、写延迟、数据压缩率远优于 MySQL8 社区版,读延迟则与 MySQL 相当。未来一键扩容为分布式的可扩展性是 MYSQL 不具备的。


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiDB企业版敏捷模式体验与对比|制造业 MES、ERP 可参考_平凯数据库敏捷模式_TiDB 社区干货传送门_InfoQ写作社区