tidb之mac上搭建及调试技巧

mantu mantu     2023-03-15     373

关键词:

此文目的

由于本人最近已经成为TiDB的粉丝,所以就开始各种研究TiDB的源码,研究源码这个事情,首先就需要在自己电脑上不断的调试及修改。TiDB本身的代码是非常容易编译和调试的,但是要把PD、TiKV集群同时在本机上建立起来,还是有一点难度的。好在pingcap官方提供了docker-compose搭建集群的方式,可以快速的在个人电脑上启动一个TiDB的集群。但是,我要的不只是一个集群,我还希望在我的mac上实时编译调试TiDB服务,这个TiDB服务能够和docker-compose的集群里的PD和TiKV进行实时的通讯。我今天仔细分析了一下,最终总结出两个问题需要解决:

  • PD和TiKV的端口需要暴露给宿主机;
  • 宿主机上的TiDB服务需要解决docker-compose服务内部域名调用的问题;

解决方案

第一个问题比较容易解决,docker本身就提供了解决方案,就是把docker内部的端口映射给宿主机,这样在宿主机上就可以直接访问这个端口。第二个问题,我还是思考了一会,最后决定使用修改本机host的方式来完成映射。

  • mac上需要增加的host如下:
127.0.0.1 pd0
127.0.0.1 pd1
127.0.0.1 pd2
127.0.0.1 tikv0
127.0.0.1 tikv1
127.0.0.1 tikv2

大家一看也就明白了,我就是想把docker集群内部这样的api:pd0:2379,在宿主机上转换成为:127.0.0.1:2379的方式。

  • 拉取docker-compose

由于需要把docker内部的端口映射到宿主机上,因此我修改了官方的docker-compose.yml文件,大家可以直接使用我fork并修改的tidb-docker-compose项目。

git clone https://github.com/mantuliu/tidb-docker-compose.git
  • 创建并启用集群
cd tidb-docker-compose && docker-compose pull 
docker-compose up -d
  • 关闭集群
docker-compose down
  • 在mac上启动TiDB服务

我的mac上是下面类似这样的命令:

./bin/tidb-server -P 4001 --status="10081"  --path="127.0.0.1:3379,127.0.0.1:4379,127.0.0.1:5379" --config=./conf/tidb.toml

写在最后

这种方式呢,感觉还是不太完美,但是确实解决了我当前的困境。提升了我目前研究TiDB源码的效率,不必再依赖于具体的集群环境,我走到哪里,都可以随时调试和研究TiDB的源码。后面如果我了解到更NB的方式,会随时分享给大家。虽然文章的标题是mac上的解决方案,但是换汤不换药,在windows平台上也是一样的,增加具体host映射即可。

wkwebview和uiwebview调试技巧

...发过程中,碰到某个界面有问题需要陪着web开发人员进行调试测试,这是一个非常揪心的问题。所以必须掌握safari对webview进行调试的技巧。1、打开模拟器(真机)的开发者模式【设置】->【Safari】->【高级】->【Web检查器... 查看详情

postman小技巧之变量的使用及优先级

继上次讲了下postman环境变量的设置,今天补充下接口常用变量、全局变量的设置及使用场景。变量的一般使用场景为用于参数化和关联:1:常用变量可以按使用范围设置成集合或全局变量2:一套接口要在不同的环境上测试时,可以... 查看详情

sparkjava开发环境搭建及远程调试

sparkJAVA开发环境搭建及远程调试以后要在项目中使用Spark用户昵称文本做一下聚类分析,找出一些违规的昵称信息。以前折腾过Hadoop,于是看了下Spark官网的文档以及github上官方提供的examples,看完了之后决定动手跑一个文本聚类... 查看详情

mac下svn服务器搭建及使用

---------------------------------------------svn服务器搭建mac上创建svn服务器管理-------------step1$svnadmincreatesvndir-------------step2conf>svnserve.conf修改配置#anon-access=read #auth-access=write #pas 查看详情

androidstudio调试快捷键及调试技巧

1、AndroidStudio调试快捷键 Shift+F9快捷键,启动程序的调试模式。快捷键F8单步执行程序。快捷键F7单步执行程序,遇到方法时进入。快捷键Alt+F9运行到光标处。跳到下一个断点,stepout(Shift+F8),跳出进... 查看详情

