TIDB安裝及MySql數(shù)據(jù)遷移

TIDB整體架構(gòu):

TiDB 集群主要包括三個(gè)核心組件:TiDB Server,PD Server 和 TiKV Server。

PD Server:Placement Driver (簡(jiǎn)稱(chēng) PD) 是整個(gè)集群的管理模塊,其主要工作有三個(gè):一是存儲(chǔ)集群的元信息(某個(gè) Key 存儲(chǔ)在哪個(gè) TiKV 節(jié)點(diǎn));二是對(duì) TiKV 集群進(jìn)行調(diào)度和負(fù)載均衡(如數(shù)據(jù)的遷移、Raft group leader 的遷移等);三是分配全局唯一且遞增的事務(wù) ID。

PD 通過(guò) Raft 協(xié)議保證數(shù)據(jù)的安全性。Raft 的 leader server 負(fù)責(zé)處理所有操作,其余的 PD server 僅用于保證高可用。建議部署奇數(shù)個(gè) PD 節(jié)點(diǎn)。

TiKV Server:負(fù)責(zé)存儲(chǔ)數(shù)據(jù),從外部看 TiKV 是一個(gè)分布式的提供事務(wù)的 Key-Value 存儲(chǔ)引擎。存儲(chǔ)數(shù)據(jù)的基本單位是 Region,每個(gè) Region 負(fù)責(zé)存儲(chǔ)一個(gè) Key Range(從 StartKey 到 EndKey 的左閉右開(kāi)區(qū)間)的數(shù)據(jù),每個(gè) TiKV 節(jié)點(diǎn)會(huì)負(fù)責(zé)多個(gè) Region。TiKV 使用 Raft 協(xié)議做復(fù)制,保持?jǐn)?shù)據(jù)的一致性和容災(zāi)。副本以 Region 為單位進(jìn)行管理,不同節(jié)點(diǎn)上的多個(gè) Region 構(gòu)成一個(gè) Raft Group,互為副本。數(shù)據(jù)在多個(gè) TiKV 之間的負(fù)載均衡由 PD 調(diào)度,這里也是以 Region 為單位進(jìn)行調(diào)度。

TiDB Server:?負(fù)責(zé)接收 SQL 請(qǐng)求,處理 SQL 相關(guān)的邏輯,并通過(guò) PD 找到存儲(chǔ)計(jì)算所需數(shù)據(jù)的 TiKV 地址,與 TiKV 交互獲取數(shù)據(jù),最終返回結(jié)果。TiDB Server 是無(wú)狀態(tài)的,其本身并不存儲(chǔ)數(shù)據(jù),只負(fù)責(zé)計(jì)算,可以無(wú)限水平擴(kuò)展,可以通過(guò)負(fù)載均衡組件(如LVS、HAProxy 或 F5)對(duì)外提供統(tǒng)一的接入地址。

Linux版本要求:

TIDB官方指出:TiDB 在?CentOS?7.3?的環(huán)境下進(jìn)行過(guò)大量的測(cè)試,同時(shí)社區(qū)也有很多該操作系統(tǒng)部署的最佳實(shí)踐,因此,建議使用?CentOS?7.3?以上的 Linux 操作系統(tǒng)來(lái)部署 TiDB。

環(huán)境依賴(lài):

安裝MySQL

TIDB安裝步驟:

1、[root@localhost /]$ cd /usr/local/soft/

? ? ? ?[root@localhost soft]$ wget http://download.pingcap.org/tidb-latest-linux-amd64.sha256

? ? ? ?[root@localhost soft]$?wget http://download.pingcap.org/tidb-latest-linux-amd64.sha256

2、檢查文件完整性

[root@localhost soft]$ sha256sum -c tidb-latest-linux-amd64.sha256

3、解壓文件

[root@localhost soft]# tar -xvf tidb-latest-linux-amd64.tar.gz

4、data、logfile路徑

[root@localhost soft]# mkdir -p /data/pd/{data,logs}

[root@localhost soft]# mkdir -p /data/tikv/{data,logs}

[root@localhost logs]# mkdir -p /data/tidb/logs

