写点什么

平凯数据库敏捷模式 3 节点尝鲜:降本明显,弹性与性能适配多行业需求

作者: guitarsoft 原文来源:https://tidb.net/blog/bd481a97

一、前言

1.1 简介

从事数据库行业 10 多年,接触过 oracle,mysql,postgres,tidb,oceanbase,达梦,金仓,gbase,神通,海量 ……

1.2 目前遇到的数据库挑战

国产化目前遇到的主要难题是海量数据不停应用迁移。

1.3 参加活动的原因

不断的学习,这篇文章也是机缘巧合下试用平凯数据库敏捷模式 beta 版。

1.4 敏捷模式的体验总结

平凯数据库敏捷模式优势显著。依托 TEM 工具,部署运维极简,分钟级完成集群搭建与扩缩容,降低了使用门槛,小白也能很轻松的部署。高度兼容 MySQL,迁移无需大幅改码,在线 DDL 秒级完成且不影响业务。存储压缩比近 3:1,降本明显,三节点架构保障 RPO=0、RTO<30s 的高可用,弹性与性能适配多行业需求。

1.5 备注

操作系统内核参数调优等部分省略,仅供学习。

1.6 借鉴

文档部分类容借鉴了平凯数据库敏捷模式单机版。


https://tidb.net/blog/eec39a56?_gl=1*5h25u5*_ga*OTA3MTgwNDQ4LjE3MjE5MDkxODI.*_ga_D02DELFW09*czE3NjA0MDMyNDAkbzM1JGcxJHQxNzYwNDAzNzkwJGoyMSRsMC
复制代码

二、TEM 快速部署安装

Step 1:准备机器等相关软硬件配置规划

node131 rocky8.10 8C16G tem


node132 rocky8.10 8C16G tidb + pd + tikv + tiup


node133 rocky8.10 4C8G tidb + pd + tikv + prometheus


node134 rocky8.10 4C8G tidb + pd + tikv + grafana

Step 2:下载 TEM 安装包

TEM 安装包下载(60 天有效):


链接:https://b074i8auiu2.feishu.cn/wiki/T3pIwBDSZiikIWkGccycj5yOnyb

Step 3:部署 TEM

1、node131 解压安装包

tar -xvf tem-amd64.tar
cd tem-package-v3.1.0-linux-amd64/
mkdir -pv /data/{tem-deploy,tem-data}
mkdir -pv /data/{tidb-deploy,tidb-data}
复制代码

2、配置文件修改

修改 config.yaml, metadb_topology.yaml 文件:


cat > config.yaml << EOFglobal:  user: "tidb"  group: "tidb"  ssh_port: 22  deploy_dir: "/data/tem-deploy"  data_dir: "/data/tem-data"  arch: "amd64"  log_level: "info"  enable_tls: false                # 是否开启TLS验证,开启后如果不配置证书密钥,则会生成自签证书和密钥
server_configs: # 这⾥指定 tem 节点的全局配置 tem_servers: # 填写 metadb 配置的套接字,若配置了多个元数据库的地址,应以逗号分隔且确保⽆空格 db_addresses: "192.168.86.131:4000" db_u: "root" # 若由 tem 辅助创建的元数据库,请使⽤ root ⽤户 db_pwd: "" # 若由 tem 辅助创建的元数据库,请使⽤空密码 db_name: "test" # 若由 tem 辅助创建的元数据库,请使⽤ test 数据库 log_filename: "/data/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: "" # tem 对外使用的tls证书 external_tls_key: "" # tem 对外使用的tls密钥 internal_tls_ca_cert: "" # tem 内部节点间双向验证使用的tls证书 internal_tls_cert: "" # tem 内部节点间双向验证使用的tls证书 internal_tls_key: "" # tem 内部节点间双向验证使用的tls证书
tem_servers: - host: "192.168.86.131" # 请填写 tem 节点的实际地址 port: 8080 mirror_repo: true # 是否开启镜像仓库,多个TEM节点时,有且仅有一个节点开启EOF
cat > metadb_topology.yaml << EOFglobal: user: "tidb" ssh_port: 22 deploy_dir: "/data/tidb-deploy" data_dir: "/data/tidb-data" arch: "amd64"
pd_servers: - host: 127.0.0.1
tidb_servers: - host: 127.0.0.1 port: 4000
tikv_servers: - host: 127.0.0.1EOF
复制代码