有没有办法在同一台 Mac 上调试两个 iOS 设备?

】有没有办法在同一台Mac上调试两个iOS设备?【英文标题】:IsthereawaytodebugtwoiOSdevicesonthesameMac?【发布时间】:2014-10-0708:32:13【问题描述】:我想不可能从同一个Xcode中,而是通过多次打开Xcode来实现?还是有什么其他技巧?我正... 查看详情

mapreducer程序调试技巧(搭建伪分布式集群)

写过程序分布式代码的人都知道,分布式的程序是比较难以调试的,但是也不是不可以调试,对于Hadoop分布式集群来说,在其上面运行的是mapreduce程序,因此,有时候写好了mapreduce程序之后,执行结果... 查看详情

java调试技巧及字符串的使用。

字符串的使用   问题1:平时验证一个密码强度问题,要密码经常包括A~Z的大写字母,小字写母,数字,还有特术字符。至少包含三类,才认为强度很大。       教学视频:  密码强度... 查看详情

在mac上搭建sylixos开发环境

Mac环境开发指南1.适用范围及局限性本文档适用于考虑在Mac上进行开发的SylixOS工程师,目前SylixOS集成开发环境并不支持Mac,本文当前的处理方法并不能真正实现Mac上的开发流程,后期待完善,特此申明。2.下载SylixOS源代码打开... 查看详情

tiup部署tidb数据库集群

...x版本)适用场景:利用本地Mac或者单机Linux环境快速部署TiDB测试集群,体验TiDB集群的基本架构,以及TiDB、TiKV、PD、监控等基础组件的运行。1、创建tidb用户组及用户[root@tidbhome]#groupaddtidb[root@tidbhome]#useraddtidb-r-m-gtidb2、关闭防火... 查看详情

ios之深入解析nslog的调试技巧(代码片段)

一、DEBUG宏区分调试模式和发布模式进行特殊处理①利用Configuration配置不同的编译环境一个应用往往对应多个域名的情况,测试地址、生产地址、后台接口开发者的个人主机地址:1.开发人员环境(Other)连接写服... 查看详情

springsecurity开发安全的rest服务之项目搭建(代码片段)

...重用的模块供他人使用。涉及的三个spring项目:项目搭建1、代码结构2、构建maven项目具体maven项目的构建在这里不多说了,非常简 查看详情

工具技巧php之phalcon环境搭建(代码片段)

Phalcon7框架,一种崭新的PHP框架。我们的使命是给开发者一个开发web站点和应用的高级工具,让开发者不用担心框架的性能问题.官网地址:Phalcon7让一切变得简单!—Phalcon71.3.2文档1.安装phalocn(1)下载phalocncd/us... 查看详情

工具技巧php之phalcon环境搭建(代码片段)

Phalcon7框架,一种崭新的PHP框架。我们的使命是给开发者一个开发web站点和应用的高级工具,让开发者不用担心框架的性能问题.官网地址:Phalcon7让一切变得简单!—Phalcon71.3.2文档1.安装phalocn(1)下载phalocncd/us... 查看详情

跟随一条insert语句,进入tidb的源码世界(上)

...和Oracle一样,维护了百万级别的自动化测试用例,跑在k8s搭建的集群之上;TiDB里面用到的算法,都会写测试程序验证,以证明算法的正确性;自googleF1开始,数据库被分成了两类:  一类是传统sql,代表如Oracle,依赖于高速网... 查看详情

mac实用技巧之:访达/finder(代码片段)

由于不太可能每次都来这里更新,更多MacOS实用技巧系列文章,请看我的博客:Mac使用技巧系列教程Finder就相当于windowsXP系统的『我的电脑』或win7/win10系统里的『计算机』(打开后叫资源管理器),find是查找的意思,那Finder就... 查看详情

tidb查询优化及调优系列tidb查询计划简介(代码片段)

「TiDB查询优化及调优」系列文章将通过一些具体的案例,向大家介绍TiDB查询及优化相关的原理和应用,在上一篇文章中我们简要介绍了TiDB查询优化器的优化流程。查询计划(executionplan)展现了数据库执行SQL语句... 查看详情

omv技巧之nextcloud

参考技术A  NextCloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步、共享、版本控制、团队协作等功能。它的客户端覆盖了Windows、Ma... 查看详情