規劃
Tidb資料庫叢集伺服器規劃(說明:這是阿裡雲上買的本地SSD固态硬碟的伺服器)

說明:對于非系統盤,阿裡雲并未進行挂載,需要自己處理,如下針對PD與TIKV伺服器的兩塊本地SSD固态硬碟進行初始化,并做RIAD1(鏡像)陣列後進行挂載。
初始化資料磁盤并挂載
以PD02為例(其他一樣套路操作),具體指令參考截圖:
檢視磁盤挂載情況
初始化磁盤
/dev/vdb 與 /dev/vdc
安裝Linux系統 的RAID管理工具 mdadm
檢查/dev/vdb與 /dev/vdc 分區其RAID狀況
建立RAID 1磁盤陣列
再檢視RAID裝置設定結果與RAID陣列狀态
mdadm -E /dev/sd[b-c]1
mdadm --detail /dev/md0
在RAID1陣列上建立目錄并挂載
mkdir /data
mkfs.ext4 /dev/md0 (必須格式化為ext4, tidb隻支援并優化了這類檔案系統)
mount /dev/md0 /data/
測試挂載結果
echo “raid setup”>/data/raid.txt
cat /data/raid.txt
vim /etc/fstab 檔案,添加以下行(表示在系統啟動時自動挂載RAID磁盤陣列)
/dev/md0 /data ext4 defaults,nodelalloc,noatime 0 2
Tidb要求 資料盤需格式化為 ext4 檔案系統,挂載時必須添加 nodelalloc 和 noatime 參數。 nodelalloc 是必選參數,否則 Ansible 安裝時檢測無法通過,noatime 是可選建議參數。
這時,再用df –h 檢視磁盤容量,就看到/data
叢集NTP服務設定
目的:務必保證整個TIDB資料庫叢集時間保持一緻,與NTP時鐘源同步
說明:因為購買的是阿裡雲伺服器,環境已經配置并優化好,NTP時間同步也已配置好
詳見如下截圖:
這裡就不寫NTP時鐘源同步設定方法了
配置中控機&監控機monitor到叢集各個服務的SSH互信與sudo免密碼
這裡手工配置
1.以root使用者登入所有機器建立tidb使用者并設定密碼
groupadd -g 600 tidb
useradd -u 501 -g 600 -f 30 -m -d /home/tidb1 tidb
passwd tidb
說明:我這裡指定tidb家目錄為/home/tidb1是因為我在中控機上把TiDB-Ansible 項目clone到/home/tidb目錄了,而我又同時多視窗互動,操作所有伺服器,懶得為一台機器去調整,為統一操作步調而已,純粹就因為懶、懶、懶,是以不要糾結為什麼不使用預設的家目錄/home/tidb
設定tidb使用者的sudo免密碼操作,執行visudo指令,在檔案末尾添加如下條目:
tidb ALL=(ALL) NOPASSWD: ALL
2.建立中控機monitor到所有機器的ssh互信
以tidb賬戶登入到中控機monitor,生成秘鑰
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub pd01 #這裡直接寫hostname 為pd01 就能識别,是因為在所有機器的/etc/hosts檔案做了如下配置:
[[email protected] ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.18.243.6 monitor
172.18.243.171 pd01
172.18.243.172 pd02
172.18.243.173 pd03
172.18.243.44 tidb01
172.18.243.55 tidb02
172.18.243.163 tikv01
172.18.243.165 tikv02
172.18.243.164 tikv03
[[email protected] ~]#
如下截圖以monitor 傳至 pd01
其他機器一樣套路,這裡就不一一列舉了
3. 在中控機器上下載下傳 TiDB-Ansible 并安裝部署tidb
這裡下載下傳的是2.0 GA版本
git clone -b release-2.0 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
pip install --upgrade pip (裝完pip會提醒你執行此指令更新)
ansible –version
此過程也要花些時間,請耐心等待
[[email protected] tidb-ansible]# ansible --version
ansible 2.5.3
配置設定機器資源,編輯 inventory.ini 檔案
說明:我這裡下載下傳tidb項目到/home/tidb (這也是為什麼我設定的tidb使用者的家目錄是/home/tidb1,因為預設的家目錄/home/tidb有沖突,我想要差別開來)
是以inventory.ini 檔案路徑在:
/home/tidb/tidb-ansible/ inventory.ini
修改前先做備份(這是個好習慣)
cp inventory.ini inventory_bak20180528.ini
vim inventory.ini
實際安裝部署前,再檢查一遍中控機monitor與所有目标機器的ssh互信配置與各目标機器tidb使用者sudo免密碼配置是否成功(tidb提供了相關工具與指令,見如下)
注意:在中控機上以tidb執行指令
互信檢查
ansible -i inventory.ini all -m shell -a ‘whoami’
傳回tidb則成功
Sudo免密碼檢查
ansible -i inventory.ini all -m shell -a ‘whoami’ -b
傳回root則成功
開始部署
執行 local_prepare.yml playbook,聯網下載下傳 TiDB binary 到中控機
ansible-playbook local_prepare.yml
初始化系統環境,修改核心參數
ansible-playbook bootstrap.yml
部署 TiDB 叢集軟體
ansible-playbook deploy.yml
以上部署過程會檢查系統硬/軟體環境,若不符合會報錯,操作無法繼續,是以務必保證硬/軟體條件都符合要求(這也是為什麼tidb要求配置要比較出衆)
部署過程,耗時比較長,請耐心等候……
172.18.243.163 : ok=51 changed=23 unreachable=0 failed=0
172.18.243.164 : ok=51 changed=23 unreachable=0 failed=0
172.18.243.165 : ok=51 changed=23 unreachable=0 failed=0
172.18.243.171 : ok=49 changed=22 unreachable=0 failed=0
172.18.243.172 : ok=49 changed=22 unreachable=0 failed=0
172.18.243.173 : ok=49 changed=22 unreachable=0 failed=0
172.18.243.44 : ok=52 changed=24 unreachable=0 failed=0
172.18.243.55 : ok=52 changed=24 unreachable=0 failed=0
172.18.243.6 : ok=97 changed=55 unreachable=0 failed=0
localhost : ok=1 changed=0 unreachable=0 failed=0
Congrats! All goes well. ?
成功安裝完畢的提示!!!
sudo yum install fontconfig
啟動 TiDB 叢集
ansible-playbook start.yml
連接配接測試
mysql -u root -h 172.18.243.55 -P 4000
完結!!!