一、全量同步Mysql數據
將mysql中的數據全量同步到TiDB中
**說明:**數據全量同步使用TiDB工具mydumper/loader,可以使用 mydumper 從 MySQL 導出數據,然後用 loader 將其導入到 TiDB 數據庫中
爲了快速的遷移數據 (特別是數據量巨大的庫),可以參考以下建議:
- mydumper 導出數據至少要擁有 SELECT,RELOAD,LOCK TABLES 權限
- 使用 mydumper 導出來的數據文件儘可能的小,最好不要超過 64M,可以設置參數 -F 64
- loader的 -t 參數可以根據 tikv 的實例個數以及負載進行評估調整,例如 3個 tikv 的場景,此值可以設爲 3 *(1 ~ n);當 tikv 負載過高,loader 以及 tidb 日誌中出現大量 backoffer.maxSleep 15000ms is exceeded 可以適當調小該值,當 tikv 負載不是太高的時候,可以適當調大該值。
二、下載TiDB工具集
# 下載 tool 壓縮包
wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.tar.gz
wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.sha256
# 檢查文件完整性,返回 ok 則正確
sha256sum -c tidb-enterprise-tools-latest-linux-amd64.sha256
# 解開壓縮包
tar -xzf tidb-enterprise-tools-latest-linux-amd64.tar.gz
cd tidb-enterprise-tools-latest-linux-amd64
三、啓動mydumper導出數據,這裏需要指定相應參數
在新下載的解壓包中進入到bin目錄下啓動mydumper工具,工具後面跟上相應的參數
例如:./bin/mydumper -h 127.0.0.1 -P 3306 -u root -t 16 -F 64 -B reports -T RMAN_USERGROUPHISTORY --skip-tz-utc -o ./var/test_data
參數解析:
連接需要導出數據的 mysql 數據庫
-B test 需要導出的數據庫名,表明對 test這個數據庫進行導出數據操作
-T RMAN_USERGROUPHISTORY 表明導出數據的表
-t 16 導出數據使用的線程數
-F 64 實際的Table切分成多大的chunk,這裏表明64MB 一個 chunk
--skip-tz-utc 添加這個參數忽略掉 MySQL 與導數據的機器之間時區設置不一致的情況,禁止自動轉換。
四、將導出的數據用loader工具導入到TiDB中
./bin/loader -h 127.0.0.1 -u root -p '1234dfaf' -P 4000 -t 32 -d /var/test_data
參數解析:
-h 127.0.0.1 連接的主機名
-u root 用戶名
-p '1234dfaf' 密碼
-P 4000 TiDB端口號
-t 32 線程數
-d /var/test_data 數據導出路徑
加上路徑後會在這個路徑中生成sql執行腳本,使用以上語句信息就可以自動執行
注意:
-
數據導入過程中數據庫和表都是自動創建的,tidb中已經存在的數據庫不能和mysql中數據庫同名,否則導入不成功
-
目前 TiDB 支持 UTF8mb4 字符編碼,假設 mydumper 導出數據爲 latin1 字符編碼,需要修改字符編碼爲utf8
-
數據同步過程中sql_mode還要相同,否則兩個數據庫sql執行模型不同有的檢測sql有的不檢測,有的嚴格,有的不嚴格數據會導入導出不成功
總結
本文介紹數據全量從 Mysql 同步到 TiDB中,詳細流程請參照官網:)
參考
https://pingcap.com/docs-cn/stable/reference/tools/mydumper/
https://pingcap.com/docs-cn/stable/reference/tools/loader/