如果以前是將時序數(shù)據(jù)存放在MySQL,現(xiàn)在為了獲取更好的性能和使用可視化工具,我們需要將數(shù)據(jù)從MySQL遷移到Influxdb中。
這看起來是一個常見場景,經(jīng)過一番查閱,發(fā)現(xiàn)了 GreatLakesEnergy /Mysql-to-influxdb 這個項目。
可惜的是,作者是基于Python2進行開發(fā)的,而且用了幾個非常難搭建的模塊。想在Python3中重新使用這個項目比較困難。所以我Fork了作者的代碼進行改造,改造后的代碼如下:
https://github.com/Ckend/Mysql-to-influxdb
如果你有這樣的遷移需求,可以繼續(xù)看下面的詳細教程。
1.準備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上噢,如果沒有,請訪問這篇文章:超詳細Python安裝指南 進行安裝。如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda
Windows環(huán)境下打開Cmd(開始—運行—CMD),蘋果系統(tǒng)環(huán)境下請打開Terminal(command+空格輸入Terminal),準備開始輸入命令安裝依賴。
當然,我更推薦大家用VSCode編輯器,把本文代碼Copy下來,在編輯器下方的終端運行命令安裝依賴模塊,多舒服的一件事啊:Python 編程的最好搭檔—VSCode 詳細指南。
下載或Git Clone我修改好的代碼:
https://github.com/Ckend/Mysql-to-influxdb
解壓進入該目錄后,輸入以下命令安裝依賴:
pip install -r requirements.txt
2.遷移配置
在遷移開始前,請在你需要遷移的表里加一個字段 transfered,這個字段用于檢測某條數(shù)據(jù)是否被遷移,默認設為0。一旦遷移完成,這個字段會被設為1.
此外,你需要找到你表里的時間序列字段(time)和分類字段(tag)。
分類字段可能比較難理解,比如說你有一張表記錄了每支股票每天的開盤價,那么股票id字段便可理解為一個tag,即下面配置中的siteid_field.
在解壓后的目錄里新建一個settings.ini, 配置以下信息:
[mysql]
host: mysql host # (本地為127.0.0.1)
port: mysql 端口號 # 3306
username: 用戶名
password: 密碼
db: 數(shù)據(jù)庫
table: 要遷移的表
check_field: 檢測字段
time_field: 時間字段
siteid_field: 分類字段(tag)
[influx]
host: influxdb host # (本地為127.0.0.1)
port: 端口號 # 8086
username: 用戶名
password: 密碼
db: 要遷移進入的數(shù)據(jù)庫
[server]
interval: 5
配置完上述信息后,執(zhí)行命令即可開始遷移:
python mysql2influx.py -d -c settings.ini -s
3.遷移是否完成
如何檢測遷移任務是否完成,還記得我們剛新增了一個字段 transfered 用于檢測某條數(shù)據(jù)是否被遷移嗎?
你只需要在mysql中輸入以下sql查詢是否還有未被遷移的數(shù)據(jù)即可:
SELECT count(1) FROM your_table where transfered = 0;
若不為0則說明還有數(shù)據(jù)未被遷移成功。
不過值得注意的是,遷移腳本里是先進行數(shù)據(jù)遷移,再回來修改transfered的值。
如果你的數(shù)據(jù)量非常大,更新MySQL數(shù)據(jù)有可能會耗時極長,因此查詢transfered數(shù)量的結果有可能不正確。這點需要特別關注。
-
數(shù)據(jù)
+關注
關注
8文章
7002瀏覽量
88940 -
代碼
+關注
關注
30文章
4779瀏覽量
68521 -
MySQL
+關注
關注
1文章
804瀏覽量
26528
發(fā)布評論請先 登錄
相關推薦
評論