TIDB 安裝

小白版本的安裝入門媚朦,歡迎新手來參考??

系統(tǒng)初始化(選擇59作為中控機)

注意:推薦安裝時渴丸,不使用 root 用戶侯嘀,而是使用 tidb 用戶

  • 1.檢查系統(tǒng)

# 檢查文件系統(tǒng)

# cat /etc/fstab
/dev/vdb1 /data1 ext4 nodelalloc 0 0

  • 2.免密配置

# 生成秘鑰

# useradd tidb
# passwd tidb
# su - tidb

# ssh-keygen -t rsa

# 下載 tidb-ansible master

# git clone https://github.com/pingcap/tidb-ansible.git

# 安裝 ansible 的依賴

# sudo yum -y install epel-release 

# sudo yum -y install python-pip curl

# cd tidb-ansible/

# sudo pip install -r ./requirements.txt

# ansible --version


# 使用 tidb-ansible 配置秘鑰

# vi hosts.ini
[servers]
172.16.10.59
172.16.10.60
172.16.10.61
172.16.10.62
[all:vars]
username = tidb

# 按照順序輸入密碼

# ansible-playbook -i hosts.ini create_users.yml -k

注意:這里的互信是看官網(wǎng)的,實際操作是直接在59那臺服務(wù)器生成公鑰谱轨,然后將內(nèi)容復(fù)制到每臺服務(wù)器的 home 目錄下 .ssh/ 下的 authorized_keys 文件內(nèi)戒幔。最后的目標(biāo)是通過中控機可以訪問無秘鑰登錄其他服務(wù)器 tidb 賬戶,每臺服務(wù)器的 tidb 賬戶可以通過 sudo su - root 直接切換到 root 用戶土童,這樣互信就完成了诗茎,下文有檢查互信的方法。

  • 3.檢查 ntp 是否正常運行

[tidb@ip-172-16-10-59 tidb-ansible]$ ntpstat
synchronised to NTP server (85.199.214.100) at stratum 2 
   time correct to within 159 ms
   polling server every 1024 s

注意:這個可以在配置文件里面關(guān)閉献汗,主要是為了保證服務(wù)器時間統(tǒng)一敢订,正式服務(wù)器不可關(guān)閉,測試可以罢吃。

安裝配置

  • 1.配置 inventory.ini

vim inventory.ini

修改內(nèi)容參考官方

注意:user 改為 tidb 用戶楚午,注意下載的 tidb 的版本

  • 2.檢查互信

ansible -i inventory.ini all -m shell -a 'whoami'

ansible -i inventory.ini all -m shell -a 'whoami' -b

  • 3.下載 tidb binary

ansible-playbook local_prepare.yml

  • 4.初始化系統(tǒng)環(huán)境司光,修改內(nèi)核參數(shù)

ansible-playbook bootstrap.yml

注意

如果這個地方配置沒有通過扯俱,如修改 `/home/tidb/wangjun/tidb-ansible/roles/check_system_optional/defaults/main.yml` 里面的限制邢疙,注意看報錯模塊,一般都是在 roles 文件夾下臀稚,defaults 文件夾下的 yml 文件中是閾值。

為了提高初始化系統(tǒng)環(huán)境的速度蜈出,可以修改 io 測試模塊中秩伞,生成文件的大小,默認(rèn)是10G饮睬。

或者跳過

bootstrap.yml 階段如何跳過磁盤檢測租谈、CPU、內(nèi)存容量檢測

ansible-playbook bootstrap.yml --extra-vars "dev_mode=True"

  • 5.安裝

ansible-playbook deploy.yml

  • 6.啟動集群

ansible-playbook start.yml

部署完成

注意:

Grafana Dashboard 上的 Report 按鈕可用來生成 PDF 文件捆愁,此功能依賴 fontconfig 包割去。如需使用該功能,登錄 grafana_servers 機器昼丑,用以下命令


sudo yum install fontconfig -y

集群入門使用

  • 1.登錄

mysql -uroot -P4000 -h 172.16.10.59

注意:

1.需要接 ip呻逆,不然默認(rèn) socket 接入是有問題的

2.MySQL 命令可以找一個,上傳上去