3、安装部署并验证

直接执行 sh install. sh 安装脚本:


sudo ./install.sh
http://192.168.86.131:8080/login
用户admin默认密码admin
su - tidbsource /home/tidb/.bash_profileTIUP_HOME=/data/tem-deploy/.tem tiup tem display tem-servers------------------------------------------------------------------------------------------------------------------------------tiup is checking updates for component tem ...Starting component `tem`: /data/tem-deploy/.tem/components/tem/v3.1.0/tiup-tem display tem-serversCluster type: temCluster name: tem-serversCluster version: v3.1.0Deploy user: tidbSSH type: builtinWebServer URL:ID Role Host Ports OS/Arch Status Data Dir Deploy Dir-- ---- ---- ----- ------- ------ -------- ----------192.168.86.131:8080 tem-server 192.168.86.131 8080 linux/x86_64 Up /data/tem-data/tem-server-8080 /data/tem-deploy/tem-server-8080Total nodes: 1------------------------------------------------------------------------------------------------------------------------------


复制代码

三、平凯数据库敏捷模式

链接:https://b074i8auiu2.feishu.cn/wiki/T3pIwBDSZiikIWkGccycj5yOnyb

Step 1:配置凭证

设置 -> 凭证 -> 主机 -> 添加凭证为要添加的主机配置 ssh 的密码凭证

Step 2:下载敏捷模式安装包,进行组件管理

设置 -> 组件管理 -> 添加组件上传 amd64.zip 解压后的 tidb-ee-server-v7.1.8-5.2-20250630-linux-amd64.tar.gz 与 tidb-ee-toolkit-v7.1.8-5.2-20250630-linux-amd64.tar.gz

Step 3:配置中控机

主机 集群管理中控机 添加中控机器 192.168.86.132

Step 4:配置集群主机

主机 -> 主机 -> 添加共享主机 192.168.86.132192.168.86.133192.168.86.134

Step 5:创建集群

集群 -> 创建集群

Step 6:调整下平凯数据库敏捷模式全局变量(建议)

完成平凯数据库敏捷模式部署后,在 TEM SQL 编辑器或使用 MySQL 客户端连接平凯数据库敏捷模式输入以下命令:


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;
复制代码


集群创建完毕

中控机 TIUP

拓扑结构

SQL 编辑器

MySQL 兼容性 DM 迁移 Mysql

# installtiup dm template > /home/tidb/dmtopology.yaml
# 配置文件vi /home/tidb/dmtopology.yamlglobal: user: "tidb" ssh_port: 22 deploy_dir: "/home/tidb/dm-deploy" data_dir: "/home/tidb/dm-data"
master_servers: - host: 172.16.156.88 - host: 172.16.156.168 - host: 172.16.156.230
worker_servers: - host: 172.16.156.88 - host: 172.16.156.168 - host: 172.16.156.230
monitoring_servers: - host: 172.16.157.54
grafana_servers: - host: 172.16.157.55
alertmanager_servers: - host: 172.16.157.56
# 部署tiup dm deploy dmtest v6.5.0 ./dmtopology.yaml --user tidb -p
# 启动tiup dm start dmtest
# 关闭tiup dm stop dmtest
# 开机自启 禁用启用tiup dm disable dmtesttiup dm enable dmtest
# 查看集群tiup list dm-mastertiup dm display dmtest
# 扩容 缩容tiup dm scale-out dmtest xxx.yaml -uroot -ptiup dm scale-in dmtest -N 172.16.156.240:8286

# dmctltiup dmctl:v6.5.0 --master-addr=172.16.156.88:8261
# 密码加密tiup dmctl --encrypt '密码'
# mysql server_id a binlog on compatibity_56 on




