如果以前是將時序數(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.準(zhǔn)備
開始之前,你要確保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),準(zhǔn)備開始輸入命令安裝依賴。
當(dāng)然,我更推薦大家用VSCode編輯器,把本文代碼Copy下來,在編輯器下方的終端運行命令安裝依賴模塊,多舒服的一件事?。?a href="http://www.nxhydt.com/outside?redirect=http://mp.weixin.qq.com/s?__biz=MzI3MzM0ODU4Mg==&mid=2247485849&idx=1&sn=ec098cf67a55bd1d61d4513397434c94&chksm=eb25eb10dc52620682db716d206c18b00bd53c01743729a9dea381e1791566a04a06f1fabca5&scene=21#wechat_redirect" target="_blank">Python 編程的最好搭檔—VSCode 詳細指南。
下載或Git Clone我修改好的代碼:
https://github.com/Ckend/Mysql-to-influxdb
解壓進入該目錄后,輸入以下命令安裝依賴:
pip install -r requirements.txt
2.遷移配置
在遷移開始前,請在你需要遷移的表里加一個字段 transfered,這個字段用于檢測某條數(shù)據(jù)是否被遷移,默認設(shè)為0。一旦遷移完成,這個字段會被設(shè)為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.遷移是否完成
如何檢測遷移任務(wù)是否完成,還記得我們剛新增了一個字段 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ù)量的結(jié)果有可能不正確。這點需要特別關(guān)注。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6892瀏覽量
88827 -
代碼
+關(guān)注
關(guān)注
30文章
4748瀏覽量
68349 -
MySQL
+關(guān)注
關(guān)注
1文章
802瀏覽量
26444
發(fā)布評論請先 登錄
相關(guān)推薦
評論