3.沒有初始化密碼菩帝,注意設(shè)置初始密碼

  • 2.監(jiān)控前端

地址:http://172.16.10.59:3000 

默認(rèn)帳號密碼是:admin/admin

注意:如果修改了 admin 的密碼咖城,及時修改 inventor.ini 配置文件中的相關(guān)配置。

滾動升級

1.滾動升級呼奢,不影響業(yè)務(wù)運行的話宜雀,最低的配置為:pd*3 ,tidb*2 ,tikv*3

2.如果集群環(huán)境中有 pump / drainer 服務(wù),請先停止 drainer 后滾動升級 (升級 TiDB 時會升級 pump)

  • 自動下載 binary

# 原先的版本

./resources/bin/tidb-server -V



# 刪除原來的安裝包

rm -rf downloads/



# 修改配置

vim inventory.ini

tidb_version = v1.0.2



# 下載

ansible-playbook local_prepare.yml




# 現(xiàn)在的版本

./resources/bin/tidb-server -V


# 滾動升級所有(可指定升級部分)

ansible-playbook rolling_update.yml



# 更新 Prometheus 配置并重啟
ansible-playbook rolling_update_monitor.yml --tags=prometheus

擴(kuò)容

添加一個 tidb


# 添加新 tidb 的 IP

vim inventory.ini



# 初始化新增節(jié)點(多個IP 用逗號隔開握础,--tags=tidb 參數(shù)指定服務(wù)辐董,-l 可以接 ip 或者服務(wù)的別名,為了 單 node 多 tikv 部署的情況使用)

ansible-playbook bootstrap.yml -l 172.16.10.61



# 部署新增節(jié)點
ansible-playbook deploy.yml -l 172.16.10.61



# 啟動新節(jié)點服務(wù)
ansible-playbook start.yml -l 172.16.10.61



# 更新 Prometheus 配置并重啟
ansible-playbook rolling_update_monitor.yml --tags=prometheus

添加一個 pd

  • 這里我們將59服務(wù)器擴(kuò)容 pd

  • 安裝


# 修改 inventory.ini 配置文件

[pd_servers]

172.16.10.59



# 初始化新增節(jié)點

ansible-playbook bootstrap.yml -l 172.16.10.59



# 部署新節(jié)點

ansible-playbook deploy.yml -l 172.16.10.59 --tags=pd



# 注意 這里需要上新增 pd 服務(wù)器中手動修改配置文件

## 修改 vim scripts/run_pd.sh

### 刪除:

--initial-cluster="pd1=http://172.16.10.59:2380,pd2=http://172.16.10.60:2380,pd3=http://172.16.10.61:2380,pd4=http://172.16.10.62:2380" \

### 添加:

--join="http://172.16.10.60:2379" \

### 注意:

1.端口為2379

2.修改 inventory.ini 配置文件時禀综,新加 pd 的 ip 加在最后简烘,因為 run_pd.sh 的腳本中有個name 的屬性,里面的名字是 pd+順序 id 拼接的定枷,如果寫的位置不是最后一個夸研,可能會造成這個屬性沖突。

## 手動啟動

./scripts/start_pd.sh

在中控機上使用 pd-ctl 命令看 member 信息

## 滾動升級依鸥,更新所有其他節(jié)點記錄的pd 信息和相關(guān)腳本

ansible-playbook rolling_update.yml

## 更新 Prometheus 配置并重啟

ansible-playbook rolling_update_monitor.yml --tags=prometheus

刪除59新添的 pd


# 1.使用 pd-ctl 命令查看59的 pd name亥至,并根據(jù) pd name 將其移除pd 集群

./resources/bin/pd-ctl -u http://172.16.10.60:2379 -d member

./resources/bin/pd-ctl -u http://172.16.10.60:2379 -d member delete name pd4



# 2.關(guān)閉59上 pd 的服務(wù)

ansible-playbook stop.yml -l 172.16.10.59 --tags=pd



# 3.注釋掉 inventory.ini 59服務(wù)器的 pd 配置

# 4.滾動更新 prometheus

ansible-playbook rolling_update_monitor.yml --tags=prometheus