# 从小数据量 MySQL 迁移数据到 TiDB
# 1 创建数据源 唯一命名,不可重复。
vi source_mysql_101_mylims_xxx.yamlsource-id: "mysql_101_mylims_xxx"
# DM-worker 是否使用全局事务标识符 (GTID) 拉取 binlog。使用前提是上游 MySQL 已开启 GTID 模式。若上游存在主从自动切换,则必须使用 GTID 模式。enable-gtid: true
from: host: "172.16.156.101" # 例如:172.16.156.101 user: "root" password: "密码" # 支持但不推荐使用明文密码,建议使用 dmctl encrypt 对明文密码进行加密后使用 port: 3306 tiup dmctl --master-addr 172.16.156.88:8261 operate-source create source1.yamltiup dmctl --master-addr 172.16.156.88:8261 get-config source source1.yamltiup dmctl --master-addr 172.16.156.88:8261 operate-source show

# 2 创建迁移任务vi task_mysql_101_mylims_xxx.yaml# 任务名,多个同时运行的任务不能重名。name: "task_mysql_101_mylims_xxx"# 任务模式,可设为# full:只进行全量数据迁移# incremental: binlog 实时同步# all: 全量 + binlog 迁移task-mode: "all"# 下游 TiDB 配置信息。target-database: host: "172.16.156.168" # 例如:172.16.10.83 port: 4000 user: "root" password: "roottidb" # 支持但不推荐使用明文密码,建议使用 dmctl encrypt 对明文密码进行加密后使用
# 当前数据迁移任务需要的全部上游 MySQL 实例配置。mysql-instances:- # 上游实例或者复制组 ID。 source-id: "mysql_101_mylims_bjyj" # 需要迁移的库名或表名的黑白名单的配置项名称,用于引用全局的黑白名单配置,全局配置见下面的 `block-allow-list` 的配置。 block-allow-list: "listA"

# 黑白名单全局配置,各实例通过配置项名引用。block-allow-list: listA: # 名称 do-tables: # 需要迁移的上游表的白名单。 - db-name: "mylims_bjyj" # 需要迁移的表的库名。 tbl-name: "test_table" # 需要迁移的表的名称。
# 3 启动任务 tiup dmctl --master-addr 172.16.156.88:8261 check-task task_mysql_101_mylims_bjyj.yamltiup dmctl --master-addr 172.16.156.88:8261 start-task task_mysql_101_mylims_bjyj.yaml
# 4 查看任务状态tiup dmctl --master-addr 172.16.156.88:8261 query-status task_mysql_101_mylims_bjyj
# 5 暂停任务tiup dmctl --master-addr 172.16.156.88:8261 pause-status task_mysql_101_mylims_bjyj
# 6 恢复任务tiup dmctl --master-addr 172.16.156.88:8261 resume-status task_mysql_101_mylims_bjyj
# 7 停止任务tiup dmctl --master-addr 172.16.156.88:8261 stop-task task_mysql_101_mylims_bjyj.yaml





复制代码


经过验证,99.99% 都能同步过来。

三、平凯数据库敏捷模式优势 & 体验总结

1. 所在行业哪些场景会建议用敏捷模式

基于试用体验,在主数据与实验室检验检测领域,以下场景适合使用 TiDB 敏捷模式:


  1. 实验室检验检测 7X24 小时不间断写入的采集系统: 敏捷模式内置的高可用能力是巨大优势。

  2. 主数据模型变更频繁即 DDL: 在线 DDL 能极大的提升系统效率。

2. 敏捷模式整体体验总结

平凯数据库敏捷模式优势显著。依托 TEM 工具,部署运维极简,分钟级完成集群搭建与扩缩容。高度兼容 MySQL,迁移无需大幅改码,在线 DDL 秒级完成且不影响业务。存储压缩比近 3:1,降本明显,三节点架构保障 RPO=0、RTO<30s 的高可用,弹性与性能适配多行业需求。


因技术水平有限,以上如有不当之处,请大家指正!感谢!


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

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

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

评论

发布
暂无评论
平凯数据库敏捷模式 3 节点尝鲜:降本明显,弹性与性能适配多行业需求_平凯数据库敏捷模式_TiDB 社区干货传送门_InfoQ写作社区