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