写点什么

TiDB run and debug on M1

  • 2022 年 7 月 11 日
  • 本文字数:1590 字

    阅读完需:约 5 分钟

原文来源:https://tidb.net/blog/b12d2b24

一、Summary

        前不久刚换 Mac M1 时,不禁被自己的盲目的 “吃螃蟹🦀行为” 蠢哭了。由于 M1 的是 arm 服务器,在做各种数据库测试时搭建本地环境很是不便,尤其是 DEBUG 数据库代码。


        我曾做过如下尝试:


         1. 在远程家中 windows 搭建虚拟机,购买腾讯云服务器作为中间跳板机,使用 frp 软件穿透内网映射虚拟机 IP 至云服务器 IP:


         优点:Oracle、TiDB、MySQL、PG 随机搭建,不受平台、机器指令集限制。


         缺点:内网穿透效率效率受外网网速限制,有时在客户现场想做个实验直接卡死。


                    此外,更不便的是使用 vscode 的 remote code 功能或 TiDE 去 debug tidb 时灵是不灵。


         2. 在 M1 arch 架构长寻找运行 x86 软指令集的 VM,目前已经有些软件支持了,如:QEMU、ACVM、UTM、ToyVM 等,详情可浏览 油管视频 -Apple Silicon M1 Virtualization: Running x86 and ARM Virtual Machines,结果不是运行效率低下几乎卡死,就是不稳定到会影响数据库使用,精力投入产出比不高。


         3. 如果 frp 配合 TiDE 又无法很好实现远程 DEBUG,详情如此贴所述


        最后惊喜的发现, TiDB 原生支持了 TiDB running on M1,详情参考官网


         1. 起初,我曾尝试过直接在 M1 上 build tidb,当时因为依赖库有问题,尚未成功。在看了一篇 TiDB 作者文章 - 在 ARM64 上面运行 TiDB 发现在 arm 上是应有成功经验的,于是重新尝试。


         2. 这时 build 直接就成功了,查阅 tidb 官方文档发现从 v5.2.2 开始已经提供了 tiup playground 实验集群支持。

二、Tiup Operations

         分别安装、启动可持久化 tidb 存储层数据的集群,名为 mycluster。启动之后 Dashboard、Promethus 均可观察到部分图像。但美中不足的是,当我想 tiup cluster cluster-name deploy topology.yaml 真正部署一个集群时,发现 tiup 之前基于 linux 自定义的 service,但 M1 中并不是一套指令,所以会报错。


         不过已经能满足日常实验、DEBUG 需求了


curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh \"tiup --tag mycluster playground v5.2.1 --db 1 --pd 3 --kv 3 --monitor
复制代码

三、Patching TiDB

3.1 改写代码

  1. Clone Repo 库代码;

  2. 手动将日志内容 logutil.BgLogger().Info(“Welcome to TiDB version.” 修改为 logutil.BgLogger().Info(“Welcome to TiDB which is special Jan version.”;

3.2 手动 Build TiDB

        Build TiDB 观察到 Build TiDB Server successfully! 说明已经编译成功。


cd ../.. && make
复制代码

3.3 手动 Patch TiDB

        手动将新编译好的 tidb-server 二进制文件放入 tiup 启动目录。** 注意:** 替换 YOUR_COMPUTER_USERNAME 为自己真正用户名。


cd bin && mv tidb-server tidb-server.version_jan \"mv tidb-server.version_jan /Users/YOUR_COMPUTER_USERNAME/.tiup/components/tidb/v5.2.1/ \"mv tidb-server.bak && mv tidb-server.version_jan tidb-server
复制代码

3.4 日志验证

         启动 tidb 并验证改动是否生效。cat 观察到信息 “Welcome to TiDB which is special Jan version” 说明改动成功。


tiup --tag mycluster playground v5.2.1 --db 1 --pd 3 --kv 3 --monitor \"
cd /Users/YOUR_COMPUTER_USERNAME/.tiup/data/mycluster/tidb-0 \"
cat tidb.log|grep "Jan version"
复制代码

四、TiDE DEBUG TiDB

         VsCode 安装 TiDE 按照 与 TiDE Step-by-Step Guide 一步步操作便可 DEBUG 了,或者参考 Aiky 哇 写的指引也挺好,基本内容一致。


         下面展示一张我本地电脑 DEBUG 成功的图片,✌️!



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

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

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

评论

发布
暂无评论
TiDB run and debug on M1_实践案例_TiDB 社区干货传送门_InfoQ写作社区