如果以前是將時(shí)序數(shù)據(jù)存放在MySQL,現(xiàn)在為了獲取更好的性能和使用可視化工具,我們需要將數(shù)據(jù)從MySQL遷移到Influxdb中。
這看起來(lái)是一個(gè)常見場(chǎng)景,經(jīng)過一番查閱,發(fā)現(xiàn)了 GreatLakesEnergy /Mysql-to-influxdb 這個(gè)項(xiàng)目。
可惜的是,作者是基于Python2進(jìn)行開發(fā)的,而且用了幾個(gè)非常難搭建的模塊。想在Python3中重新使用這個(gè)項(xiàng)目比較困難。所以我Fork了作者的代碼進(jìn)行改造,改造后的代碼如下:
https://github.com/Ckend/Mysql-to-influxdb
如果你有這樣的遷移需求,可以繼續(xù)看下面的詳細(xì)教程。
1.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上噢,如果沒有,請(qǐng)?jiān)L問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda
Windows環(huán)境下打開Cmd(開始—運(yùn)行—CMD),蘋果系統(tǒng)環(huán)境下請(qǐng)打開Terminal(command+空格輸入Terminal),準(zhǔn)備開始輸入命令安裝依賴。
當(dāng)然,我更推薦大家用VSCode編輯器,把本文代碼Copy下來(lái),在編輯器下方的終端運(yùn)行命令安裝依賴模塊,多舒服的一件事?。?a href="http://www.delux-kingway.cn/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 詳細(xì)指南。
下載或Git Clone我修改好的代碼:
https://github.com/Ckend/Mysql-to-influxdb
解壓進(jìn)入該目錄后,輸入以下命令安裝依賴:
pip install -r requirements.txt
2.遷移配置
在遷移開始前,請(qǐng)?jiān)谀阈枰w移的表里加一個(gè)字段 transfered,這個(gè)字段用于檢測(cè)某條數(shù)據(jù)是否被遷移,默認(rèn)設(shè)為0。一旦遷移完成,這個(gè)字段會(huì)被設(shè)為1.
此外,你需要找到你表里的時(shí)間序列字段(time)和分類字段(tag)。
分類字段可能比較難理解,比如說你有一張表記錄了每支股票每天的開盤價(jià),那么股票id字段便可理解為一個(gè)tag,即下面配置中的siteid_field.
在解壓后的目錄里新建一個(gè)settings.ini, 配置以下信息:
[mysql]
host: mysql host # (本地為127.0.0.1)
port: mysql 端口號(hào) # 3306
username: 用戶名
password: 密碼
db: 數(shù)據(jù)庫(kù)
table: 要遷移的表
check_field: 檢測(cè)字段
time_field: 時(shí)間字段
siteid_field: 分類字段(tag)
[influx]
host: influxdb host # (本地為127.0.0.1)
port: 端口號(hào) # 8086
username: 用戶名
password: 密碼
db: 要遷移進(jìn)入的數(shù)據(jù)庫(kù)
[server]
interval: 5
配置完上述信息后,執(zhí)行命令即可開始遷移:
python mysql2influx.py -d -c settings.ini -s
3.遷移是否完成
如何檢測(cè)遷移任務(wù)是否完成,還記得我們剛新增了一個(gè)字段 transfered 用于檢測(cè)某條數(shù)據(jù)是否被遷移嗎?
你只需要在mysql中輸入以下sql查詢是否還有未被遷移的數(shù)據(jù)即可:
SELECT count(1) FROM your_table where transfered = 0;
若不為0則說明還有數(shù)據(jù)未被遷移成功。
不過值得注意的是,遷移腳本里是先進(jìn)行數(shù)據(jù)遷移,再回來(lái)修改transfered的值。
如果你的數(shù)據(jù)量非常大,更新MySQL數(shù)據(jù)有可能會(huì)耗時(shí)極長(zhǎng),因此查詢transfered數(shù)量的結(jié)果有可能不正確。這點(diǎn)需要特別關(guān)注。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7166瀏覽量
89679 -
代碼
+關(guān)注
關(guān)注
30文章
4834瀏覽量
69114 -
MySQL
+關(guān)注
關(guān)注
1文章
831瀏覽量
26759
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
如何將DynamoDB的數(shù)據(jù)增量遷移到表格存儲(chǔ)
如何將EDK planAhead項(xiàng)目遷移到vivado
如何將SES工程從GNU工具鏈遷移到Segger工具鏈上?
如何將項(xiàng)目從Arm Compiler 5遷移到Arm Compiler 6
Uber為什么從Postgres遷移到MySQL
![Uber為什么<b class='flag-5'>從</b>Postgres<b class='flag-5'>遷移到</b><b class='flag-5'>MySQL</b>](https://file.elecfans.com/web2/M00/49/EF/pYYBAGKhvHmAWMMgAAAdnHCI1lw316.png)
輕松上云系列之二:其他云數(shù)據(jù)遷移至阿里云
如何將項(xiàng)目從VDK遷移到μC/OS-III中
如何將Hadoop遷移到云平臺(tái)中?
如何將Keil μVision工程遷移到SEGEGR Embedded Studio?
如何將自定義邏輯從FPGA/CPLD遷移到C2000?微控制器
![<b class='flag-5'>如何將</b>自定義邏輯<b class='flag-5'>從</b>FPGA/CPLD<b class='flag-5'>遷移到</b>C2000?微控制器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論