TiDB本地集群环境搭建

一、说明

  这篇文章主要为了想要体验TiDB,又不想申请服务器的小伙伴而作。首先你要有一台电脑,安装一下虚拟机,准备一下Linux环境(最好是CentOS 7.6之后的版本)。

1、下载并安装 TiUP

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

2、声明全局环境变量

TiUP 安装完成后会提示对应 profile 文件的绝对路径。在执行以下 source 命令前,需要根据 profile 文件的实际位置修改命令。例如我的:

所以我的执行命令就是:source /root/.bash_profile

3、创建并启动集群

tiup playground --host 192.168.72.131

ip要修改成你自己的ip

4、通过 http://192.168.72.131:9090 访问 TiDB 的 Prometheus 管理界面

5、通过 http://192.168.72.131:2379/dashboard 访问 TiDB Dashboard 页面,默认用户名为 root,密码为空

6、可以通过Navicat来连接,host为192.168.72.131,端口是4000,用户名root,密码为空

7、关闭集群

(1)先用 ctrl + c 关闭进程

(2)执行 tiup clean --all 清理资源

二、HTAP功能

1、安装数据生成工具

tiup install bench

2、生成数据,记得换成自己的虚拟机host

tiup bench tpch --sf=1 --host 192.168.72.131 prepare

3、可以运行sql查询,生成的表及数据

SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name', table_rows AS 'Number of Rows', 
  CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data Size',
  CONCAT(ROUND(index_length/(1024*1024*1024),4),'G') AS 'Index Size',
 CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G')
AS'Total'FROM information_schema.TABLES WHERE table_schema LIKE 'test';

这是一个商业订购系统的数据库。其中,test.nation 表是国家信息、test.region 表是地区信息、test.part 表是零件信息、test.supplier 表是供货商信息、test.partsupp 表是供货商的零件信息、test.customer 表是消费者信息、test.orders 表是订单信息、test.lineitem 表是在线商品的信息

4、执行以下 SQL 语句,你可以体验当只使用行存(大多数数据库)时 TiDB 的表现,性能很差

复制代码
SELECT
    l_orderkey,
    SUM(
        l_extendedprice * (1 - l_discount)
    ) AS revenue,
    o_orderdate,
    o_shippriority
FROM
    customer,
    orders,
    lineitem
WHERE
    c_mktsegment = 'BUILDING'
AND c_custkey = o_custkey
AND l_orderkey = o_orderkey
AND o_orderdate < DATE '1996-01-01'
AND l_shipdate > DATE '1996-02-01'
GROUP BY
    l_orderkey,
    o_orderdate,
    o_shippriority
ORDER BY
    revenue DESC,
    o_orderdate
limit 10;
复制代码

这是一个运送优先权查询,用于给出在指定日期之前尚未运送的订单中收入最高订单的优先权和潜在的收入。潜在的收入被定义为 l_extendedprice * (1-l_discount) 的和。订单按照收入的降序列出。在本示例中,此查询将列出潜在查询收入在前 10 的尚未运送的订单。

5、同步列存数据

TiFlash 部署完成后并不会自动同步 TiKV 数据,你可以在 MySQL 客户端向 TiDB 发送以下 DDL 命令指定需要同步到 TiFlash 的表。指定后,TiDB 将创建对应的 TiFlash 副本。

ALTER TABLE test.customer SET TIFLASH REPLICA 1;
ALTER TABLE test.orders SET TIFLASH REPLICA 1;
ALTER TABLE test.lineitem SET TIFLASH REPLICA 1;

6、如需查询 TiFlash 表的同步状态,请使用以下 SQL 语句

SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = 'test' and TABLE_NAME = 'customer';
SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = 'test' and TABLE_NAME = 'orders';
SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = 'test' and TABLE_NAME = 'lineitem';

以上查询结果中:
AVAILABLE 字段表示该表的 TiFlash 副本是否可用。1 代表可用,0 代表不可用。副本状态变为可用之后就不再改变,如果通过 DDL 命令修改副本数则会重新计算同步进度。
PROGRESS 字段代表同步进度,在 0.0~1.0 之间,1 代表至少 1 个副本已经完成同步。

7、使用 HTAP 更快地分析数据

再次执行第 3 步中的 SQL 语句,你可以感受 TiDB HTAP 的表现。

对于创建了 TiFlash 副本的表,TiDB 优化器会自动根据代价估算选择是否使用 TiFlash 副本。如需查看实际是否选择了 TiFlash 副本,可以使用 desc 或 explain analyze 语句。

对比两个查询性能,你会发现先惊人的提升。

 

参看:https://docs.pingcap.com/zh/tidb/stable/quick-start-with-tidb 

posted @   上官兰夏  阅读(650)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示