縮容

剔除61的 tidb


# 關(guān)閉 61服務(wù)器中的tidb 服務(wù)

ansible-playbook stop.yml -l 172.16.10.61 --tags=tidb



# 注釋 61服務(wù)器

vim inventory.ini

## TiDB Cluster Part

[tidb_servers]

172.16.10.59

172.16.10.60

#172.16.10.61



# 更新 prometheus

ansible-playbook rolling_update_monitor.yml --tags=prometheus

思路:

  • 1.關(guān)閉需要剔除的 tidb 服務(wù)器

  • 2.注釋中控機配置文件中,tidb 模塊中的 ip贱迟,避免中控機啟動集群再次啟動

  • 3.剔除的 tidb 物理文件依然在原服務(wù)器上

剔除61的 tikv


# 中控機使用 pd-ctl 命令遠(yuǎn)程剔除

# pd-ctl 命令尋找

[tidb@ip-172-16-10-59 tidb-ansible]$ sudo find / -name pd-ctl*

/home/tidb/wangjun/tidb-ansible/resources/bin/pd-ctl

/home/tidb/wangjun/tidb-ansible/scripts/pd-ctl.sh

/home/tidb/wangjun/tidb-ansible/roles/ops/templates/pd-ctl.sh.j2



# 1.查看 pd 中需要剔除 tikv 的 store id

./resources/bin/pd-ctl -u "http://172.16.10.61:2379" -d store



# 2.根據(jù) store id 去剔除 tikv

./resources/bin/pd-ctl -u "http://172.16.10.61:2379" -d store delete 5



# 3.關(guān)閉對應(yīng)的 tikv

ansible-playbook stop.yml -l 172.16.10.61 --tags=tikv



# 4.注釋掉 ini 配置文件中的 IP

ansible-playbook rolling_update_monitor.yml --tags=prometheusvim inventory.ini 



# 5.更新掉 prometheus

ansible-playbook rolling_update_monitor.yml --tags=prometheus

思路:

  • 1.使用 pd-ctl 找出需要剔除 tikv 的 store 的 id姐扮,并剔除

  • 2.關(guān)閉對應(yīng) tikv 的服務(wù)(單 node 多實例情況下, -l 接 tikv 的別名來關(guān)閉 tikv)

  • 3.注釋中控機配置文件中衣吠,tikv 模塊中的 ip茶敏,避免中控機啟動集群再次啟動

  • 4.剔除的 tikv 物理文件依然在原服務(wù)器上

再次將61的 tikv 添加到集群


# 刪除 tikv 余留的物理文件

ansible-playbook unsafe_cleanup_data.yml -l 172.16.10.61 --tags=tikv

# 發(fā)現(xiàn)未生效,直接物理刪除 data/ 目錄缚俏,不刪除惊搏,無法添加成功



# 按照添加 tidb 的方式贮乳,將 tikv 添加回集群,添加成功

tikv 多實例


# 關(guān)閉集群

ansible-playbook stop.yml

# 銷毀集群

ansible-playbook unsafe_cleanup.yml



# 單機多 tikv 部署

vim inventory.ini

TiKV1-1 ansible_host=172.16.10.60 deploy_dir=/data1/wj_deploy_1 tikv_port=20171 labels="host=tikv1"

TiKV1-2 ansible_host=172.16.10.60 deploy_dir=/data1/wj_deploy_2 tikv_port=20172 labels="host=tikv1"

TiKV2-1 ansible_host=172.16.10.61 deploy_dir=/data1/wj_deploy_1 tikv_port=20171 labels="host=tikv2"

TiKV2-2 ansible_host=172.16.10.61 deploy_dir=/data1/wj_deploy_2 tikv_port=20172 labels="host=tikv2"

TiKV3-1 ansible_host=172.16.10.62 deploy_dir=/data1/wj_deploy_1 tikv_port=20171 labels="host=tikv3"

TiKV3-2 ansible_host=172.16.10.62 deploy_dir=/data1/wj_deploy_2 tikv_port=20172 labels="host=tikv3"

...

[pd_servers:vars]

# location_labels = ["zone","rack","host"]

location_labels = ["host"]

