作者: 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 << EOF
global:
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 << EOF
global:
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.1
EOF
复制代码
3、安装部署并验证
直接执行 sh install. sh 安装脚本:
sudo ./install.sh
http://192.168.86.131:8080/login
用户admin默认密码admin
su - tidb
source /home/tidb/.bash_profile
TIUP_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-servers
Cluster type: tem
Cluster name: tem-servers
Cluster version: v3.1.0
Deploy user: tidb
SSH type: builtin
WebServer 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-8080
Total 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
# install
tiup dm template > /home/tidb/dmtopology.yaml
# 配置文件
vi /home/tidb/dmtopology.yaml
global:
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 dmtest
tiup dm enable dmtest
# 查看集群
tiup list dm-master
tiup dm display dmtest
# 扩容 缩容
tiup dm scale-out dmtest xxx.yaml -uroot -p
tiup dm scale-in dmtest -N 172.16.156.240:8286
# dmctl
tiup 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.yaml
source-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.yaml
tiup dmctl --master-addr 172.16.156.88:8261 get-config source source1.yaml
tiup 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.yaml
tiup 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 敏捷模式:
实验室检验检测 7X24 小时不间断写入的采集系统: 敏捷模式内置的高可用能力是巨大优势。
主数据模型变更频繁即 DDL: 在线 DDL 能极大的提升系统效率。
2. 敏捷模式整体体验总结
平凯数据库敏捷模式优势显著。依托 TEM 工具,部署运维极简,分钟级完成集群搭建与扩缩容。高度兼容 MySQL,迁移无需大幅改码,在线 DDL 秒级完成且不影响业务。存储压缩比近 3:1,降本明显,三节点架构保障 RPO=0、RTO<30s 的高可用,弹性与性能适配多行业需求。
因技术水平有限,以上如有不当之处,请大家指正!感谢!
评论