5、啟動(dòng)pd-server

[root@localhost logs]# /usr/local/tidb/bin/pd-server --data-dir=/data/pd/data --log-file=/data/pd/logs/pd.log &

6、啟動(dòng)tikv

[root@localhost logs]# /usr/local/tidb/bin/tikv-server --pd="127.0.0.1:2379" --data-dir=/data/tikv/data --log-file=/data/tikv/logs/tikv.log &

7、啟動(dòng)tidb

[root@localhost logs]# /usr/local/tidb/bin/tidb-server --store=tikv --path="127.0.0.1:2379" --log-file=/data/tidb/logs/tidb.log &

8、驗(yàn)證:TCP 4000 端口是 TiDB 服務(wù)默認(rèn)端口,驗(yàn)證4000端口是否已被tidb-server 占用

使用MySQL客戶(hù)端連接測(cè)試:

[root@localhost logs]# mysql -uroot -p -h127.0.0.1 -P4000

從Server version中看出已經(jīng)連接上TIDB,TIDB語(yǔ)法與MySql語(yǔ)法基本一致,簡(jiǎn)單的驗(yàn)證一下

MySql數(shù)據(jù)遷移:

mydumper安裝:

官方推薦采用mydumper,具體可以參考?https://github.com/maxbube/mydumper??梢允褂?mydumper?從 MySQL 導(dǎo)出數(shù)據(jù),然后用?loader?將其導(dǎo)入到 TiDB。

mydumper安裝:

[root@localhost soft]# yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake make

[root@localhost soft]# wget https://launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz

[root@localhost soft]# tar zxvf mydumper-0.9.1.tar.gz

[root@localhost soft]# tar zxvf mydumper-0.9.1.tar.gz

[root@localhost soft]# cd mydumper-0.9.1/

[root@localhost mydumper-0.9.1]# cmake .

[root@localhost mydumper-0.9.1]# make && make install

在安裝過(guò)程中,在cmake .時(shí)候,報(bào)了make: *** No targets specified and no makefile,因?yàn)槿鄙傧嚓P(guān)的依賴(lài),

[root@localhost mydumper-0.9.1]# yum -y install gcc gcc-c++ autoconf automake

[root@localhost mydumper-0.9.1]# yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel (安裝依賴(lài)zlib、openssl和pcre)

安裝完成后生成兩個(gè)二進(jìn)制文件mydumper和myloader位于/usr/local/bin目錄下:

從 MySQL 導(dǎo)出數(shù)據(jù):

[root@localhost bin]# ./mydumper -h 127.0.0.1 -P 3306 -u root -p root -t 16 -F 64 -B tidb -T t_order --skip-tz-utc -o /usr/local/data

我們使用?-B tidb 表明是對(duì)?tidb 這個(gè) database 操作,然后用?-T t_order 只導(dǎo)出t_order表。如果有多張表,中間用逗號(hào)隔開(kāi),例如: t1,t2?表明只導(dǎo)出?t1,t2?兩張表。

-t 16?表明使用 16 個(gè)線(xiàn)程去導(dǎo)出數(shù)據(jù)。-F 64?是將實(shí)際的 table 切分成多大的 chunk,這里就是 64MB 一個(gè) chunk。

--skip-tz-utc?添加這個(gè)參數(shù)忽略掉 MySQL 與導(dǎo)數(shù)據(jù)的機(jī)器之間時(shí)區(qū)設(shè)置不一致的情況,禁止自動(dòng)轉(zhuǎn)換。

查看導(dǎo)出的數(shù)據(jù):

向 TiDB 導(dǎo)入數(shù)據(jù):

使用?myloader?將之前導(dǎo)出的數(shù)據(jù)導(dǎo)入到 TiDB:

[root@localhost bin]# ./myloader -h 127.0.0.1 -u root -P 4000 -t 32 -d /usr/local/data/

導(dǎo)入成功之后,我們可以用 MySQL 官方客戶(hù)端進(jìn)入 TiDB,查看:

數(shù)據(jù)導(dǎo)入成功。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容