[all:vars]

deploy_dir = /data1/wj_deploy

tidb_version = v2.0.0



# 配置 vim conf/tikv.yml(算法參考官網(wǎng))

## 1.block-cache-size 配置(內(nèi)存)

### 配置 rocksdb defaultcf 下的 block-cache-size

block-cache-size: "1024MB"

### 配置 rocksdb writecf 下的 block-cache-size

block-cache-size: "1280MB"

### 配置 rocksdb lockcf 下的 block-cache-size

block-cache-size: "145MB"


### 配置 raftdb defaultcf 下的 block-cache-size

block-cache-size: "145MB"


## 2.concurrency 配置(CPU)
### 配置 readpool 下的 high-concurrency恬惯、normal-concurrency 和 low-concurrency 三個參數(shù)
high-concurrency: 2
normal-concurrency: 2
low-concurrency: 2

## 3.磁盤配置
### 配置 raftsore 下的 capacity 參數(shù)
capacity: "40G"

# 正常部署即可

tidb-binlog 集群搭建(ansible 部署方式)

  • 三組件:

a)binlog 是由 pump 生成向拆,并異步寫入到 kafka;

b)Kafka & ZooKeeper:存儲 pump 推來的日志酪耳,并且給 drainer 讀取

kafka 集群部署

  • 參考文件:IP:https://github.com/pingcap/thirdparty-ops/blob/master/kafka-ansible/zh_cn.md

# 中控機下載 kafka-ansible

git clone https://github.com/pingcap/thirdparty-ops.git

cd kafka-ansible



# 配置 inventory.ini (配置內(nèi)容具體看參考文件)

[zookeeper_servers]
zk1 ansible_host=172.16.10.59 deploy_dir=/home/tidb/wj_zk_deploy myid=1
zk2 ansible_host=172.16.10.60 deploy_dir=/home/tidb/wj_zk_deploy myid=2
zk3 ansible_host=172.16.10.61 deploy_dir=/home/tidb/wj_zk_deploy myid=3
[kafka_servers]
kafka1 ansible_host=172.16.10.59 deploy_dir=/home/tidb/wj_kafka_deploy data_dirs=/data1/kafka_data,/data1/kafka_data_2 kafka_port=9092 id=1

kafka2 ansible_host=172.16.10.60 deploy_dir=/home/tidb/wj_kafka_deploy data_dirs=/data1/kafka_data,/data1/kafka_data_2 kafka_port=9092 id=2

kafka3 ansible_host=172.16.10.61 deploy_dir=/home/tidb/wj_kafka_deploy data_dirs=/data1/kafka_data,/data1/kafka_data_2 kafka_port=9092 id=3


# 開始部署

## 下載需要的包

ansible-playbook -i inventory.ini local_prepare.yml

## 初始化系統(tǒng)環(huán)境浓恳,修改內(nèi)核參數(shù)

ansible-playbook -i inventory.ini bootstrap.yml --extra-vars "dev_mode=True"

## 安裝依賴包

ansible-playbook -i inventory.ini deploy.yml

## 啟動服務(wù)

ansible-playbook -i inventory.ini start.yml

  • 遇到的問題:

如果發(fā)現(xiàn) kafka 啟動失敗,日志打印內(nèi)存不足碗暗,可以配置 inventory.ini 中的 kafka_heap_size 大小

kafka監(jiān)控


# 進(jìn)入 tidb-ansible 安裝目錄颈将,修改 inventory.ini 配置

vim inventory.ini

[kafka_exporter_servers]

172.16.10.59



# 更新監(jiān)控

ansible-playbook rolling_update_monitor.yml

ansible 部署 pump

  • 1.關(guān)閉 tidb-server

ansible-playbook -i inventory.ini stop.yml --tags=tidb

  • 2.配置 inventory.ini

enable_binlog = True

zookeeper_addrs = "172.16.10.59:2181,172.16.10.60:2181,172.16.10.61:2181"

kafka_addrs = "172.16.10.59:9092,172.16.10.60:9092,172.16.10.61:9092"

  • 3.更新 tidb 組件

 ansible-playbook -i inventory.ini deploy.yml --tags=tidb

  • 4.啟動 tidb 組件

