1. 程式人生 > 其它 >掌握TiUP工具 之 離線部署TiDB叢集

掌握TiUP工具 之 離線部署TiDB叢集

相對於TiUP線上部署,本文介紹的這種離線部署方法更適合在內網生產環境中部署TiDB叢集。通過TiUP工具,我們可以很輕鬆的部署,管理TiDB叢集。

TiDB資料庫

傳統的單機資料庫在移動網際網路、雲端計算、大資料和人工智慧等場景下表現的力不從心,為了解決資料平臺的擴充套件性的問題,TiDB 分散式資料庫應運而生。TiDB 是當今開源 NewSQL 資料庫領域的代表產品之一。

TiDB採用分散式資料庫架構,因此伺服器數量比較多。在部署TiDB叢集時,我們使用TiUP工具來安裝整個TiDB叢集環境。從 TiDB 4.0 版本開始,TiUP 作為新的工具,承擔著包管理器的角色,管理著 TiDB 生態下眾多的元件,如 TiDB、PD、TiKV 等。使用者想要執行 TiDB 生態中任何元件時,只需要執行 TiUP 一行命令即可,相比以前,極大地降低了管理難度。

預設情況下TiUP工具會聯網進行工具包的下載和安裝,但生產環境往往都是內網環境,無法連線外網進行下載。這種情況下,我們可以選擇離線的部署方法。本文以 TiDB 5.0 的版本為基礎,詳細介紹使用TiUP工具離線部署 TiDB 叢集的過程。

第一步、聯網下載TiUP包管理器

使用可以聯網的主機,下載並安裝 TiUP 包管理器工具。命令如下:

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

第二步、宣告全域性環境變數

宣告全域性環境變數,命令如下:

source /root/.bash_profile

執行過程如下:

第三步、通過TiUP工具下載所有工具的離線安裝包

使用 tiup list tidb 命令可以看到所有tidb的版本,我們可以在其中選擇需要下載的版本。命令如下:

tiup list tidb

然後通過tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64

命令進行安裝。其中${version}需要替換成對應的TiDB版本,命令如下:

tiup mirror clone tidb-community-server-v5.2.1-linux-amd64 v5.2.1 --os=linux --arch=amd64

我們將前兩個命令組合在一起,就得到了下載最新版本安裝包的命令,命令如下:

version=`tiup list tidb|sort -r |head -n 2|tail -n 1|awk '{print $1};'` && \

tiup mirror clone tidb-community-server-${version}-linux-amd64 ${version} --os=linux --arch=amd64

執行過程如下:

需要注意的是,在下載過程中,可能會由於網路問題導致某個工具包下載失敗,此時TiUP工具會再次嘗試下載,如果最終無法下載完成,TiUP工具會結束並退出。我們依舊可以重複TiUP命令來反覆嘗試下載。開始下載過程時,會生成tidb-community-server-v5.2.1-linux-amd64的目錄。

另一種方法,通過wget或者curl工具獨立手工下載工具包,然後放入tidb-community-server-v5.2.1-linux-amd64目錄中。TiUP工具在下載過程中,在目錄中會出現_tmp開頭的臨時目錄,需要手動將這些臨時目錄刪除掉。截圖如下:

第四步、使用tar命令打包並傳輸

通過 tar 命令將該元件包打包然後傳送到隔離環境的中控機(傳輸tar包過程可以自行選擇方法),命令如下:

tar czvf tidb-community-server-v5.2.1-linux-amd64.tar.gz tidb-community-server-v5.2.1-linux-amd64

執行過程如下:

第五步、離線安裝TiUP元件

將離線包傳送到目標叢集的中控機後,執行以下命令離線安裝 TiUP 元件:

tar xzvf tidb-community-server-v5.2.1-linux-amd64.tar.gz && \

sh tidb-community-server-v5.2.1-linux-amd64/local_install.sh && \

source /root/.bash_profile

執行過程如下:

第六步、編輯叢集初始化配置檔案

請根據不同的叢集拓撲,編輯 TiUP 所需的叢集初始化配置檔案。首先生成叢集初始化配置模版,命令如下:

tiup cluster template > topology.yaml

執行過程如下:

編輯 TiUP 所需的叢集初始化配置檔案,命令如下:

vi topology.yaml

執行過程如下:

第七步、檢查和修復叢集風險

先使用 check 命令來檢查叢集存在的潛在風險,命令如下:

tiup cluster check ./topology.yaml --user root -p

執行過程如下

檢查結果為Fail的內容,表面存在的風險。進一步執行check --apply 命令,自動修復叢集存在的潛在風險,如果自動無法修復,還需要手工來修復風險。命令如下:

tiup cluster check ./topology.yaml --apply --user root -p

執行過程如下:

修復完成後,再次執行check命令進行二次檢查,最終結果狀態均應該為Pass(本步驟命令參考上文)。在本文的附錄部分,列舉了一些可能的風險和解決方法。

第八步、部署TiDB叢集

執行 deploy 命令部署 TiDB 叢集,叢集名稱使用sandata,命令如下:

tiup cluster deploy sandata v5.2.1 ./topology.yaml --user root -p

執行過程如下:

第九步、檢視叢集狀態

TiDB叢集部署完成後,預設是關閉狀態,通過檢視叢集狀態可以進行確認,命令如下:

tiup cluster display sandata

執行過程如下:

第十步、啟動TiDB叢集

最終的目標就是啟動TiDB叢集,命令如下:

tiup cluster start sandata

執行過程如下:

第十一步、確認叢集已經啟動

再次檢查部署的 TiDB 叢集情況,確認最終的啟動狀態為Up,命令如下:

tiup cluster display sandata

執行過程如下:

附錄1:解決numactl not usable, bash: numactl: command not found

使用yum來安裝numactl工具,命令如下:

yum -y install numactl

附錄2:解決mount point / does not have 'nodelalloc' option set和

mount point / does not have 'noatime' option set

編輯/etc/fstab檔案,增加nodelalloc和noatime的配置,配置如下:

附錄3:解決THP is enabled, please disable it for best performance

編輯/etc/rc.d/rc.local 檔案,增加下面的內容,命令如下:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

echo never > /sys/kernel/mm/transparent_hugepage/enabled

fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

echo never > /sys/kernel/mm/transparent_hugepage/defrag

fi

執行過程如下:

增加檔案執行許可權,命令如下:

chmod +x /etc/rc.d/rc.local

最後重啟主機,讓所有配置生效。

總結

相對於TiUP線上部署,本文介紹的這種離線部署方法更適合在內網生產環境中部署TiDB叢集。通過TiUP工具,我們可以很輕鬆的部署,管理TiDB叢集。