黄东旭解析 TiDB 的核心优势
682
2024-03-25
TIDB官方建议使用CentOS7.3及以上版本:
Linux 操作系统 | 版本 |
---|---|
Red Hat Enterprise Linux | 7.3 及以上 |
CentOS | 7.3 及以上 |
本次实验我们选择CentOS 7.6 64位,考虑网络连通,需将TIDB ECS实例与Flink集群部署在相同VPC网络。
a、下载并安装 TiUP
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
b. 安装 TiUP 的 cluster 组件
声明全局的环境变量,不然找不到tiup命令:
source .bash_profile
执行安装cluster命令:
tiup cluster
c. 调大 sshd 服务的连接数限制(可选)
#调大sshd服务的连接数限制cat /etc/ssh/sshd_config | grep -n MaxSessions vim +41 /etc/ssh/sshd_config#改完后重启sshdsystemctl restart sshd.service
d. 创建并启动集群
按配置模板,编辑配置文件(当前目录vim编辑后保存即可),命名为 topo.yaml,其中:
host:部署TIDB的服务器i(ECS内网IP)
ssh_port默认是22
官方文件的tikv_servers是3个节点,这里设置成了只有1个节点,原因是本地配置多个节点时只有1个节点能启动成功
模板如下:
global: user: "tidb" ssh_port: 22 deploy_dir: "/tidb-deploy" data_dir: "/tidb-data"monitored: node_exporter_port: 9100 blackbox_exporter_port: 9115server_configs: tidb: log.slow-threshold: 300 tikv: readpool.storage.use-unified-pool: false readpool.coprocessor.use-unified-pool: true pd: replication.enable-placement-rules: true replication.location-labels: ["host"] tiflash: logger.level: "info"pd_servers: - host: 192.168.0.1 tidb_servers: - host: 192.168.0.1 tikv_servers: - host: 192.168.0.1 port: 20160 status_port: 20180 config: server.labels: { host: "laomo-talkservice-tidb-1" }tiflash_servers: - host: 192.168.0.1
部署集群:
# cluster-name:集群名称# tidb-version:TiDB版本号,可以通过tiup list tidb这个命令来查看tiup cluster deploy <cluster-name> <tidb-version> ./topo.yaml --user root -p <pwd># 这里使用 v6.0.0,集群名称叫mytidb-cluster来部署tiup cluster deploy mytidb-cluster v6.0.0 ./topo.yaml --user root -p P...D
启动集群:
#启动刚才部署的集群,集群名称为mytidb-clustertiup cluster start mytidb-cluster
e. 开启CDC(重要:CDC不开启无法捕获数据变更。另外,本示例单节点,多节点集群需要配置节点访问免密)
# 创建scale-out.yaml文件添加 TiCDC 节点信息cdc_servers: - host: 192.168.0.1 gc-ttl: 86400# TiUP运行scale-out命令tiup cluster scale-out mytidb-cluster scale-out.yaml#TiUP 停止和启动 TiCDCtiup cluster stop -R cdc tiup cluster start -R cdc tiup cluster restart -R cdc
f. 访问TiDB
在ECS上安装 MySQL 客户端(通过MySQL客户端访问TiDB):
yum -y install mysql
访问TiDB,密码默认为空
mysql -h 192.168.0.1 -P 4000 -u root
TiDB CDC connector 是一个 Flink Source connector,它会先读取数据库快照,然后在发生故障时以exactly-once 处理继续读取更改事件,支持exactly-once语义
兼容版本
TiDB CDC Version | Flink Version | TiDB Version |
---|---|---|
2.2.* | 1.13.*, 1.14.* | TiDB: 5.1.x, 5.2.x, 5.3.x, 5.4.x, 6.0.0 |
2.3.* | 1.13.*, 1.14.*, 1.15.*, 1.16.0 | TiDB: 5.1.x, 5.2.x, 5.3.x, 5.4.x, 6.0.0 |
参数配置
参数 | 说明 | 默认值 | 数据类型 |
---|---|---|---|
connector | 固定值:tidb-cdc | none | String |
database-name | TiDB 服务器的数据库名称 | none | String |
table-name | TiDB 服务器的表名称 | none | String |
scan.startup.mode | 消费者启动模式,直接读取其底层 TiKV 存储中的 全量数据和增量数据实现数据捕获,读取具体枚举如下: initial:在第一次启动时,会先扫描历史全量数据, 其中全量部分是通过按 key 划分 range进行读取 latest-offset:不会扫描历史全量数据, 增量部分使用 TiDB 提供的 CDC Client 获取增量变更数据 | initial | String |
pd-addresses | TiKV 集群的 PD 地址 | none | String |
tikv.grpc.timeout_in_ms | 以毫秒为单位的 TiKV GRPC 超时 | none | Long |
tikv.grpc.scan_timeout_in_ms | 以毫秒为单位的 TiKV GRPC 扫描超时 | none | Long |
tikv.batch_get_concurrency | TiKV GRPC并发 | 20 | Integer |
tikv.* | TiDB 客户端的属性 | none | String |
实时计算Flink版是一套基于Apache Flink构建的⼀站式实时大数据分析平台,支持作业开发、数据调试、运行与监控、自动调优、智能诊断等全生命周期能力。本文案例基于***实时计算Flink版进行演示。
兼容版本可以参考Flink TiDB CDC小结介绍,本次实验选型如下:
❏ Flink全托管版本:vvr-6.0.4-flink-1.15
❏ TiDB版本:v6.0.0
❏ TiDB CDC Connector:flink-connector-tidb-cdc-2.3.0
登录***控制台,创建全托管VVP集群,注意集群部署网络环境与TiDB保持一致(同一VPC):
创建一个vvr-6.0.4-flink-1.15版本的Session集群,创建后并启动:
注意:代码里没有配置scan.startup.mode参数,默认值initial:在第一次启动时,会先扫描历史全量数据(后续会演示相关效果)
CREATE TEMPORARY TABLE students_tidb_source ( db_name STRING METADATA FROM 'database_name' VIRTUAL, table_name STRING METADATA FROM 'table_name' VIRTUAL, operation_ts TIMESTAMP_LTZ(3) METADATA FROM 'op_ts' VIRTUAL, id INT, `name` STRING, score INT, PRIMARY KEY(id) NOT ENFORCED) WITH ( 'connector' = 'tidb-cdc', 'tikv.grpc.timeout_in_ms' = '20000', 'pd-addresses' = '192.168.0.1:2379', 'database-name' = 'tidb_source', 'table-name' = 'student');CREATE TEMPORARY TABLE students_print_sink ( `db_name` STRING, `table_name` STRING, operation_ts TIMESTAMP_LTZ(3), id INT, `name` STRING, score INT) WITH ( 'connector' = 'print', 'limit' = '100', 'logger'='true');insert into students_print_sinkselect * from students_tidb_source;
运行作业前,先添加一条数据:
CREATE DATABASE tidb_source;use tidb_source;--创建student表CREATE TABLE student( id int NOT NULL , name varchar(100) NULL , score int NULL , primary key(id));--插入数据insert into student values(1,"lincloud",100);select * from student;
启动作业,测试
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。