ansible-playbook -i inventory.ini start.yml --tags=tidb

部署 drainer


# 1.解壓下載的包

wget http://download.pingcap.org/tidb-binlog-latest-linux-amd64.tar.gz

tar -zxvf tidb-binlog-latest-linux-amd64.tar.gz

cd tidb-binlog-latest-linux-amd64/



# 2.配置配置文件,參考(https://pingcap.com/docs-cn/tools/tidb-binlog-kafka/#tidb-binlog-%E9%83%A8%E7%BD%B2%E6%96%B9%E6%A1%88)

vim drainer.toml



# 3.啟動

./bin/drainer -config drainer.toml &

注意:drainer 下游有兩種:

1.db-type 配置為 mysql言疗,使用流復(fù)制晴圾,傳輸?shù)?mysql 中

2.db-type 配置為 pb,存放到 binlog 日志目錄下

注意2:

經(jīng)過測試噪奄,如果同步有錯誤死姚,比如上游 tidb 創(chuàng)建一個庫下游 mysql 已經(jīng)存在,這樣的話 drainer 會重試5次梗醇,如果不成功,自動跳過撒蟀。

如果是 dml 語句叙谨,為了避免數(shù)據(jù)丟失,會一直重試保屯。

監(jiān)控


# 修改啟動腳本

[tidb@ip-172-16-10-59 tidb-binlog-latest-linux-amd64]$ cat run_drainer.sh 

#!/bin/bash

set -e

ulimit -n 1000000



DEPLOY_DIR=/home/tidb/wangjun/tidb-binlog-latest-linux-amd64



cd "${DEPLOY_DIR}" || exit 1



# WARNING: This file was auto-generated. Do not edit!

# All your edit might be overwritten!



exec bin/drainer \

        --config=drainer.toml \

        --metrics-addr=172.16.10.59:9091 \

# --metrics-interval = 15 \

PbReader工具部署

解析 binlog 的工具


# 注意配置 drainer 的配置文件手负,開啟 pd 模式

# 下載使用

wget http://download.pingcap.org/pb_reader-latest-linux-amd64.tar.gz

tar -zxvf pb_reader-latest-linux-amd64.tar.gz 

cd pbReader

bin/pbReader -binlog-file=../data.drainer/binlog-0000000000000000-20180615110715

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市姑尺,隨后出現(xiàn)的幾起案子竟终,更是在濱河造成了極大的恐慌,老刑警劉巖切蟋,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件统捶,死亡現(xiàn)場離奇詭異,居然都是意外死亡柄粹,警方通過查閱死者的電腦和手機喘鸟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驻右,“玉大人什黑,你說我怎么就攤上這事】柏玻” “怎么了愕把?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵拣凹,是天一觀的道長。 經(jīng)常有香客問我恨豁,道長嚣镜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任圣絮,我火速辦了婚禮祈惶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扮匠。我一直安慰自己捧请,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布棒搜。 她就那樣靜靜地躺著疹蛉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪力麸。 梳的紋絲不亂的頭發(fā)上可款,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機與錄音克蚂,去河邊找鬼闺鲸。 笑死,一個胖子當(dāng)著我的面吹牛埃叭,可吹牛的內(nèi)容都是我干的摸恍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼赤屋,長吁一口氣:“原來是場噩夢啊……” “哼立镶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起类早,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤媚媒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后涩僻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缭召,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年逆日,在試婚紗的時候發(fā)現(xiàn)自己被綠了恼琼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡屏富,死狀恐怖晴竞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情狠半,我是刑警寧澤噩死,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布颤难,位于F島的核電站,受9級特大地震影響已维,放射性物質(zhì)發(fā)生泄漏行嗤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一垛耳、第九天 我趴在偏房一處隱蔽的房頂上張望栅屏。 院中可真熱鬧,春花似錦堂鲜、人聲如沸栈雳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哥纫。三九已至,卻和暖如春痴奏,著一層夾襖步出監(jiān)牢的瞬間蛀骇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工读拆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留擅憔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓檐晕,卻偏偏與公主長得像暑诸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子棉姐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容