此文目的

由于本人最近已经成为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映射即可。

TiDB之mac上搭建及调试技巧的更多相关文章

  1. 在MAC上搭建cordova3.4.0的IOS和android开发环境

    Hello,大家好,今天给大家说说在mac上搭建cordova3.4.0的iOS和Android开发环境,首先下载cordova,地址:https://cordova.apache.org/#down ...

  2. 1、在MAC上搭建React Native开发环境

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  3. Mac上搭建直播服务器Nginx+rtmp

    简介 nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择,本人在网上整理了安装流程,分享给大家并且作备忘. 步骤安装 1.安装Homebrow Homebrew简 ...

  4. mac上搭建appium+IOS自动化测试环境(一)

    阅读须知 由于OS X系统最近才开始接触,所以有些东西也不是很清楚,这里只提供方法不提供原理,能解释清楚的我也会尽量解释.可能也有一些地方说的不严谨或有错的,还望大家指点一二. 实验环境 操作系统: ...

  5. 在Mac上搭建React Native开发环境

    概述 前面我们介绍过在window环境下开发React Native项目,今天说说怎么在mac上搭建一个RN的开发环境. 配置mac开发环境 基本环境安装 1.先安装Homebrew:用于安装Node ...

  6. Mac 上搭建基于 Hexo + GitHub 个人博客

    环境配置 本人电脑系统:macOS Node.js 生成静态页面.安装Node.js Git 用于将本地 Hexo 内容提交到 Github.Xcode自带Git(前提:macOS已经安装了Xcode ...

  7. mac上搭建appium+IOS自动化测试环境(二)

    上一篇: mac上搭建appium+IOS自动化测试环境(一) 9.安装appium-xcuitest-driver依赖 进入WebDriverAgent安装目录,运行bootstrap 首先进入目录 ...

  8. Mac上搭建直播服务器Nginx

    Mac上搭建直播服务器Nginx 1.安装Homebrew,执行命令 Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就 ...

  9. [转] 在Mac上搭建React Native开发环境

    原文链接: http://blog.csdn.net/xiangzhihong8/article/details/53914336 概述 前面我们介绍过在window环境下开发React Native ...

随机推荐

  1. Spring框架碰壁日常更新

    关于Spring环境搭建遇到的问题:

  2. EntityFramework 6.x和EntityFramework Core插入数据探讨

    前言 一直以来对EF和EF Core都是单独分开来写,从未以比较的形式来讲解,如果您既用过EF 6.x也用过用EF Core是否有了解过EF和EF Core在插入数据时和返回主键有何异同呢?本篇博客是 ...

  3. 谣传QQ被黑客DDOS攻击,那么Python如何实现呢?

    于2018-5-10日晚 网络流传黑客DDOS攻击了QQ服务器,导致大家聊天发送内容时出现感叹号.我们都知道一般情况下出现感叹号都是你的网络不稳定,或者...别人已经删除你了.然而昨晚很奇怪,发出的内 ...

  4. HTML学习笔记:2.基础语法

    HTML基本结构 HTML标签 HTML元素 HTML属性 注释 ①基本结构 <html> html:指明是个html文件 <head> <title>标题< ...

  5. 正则表达式re模块小结

    re模块的常用方法 1.compile(pattern[,flags]) 创建模式对象,一般配合其他方法使用.例如: import re #导入re模块 text = 'All that doth f ...

  6. 单片机开发——02工欲善其事必先利其器(Proteus软件安装破解)

    在单片机开发工程中,博主经常通过模拟软件Proteus进行模拟仿真,将编译生成的"HEX"文件下载在单片机芯片中,然后进行后期的debug工作,当模拟仿真完成之后,进行硬件测试部分 ...

  7. Spring MVC 的 XML 配置方式

    索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: solution/pom.xml solution/webapi/pom.xml solution/mapper/ ...

  8. Mego(05) - Mego for Visual Studio Extension

    前言 可能对于一个新的框架而言使用入门对于陌生人而言是比较困难的,因此为了最大限度的为使用者提供便利性,我们给Mego框架开发了针对Visual Studio的集成开发工具,让大家可以像使用Entit ...

  9. Python_sniffer(网络嗅探器)

    import socket import threading import time activeDegree=dict() flag=1 def main(): global activeDegre ...

  10. python_自定日历

    >>> from datetime import date>>> daysOfMonth=[31,28,31,30,31,30,31,31,30,31,30,31] ...