在安裝完TiDB之後,想先從現有的MySQL資料庫倒一張表的資料來試試。
TiDB提供兩種的資料導出工具Dumpling+Lightning與DM。
當原始資料表大於1T,要用前者做資料轉移。如果資料小於1T,可以用DM這個工具來完成全量以及增量備份。
Dumpling,使用go開發的程式,可以把資料導出成SQL或者CSV。
首先透過tiup安裝dumplingtiup install dumpling
接著在來源MySQL資料庫建立一個帳號create user 'tidb_rep'@'tiup的機器網段' IDENTIFIED BY '密碼自己想';
給這個帳號以下權限GRANT SELECT, RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'tidb_rep'@'ip'
假設我今天要搬移的是test.tidb_test這張表,存有兩筆資料。
接著到tiup這台機器找到dumpling的位置,我的安裝路徑為/root/.tiup/components/dumpling/v5.2.0
然後把參數帶進去,這邊我只簡單的操作一下,有其他需要可以--help看一下指令說明。./dumpling -u"tidb_rep" -P3306 -p"我是密碼" -h"MySQL機器IP" -B"test" -T "test.tidb_test"
執行完畢後,會產生一個時間戳記的資料夾,包含四個檔案,分別紀錄操作的起始結束時間以及master binlog的位置,建立資料庫的語法,建立表的語法,最後是資料寫入的語法。
接著用lightning導入
首先下載安裝lighting,下載目前最新版的5.2.0解壓縮。主要需要資料夾內的tidb-lightning。
https://download.pingcap.org/tidb-toolkit-v5.2.0-linux-amd64.tar.gztar zxvf tidb-toolkit-v5.2.0-linux-amd64.tar.gz
接著配置 tidb-lightning.toml,範本可在官網上找到。我們先為sorted-kv-dir新增資料夾,另外把data-source-dir改成上面dumpling產出的資料夾位置,以及tidb&pd的ip改成自己的。
[lightning]
# 转换数据的并发数,默认为逻辑 CPU 数量,不需要配置。
# 混合部署的情况下可以配置为逻辑 CPU 的 75% 大小。
# region-concurrency =
# 日志
level = "info"
file = "tidb-lightning.log"
[tikv-importer]
# backend 设置为 local 模式
backend = "local"
# 设置本地临时存储路径
sorted-kv-dir = "/var/lib/tmp-dir"
[mydumper]
# 源数据目录。
data-source-dir = "/root/.tiup/components/dumpling/v5.2.0/export-2021-09-09T07:55:05Z"
[tidb]
# 目标集群的信息。tidb-server 的监听地址,填一个即可。
host = "10.102.1.92"
port = 4000
user = "root"
password = ""
# 表架构信息在从 TiDB 的“状态端口”获取。
status-port = 10080
# pd-server 的地址,填一个即可
pd-addr = "10.102.1.92:2379"
然後輸入以下指令執行
./tidb-toolkit-v5.2.0-linux-amd64/bin/tidb-lightning -config tidb-lightning.toml
檢查結果 錯誤!! 不允許來源檔和執行的暫存檔位置相同...
可以依照他的檢查結果做修改,或者偷吃步直接skip。./tidb-toolkit-v5.2.0-linux-amd64/bin/tidb-lightning -config tidb-lightning.toml --check-requirements=false
完成匯入之後到tidb看看有沒有正常建立,結果成功!