亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

背景

TiDB 是一個分布式關系型數據庫,可以無縫對接 MySQL。考慮到產品數據量大的情況下,單機 MySQL 可能無法支撐,而無縫切換到 TiDB 集群也比較方便,所以領導讓我調研了一天遷移過程。

本文將記錄使用 mydumper 工具導出 MySQL 數據庫數據,并使用 TiDB Lightning 將數據遷移到 TiDB 集群的流程。對比以前部署測試 MyCat 時的經歷,發現 TiDB 遷移時不需要配置分庫分表規則,遷移過程更方便,對得起“無縫”二字!

第一步,部署 TiDB Lightning

TiDB Lightning 部署包是一個壓縮文件,解壓后可直接使用,部署流程非常簡單:

(一)確定 TiDB 版本

用 MySQL 客戶端連接到 TiDB 集群后,執行 select version() 語句得到版本號:

MySQL數據遷移到TiDB的流程及為何放棄MyCat

 

(二)下載工具包

根據版本號,確定下載連接:https://download.pingcap.org/tidb-toolkit-{version}-linux-amd64.tar.gz 替換為具體的版本號后的地址。

下載文件:

wget  https://download.pingcap.org/tidb-toolkit-v4.0.0-linux-amd64.tar.gz

(三)解壓

進入部署包所在目錄,解壓:

tar -xzf tidb-toolkit-v4.0.0-linux-amd64.tar.gz

進入解壓后的 bin 目錄,查看它提供的工具:

MySQL數據遷移到TiDB的流程及為何放棄MyCat

 


mydumper 和 tidb-lightning 就是一對導出、導入工具,其中 mydumper 跟 MySQL 的 mysqldump 功能是一樣的。

但是據我測試導出 3.9G 的數據耗時來看,mydumper 比 mysqldump 快很多。

建議使用 mydumper,原因是用它導出的數據時,會自動創建 xxx-schema-create.sql 建庫文件,而且建表和插入 SQL 文件分開,不用額外操作,配套用 tidb-lightning 執行導入,不容易出錯。

如果用 mysqldumper 則需要注意導出建庫語句,是否需要添加 use database 之類的語句,用 MySQL 的 source 導入時容易出現的問題,都需要注意。不是配套的工具,這種方式沒有測試過。

第二步,導出 MySQL 數據

進入 bin 目錄,用 mydumper 工具,連接到目標數據庫上導出,命令如下:

./mydumper -h  IP -P 3306 -u root -p 123456 -t 16 -F 128 -B targetDatabase -o /tidb-data/mydumpersql/

參數說明:

  1. -B, --database 需要備份的數據庫
  2. -t,–threads 備份執行的線程數,默認4個線程
  3. -F,–chunk-filesize 行塊分割表的文件大小,單位是MB
  4. -o,–outputdir 備份文件目錄

注意,最后一個 outputdir 的值,后面導入的時候需要使用。因為使用多線程,所以就不難理解為何它的效率會比 mysqldumper 高了。

第三步,導入 TiDB 集群

最后一步,利用 tidb-lightning 工具將第二步導出的數據,導入到 TiDB 集群中。

官網的操作流程不是很清楚,而且給出的 tidb-lightning 里面有一項配置對 4.0.0 版本來說會報錯,這里提供糾正后的完整配置。

(一)創建配置文件

在 bin 目錄下創建一個配置文件 tidb-lightning.toml【文件名稱任意】,并打開:

touch tidb-lightning.toml
vi tidb-lightning.toml

寫入如下配置信息:

[lightning]

# 轉換數據的并發數,默認為邏輯 CPU 數量,不需要配置。
# 混合部署的情況下可以配置為邏輯 CPU 的 75% 大小。
# region-concurrency =

# 日志
level = "info"
file = "tidb-lightning.log"

[tikv-importer]
# backend 設置為 local 模式
backend = "tidb"
# 設置本地臨時存儲路徑
# sorted-kv-dir = "/mnt/ssd/sorted-kv-dir"

[mydumper]
# Mydumper 源數據目錄。
data-source-dir = "/tidb-data/mydumpersql"

[tidb]
# 目標集群的信息。tidb-server 的監聽地址,填一個即可。
host = "192.168.xxx.xxx"
port = 4000
user = "root"
password = "root"
# 表架構信息在從 TiDB 的“狀態端口”獲取。
status-port = 10080
# pd-server 的地址,填一個即可
# pd-addr = "192.168.xxx.xxx:2379"

說明:

  1. data-source-dir 就是第二步導出時 -o 的參數值;
  2. host 是 TiDB 集群地址和端口;
  3. sorted-kv-dir 這個配置不支持,放開后會報錯:unknown configuration options: tikv-importer.sorted-kv-dir。
  4. pd-addr 這個配置沒啥用,去掉也不影響導入

(二)執行導入命令

由于數據庫全量導入,操作耗時較長,官方建議將導入命令封裝成腳本。

先在 bin 目錄下創建一個 loaddata.sh 文件,內容如下:

#!/bin/bash
nohup ./tidb-lightning -config ./tidb-lightning.toml > nohup.out &

執行腳本,然后查看 TiDB 的集群日志 tidb.log ,查看導入進度。

導入完成后,用 MySQL 客戶端連接到 TiDB 集群的一個主機,查看數據。

啟示錄

將 MySQL 數據遷移到 TiDB 的過程,直接參考官方文檔進行操作就可以了。但是,涉及到 tidb-lightning 工具的那一章節,內容跟數據遷移章節有一些看不懂,其中涉及到 tikv-importer,它和 tidb-lightning 的關系沒有詳細說明,還有一些配置項會導致導入報錯。

實踐證明,只用 tidb-lightning 工具就可以完成數據遷入過程。

去年 8 月份調研過 MyCat 集群,由于它的分片分庫規則比較復雜,而目前這個產品涉及的表比較多,而且很多都是動態創建的,所以只做了技術調研,一直沒有技術落地。

MyCat 和 TiDB 都不會對應用端代碼產生影響,JDBC 連接只需要修改 IP 和端口就好,幾乎沒有工作量。庫表遷移就不一樣了,TiDB 可以直接遷移。

MyCat 由于 Schema 和表創建涉及到分庫分表策略,需要自己設計數據分布規則,當初也只是簡單寫了一個生成配置的小程序,不敢保證能夠數據能夠無縫正確遷移。

分享到:
標簽:遷移 數據 MySQL
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定