TiDB之mac上搭建及調試技巧

来源:https://www.cnblogs.com/mantu/archive/2019/04/21/10743637.html
-Advertisement-
Play Games

由於本人最近已經成為TiDB的粉絲,所以就開始各種研究TiDB的源碼,研究源碼這個事情,首先就需要在自己電腦上不斷的調試及修改。TiDB本身的代碼是非常容易編譯和調試的,但是要把PD、TiKV集群同時在本機上建立起來,還是有一點難度的。好在pingcap官方提供了docker-compose搭建集群... ...


此文目的

由於本人最近已經成為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映射即可。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實驗一:創建kickstart文件實現用網路來進行半自動化安裝系統 1. 安裝圖形化工具來製作應答文件 yum install system-config-kickstart 也可參考/root目錄下自帶的 anaconda-ks.cfg 文件,進修修改。 註:6系統和7系統為各自不同的應答文件,需 ...
  • 操作系統將記憶體按照頁的進行管理,在需要的時候才把進程相應的部分調入記憶體。當產生缺頁中斷時,需要選擇一個頁面寫入。如果要換出的頁面在記憶體中被修改過,變成了“臟”頁面,那就需要先寫會到磁碟。頁面置換演算法,就是要選出最合適的一個頁面,使得置換的效率最高。頁面置換演算法有很多,簡單介紹幾個,重點介紹比較重要的 ...
  • 前言 devm是內核提供的基礎機制,用於方便驅動開發者所分配資源的自動回收。參考內核文檔devres.txt。總的來說,就是驅動開發者只需要調用這類介面分配期望的資源,不用關心釋放問題。這些資源的釋放會在device對象銷毀時自動釋放。 devres使用 不同的內核模塊提供了對應的devm_xxx接 ...
  • list : ls 目錄: 文件,路徑映射. ls : -l : lang 長格式, 顯示完整信息. 文件類型: -: 普通文件(f) d: 目錄文件 b: 塊設備文件(block) c: 字塊設備文件(charact) l: 符號鏈接文件(symbolic link file) p: 命令管道文件 ...
  • 【Oracle RAC】Linux系統Oracle11gR2 RAC安裝配置詳細過程V3.1(圖文並茂) 2 Oracle11gR2 RAC資料庫安裝準備工作2.1 安裝環境介紹2.2 資料庫安裝軟體下載3 Oracle11gR2 RAC資料庫安裝環境配置3.1 安裝主機或虛擬機3.2 安裝操作系統 ...
  • 【Oracle RAC】Linux系統Oracle12c RAC安裝配置詳細過程V2.0(圖文並茂) 2 Oracle12c RAC資料庫安裝準備工作2.1 安裝環境介紹2.2 資料庫安裝軟體下載3 Oracle12c RAC資料庫安裝環境配置3.1 安裝主機或虛擬機3.2 安裝操作系統3.3 ho ...
  • 筆記記錄自林曉斌(丁奇)老師的《MySQL實戰45講》 (本篇內圖片均來自丁奇老師的講解,如有侵權,請聯繫我刪除) 19) --為什麼我只查一行的語句,也執行這麼慢? 需要說明一下,如果MySQL資料庫本身就有很大的壓力,導致資料庫伺服器CPU占用率很高或ioutil(IO利用率)很高,這種情況下所 ...
  • 持續關註MongoDB博客(https://www.mongodb.com/blog)的同學一定會留意到,技術大牛Daniel Coupal 和 Ken W. Alger ,從 今年 2月17 號開始,在博客上持續發表了 如何在MongoDB中設計資料庫模式的方法。截止到今日(4月20號),12種模 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...