关键词:
此文目的
由于本人最近已经成为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... 查看详情